袁明新,张丽民,朱友帅,姜 烽,申 燚
(1. 江苏科技大学 机械工程学院,江苏 镇江 212003;2. 张家港江苏科技大学产业技术研究院,江苏 张家港 215600)
近年来,水面无人艇作为海上环境检测和权益维护的先进工具和武器得到各国的高度重视,并成为国内外智能化海洋装备的研究热点[1-2]。海上舰船目标检测识别技术是保证水面无人艇自主运行的核心功能模块,是实现无人艇自主航行的前提和避障决策控制的重要依据。该任务的主要难点在于真实海面场景下的舰船目标会因形变、光照及背景等变化而难以检测。传统的目标检测方法,首先通过滑动窗口搜索出图像中目标可能出现的位置,然后采用SIFT[3]和HOG[4]等特征对图像中的目标进行特征提取,最后将提取到的目标特征输入SVM[5]和Adaboost[6]等分类器进行分类识别。对于传统目标检测方法,其基于滑动窗口的区域选择策略会导致大量冗余窗口及计算耗时。此外,在特征提取阶段,SIFT和HOG等特征实际上是一种手工设计的特征。图像中目标物体的形变、背景、光照、遮挡物及噪声等因素,使得此类手工设计的特征难以准确描述目标物体。因此,传统目标检测方法在实际任务中难以达到足够的精度。针对以上不足,传统目标检测方法也在不断进行优化,最成功的方法是可变形组件模型(deformable parts model,DPM)[7]。DPM采用了基于图结构的多组件策略,有效解决了目标物体的形变和多视角问题。DPM算法在目标检测任务上取得了不错的效果,但DPM算法也存在明显的弊端:其模型较为复杂,计算量大,且检测速度较慢。对于目标检测任务,传统算法处于瓶颈阶段,近些年来一直未取得突破性的进展。
随着深度学习理论的迅速发展,目标检测进入了新阶段。与传统目标检测方法中手工设计特征的方式不同,通过深度卷积神经网络[8]可以自动提取特征,在大量数据进行有监督训练的基础下,得到的特征具有很强泛化性,对物体形变、背景、光照、遮挡物及噪声具有一定的鲁棒性。文献[9]提出的R-CNN框架,首次成功将CNN用于目标检测任务之中。R-CNN采用CNN进行目标特征提取,取代了传统方法中手工设计特征的方式。在PASCAL VOC2007任务上,R-CNN得到的平均准确率均值(mean average precision,MAP)为66%,相比于DPM的34.3%,提升了近32%。但R-CNN也有着训练耗时过长、占用磁盘空间过大及检测速度达不到实时性等缺点。在R-CNN之后,基于深度学习的目标检测方法得到了迅速发展。基于R-CNN,出现了 SPP-Net[10],Fast R-CNN[11]及 Faster R-CNN[12]等典型目标检测方法。其中Faster R-CNN方法是目前目标检测领域最主流的方法,其将区域建议、分类与识别整合为一体,实现了端到端的目标检测。深度学习中的目标检测算法存在另一个分支——基于回归方法的目标检测,如 YOLO[13], SSD[14],YOLO9000[15]等方法。这类方法依据回归思想,直接在输入图像的多个位置上回归出所有位置的目标类别和包围边框。YOLO等方法是目标检测中一个新颖的思路,在检测速度方面有较大优势,但在检测精度方面不如Faster R-CNN等算法。为此,本文基于卷积神经网络、区域建议网络及Fast R-CNN检测框架构建舰船检测系统,并依靠海上舰船样本数据集完成系统网络的训练,实现了海上舰船目标检测任务。实验测试结果表明,该系统在海上舰船目标检测任务上,具有高检测准确率和高检测速率。
图1 舰船目标检测系统整体框架图Fig. 1 System overall framework of ship target detection
图1为一舰船目标检测系统整体框架图。首先搜集并获取真实海面场景下的舰船图像样本;然后依据PASCAL VOC2007数据集格式制作舰船数据集;接着再将舰船图片输入共享的CNN网络。CNN网络经前向传播得到的特征图,一方面作为RPN网络的输入,得到图像中存在舰船目标的区域建议;另一方面作为Fast R-CNN框架的输入,继续前向传播至其特有卷积层,产生更高维的特征图。将RPN网络得到的舰船目标的区域建议参数输入给Fast R-CNN。Fast R-CNN通过其独有的高维特征图和RPN输入的区域建议,提取出对应于区域建议的局部特征,并继续训练直到系统网络收敛,进而得到舰船目标检测的最终模型,实现舰船目标检测。
在基于深度学习的目标检测领域中,特征提取阶段最主流的方法是CNN[8]。CNN依据人类视觉机理中感受野的概念,在常规神经网络的基础上,引入卷积、池化等操作,构成了一种局部连接、权值共享的深度神经网络。相比于传统手工设计特征的方法,通过训练卷积神经网络可以自动提取特征,在大量训练数据的基础下,得到具有很强泛化性的特征。图2为CNN的典型网络结构图,即先通过CNN来得到每艘舰船图像的特征图,接着继续进行该目标检测系统的训练及检测。
图2 典型卷积神经网络结构图Fig. 2 Structure of typical convolution neural network
1.2.1 RPN原理
RPN用来产生高质量的区域建议,其得到区域建议所需的时间远低于Selective Search[16]和Edge Boxes[17]等方法。对于任意大小的舰船图像输入,RPN输出图像中可能存在舰船目标的区域建议,即一系列标记目标位置的矩形包围框(位置坐标编码),且每个矩形包围框带有其是否为舰船类别的得分。
图3为RPN网络结构示意图。如图所示,RPN将共享的CNN得到的特征图作为输入。为了生成区域建议框,用3×3的窗口在该特征图上进行滑动。每滑动一个特征图便得到一个1维向量,输入的特征图为256维,故最终滑动窗口生成的低维向量为256维。接着,将此低维向量输入给2个同级的全连接层,即分类层和回归层。分类层对每个矩形包围框内的物体进行类别判断,得到其是否为舰船目标的概率;回归层对矩形包围框进行边框回归,实现位置精修,得到能够更准确包围舰船目标的矩形包围框。最后,将得到了所有区域建议即矩形包围边框的坐标编码,作为Fast R-CNN框架的输入,继续进行系统的训练。此外,在每一个滑动窗口的位置,文中以当前滑动窗口中心为中心,采用9种窗口,即3种尺度和3种长宽比。故在每一个滑动窗口位置有k=9种anchor核心,这样有助于RPN获得很大尺度范围内的舰船目标。
图3 区域建议网络原理图Fig. 3 Schematic of regional recommendations network
1.2.2 RPN的训练
在RPN网络中,每一个anchor便会得到一个矩形包围框及类别得分。对于RPN网络的训练,文中首先对每一个anchor分配标签。对以下2种类型的anchor分配正标签:1)该anchor的矩形包围框与任一真实边界包围框(RPN的训练为有监督训练,训练样本中人工标记出的舰船目标包围框即为真实边界包围框)的交并集之比(IoU,intersection over union)最高;2)该anchor的矩形包围框与任一真实边界包围框的IoU大于0.7。对于与所有真实边界包围框,其IoU均低于0.3的anchor分配负标签。未获得标签的anchor均舍弃,不参与RPN的训练。
本文采用多任务损失目标函数。对每一舰船图像的损失函数定义为:
式中,Lcls为分类损失函数,由式(2)计算得到。Lreg为回归损失函数,由式(3)计算。Ncls为训练批量的大小,Nreg为区域建议的数量。i为anchor的索引值,pi为第i个anchor带有的类别得分,pi*为第i个anchor的标签值。若该anchor的标签为正,则pi*的值为1;若该anchor的标签为负,则pi*的值为0。ti为第i个anchor得到的矩形包围框的坐标向量,ti*是当第i个anchor的标签为正,与此anchor得到的矩形包围框相对应的真实边界包围框的坐标向量。λ为权重平衡参数,作为平衡分类损失函数Lcls和回归损失Lreg的权重值。
分类损失函数Lcls的定义为:
回归损失函数Lreg的定义为:
式中,R为smoothL1函数,
综上,当anchor的标签为负时,其pi*的值为0,故式(1)第2项整体的值为0。因此,标签为负的anchor仅有类别损失,没有回归损失,不进行边框回归。
根据定义的多任务损失函数,文中采用随机梯度下降(stochastic gradient descent,SGD)优化算法,通过RPN网络的有限次迭代来最小化损失函数,求得最优的参数。最终,RPN对于每艘测试舰船图片,便可生成最优的区域建议。
Fast R-CNN[11]针对R-CNN[9]训练耗时过长及检测速度过慢等问题而提出。Fast R-CNN中的感兴趣区域(region of interest,ROI)池化层,可从整幅图像的特征图中,提取出对应于ROI的局部特征图,将此局部特征输入Softmax分类器,即实现ROI的分类与识别。在Fast R-CNN中,输入的区域建议即设为ROI。
Fast R-CNN的缺点在于:它依靠由Selectice Search或Edge Box等方法获取的目标区域建议作为整个框架的输入。Selectice Search或Edge Box等方法为了得到区域建议时,将花费约1.5 s,极大地影响了Fast R-CNN的检测速率,故文中用RPN替代Selectice Search及Edge Box等方法,由RPN生成区域建议,并将获得的区域建议作为Fast R-CNN的输入,继续完成Fast RCNN的训练,即可实现舰船目标的分类与识别。
目前,在国际上没有公开的关于真实海面场景下的舰船目标检测数据集,故文中自建了真实海面场景下的舰船目标检测数据集,如表1所示。
表1 海真实面场景下舰船检测数据集Tab. 1 Ship detection data sets under sea real scene
文中数据集格式采用PASCAL VOC数据集格式,故需将自建的海面场景下的舰船数据集转换为PASCAL VOC2007格式,制作步骤如下:
步骤1 依据PASCAL VOC2007数据集格式,将自建舰船数据集中的图片的较长边缩放为500,保持原宽高比不变。
步骤2 对经上一步骤缩放后的图片进行筛选,去除经缩放后图中舰船目标分辨率过低的图片。
步骤3 手工标记每一图片中所有出现的舰船目标的包围边框(即真实边界包围框),记录下每一包围框的坐标信息(左上角坐标及右下角坐标)。
步骤4 将每一图片中的所有包围框的坐标信息、类别信息(文中即舰船类)以及图片名称,制作成PASCAL VOC2007数据集所需格式的xml文件。
经过上述步骤,文中制成的舰船样本数据集包括:Images:1016张/JPG;Labels:1 016个/XML;Bounding Boxes:1 452个/Rectangles。图4为舰船检测数据集样例。
在文中舰船检测系统中,RPN负责生成最优的区域建议,后续的检测任务则由Fast R-CNN[11]完成。文中采用交替优化策略,使得RPN和Fast R-CNN之间在实现共享CNN的情况下,完成舰船检测系统的训练,主要包括以下4个步骤:
图4 舰船检测数据集样例Fig. 4 Examples of ship detection data set
步骤1 在训练初始化阶段,采用ImageNet[18]预训练模型进行RPN初始化,接着进行RPN训练,通过有限次迭代来微调RPN网络参数;
步骤2 将RPN提供的区域建议作为Fast R-CNN输入,训练Fast R-CNN;
步骤3 将Fast R-CNN训练得到的网络参数,重新进行RPN初始化,并再次进行RPN训练。训练过程中,保持共享CNN不变,只微调RPN独有的层;
步骤4 再一次将RPN得到的区域建议作为Fast R-CNN输入,并进行Fast R-CNN训练。同样,在训练过程中,保持共享CNN不变,只微调Fast R-CNN独有的层。
通过以上4个步骤,实现网络参数地交替训练。最终,当Fast R-CNN收敛,即完成整个舰船检测系统的训练。
文中选择ZF模型[19]作为共享CNN来提取图像特征,ZF模型相比于VGG16[20]等其他开源网络模型更为轻量级,在训练时间、检测速度和准确率上能达到很好的平衡。文中将4个训练步骤的最大迭代次数分别设为40 000,20 000,40 000及20 000,训练过程均基于深度学习框架Caffe[21]完成,计算机的具体配置为Intel i3处理器、8 G内存、NVIDIA GTX 960显卡及Ubuntu 14.04操作系统。
在舰船检测系统网络成功训练后,即可得到最终舰船检测模型,将待测试舰船图片输入最终模型,即可完成检测,测试结果如图5所示。
图5 舰船测试结果Fig. 5 Test results of ships
由图可以看出,图中所有的舰船目标都能够被完整检测出来,无论是单个舰船目标还是多个舰船目标,目标包围框都能够准确框出舰船目标。此外,如前所述,RPN在获得区域建议时采用3种不同的大小和长宽比,故文中的舰船检测系统可获得很大尺度范围内的舰船目标。从图5(c)及图5(d)中可以看出,不管是近景大目标还是远景小目标,文中的舰船检测系统都能够准确的检测出来,并以相应尺度的包围框准确地框出舰船目标。
为了进一步验证文中方法的有效性和优越性,文中将检测结果与传统的HOG+SVM算法、Fast R-CNN算法及YOLO算法进行对比,检测结果如表2所示。
表2 算法对比结果Tab. 2 Comparison results among different algorithms
由表2可以看出,首先,传统机器学习方法HOG+SVM的准确率(mAP)为69.52%,检测速率为3.1 s/帧,不论是准确率还是检测速率都没有达到预期效果。这是因为此类传统检测方法需要通过遍历整个图像来获取舰船目标的特征,且需要大量计算,故检测速率过慢。其次,即便基于大量冗余计算获取的特征,其69.52%的mAP结果仍然低于其他3种算法。
Fast R-CNN算法相比传统HOG+SVM算法有了很大改善,其mAP为79.81%,比传统目标检测算法高出约10%。但Fast R-CNN的劣势依然明显,其检测速度过慢。因为Fast R-CNN本质上需要依靠Selectice Search或Edge Box等方法来提供区域建议,仅这一步就将花费约1.5 s,故考虑整个Fast R-CNN框架所耗时间,将达到约2.3 s/帧,无法满足舰船检测的实时性要求。
而文中的舰船检测方法是基于RPN生成区域建议,并通过Fast R-CNN进行舰船检测,使得区域建议的耗时约10 ms,几乎可以忽略不计,在检测速度上达到了0.05 s/帧,相比于Fast R-CNN有了极大提高。此外,文中的舰船检测系统通过RPN生成区域建议,通过Fast R-CNN框架进行舰船目标检测,采用了交替优化策略进行该系统的训练,使得舰船目标检测的mAP从Fast R-CNN的79.81%提高到了83.79%。
此外,文中还选取了当前基于深度学习的目标检测算法中代表算法——YOLO进行了测试,YOLO算法的mAP为72.60%,检测速率为0.025 s/帧。由此可以看出,YOLO算法的新颖之处在于:其检测速率非常高,完全满足了实时检测的需要。但其缺点也很明显,在准确率方面,远不如Fast R-CNN及文中算法。
综上所述,文中舰船检测系统中所采用的RPN结合Fast R-CNN的方法,在检测精度和检测速率上都达到了预期要求,取得相对最优的平衡。
文中依据Faster R-CNN算法的思想构建舰船目标检测系统,通过共享的CNN提取舰船图像的特征,通过RPN获得高质量的区域建议,最后通过Fast RCNN框架实现了对舰船目标的检测。通过自建真实海面场景下的舰船数据集来进行系统的训练。在训练过程中,通过交替优化策略,在实现共享CNN的情况下,完成该舰船目标检测系统的训练。对比实验表明:文中舰船检测系统在检测准确率及检测效率方面都优于传统的机器学习算法,其准确率达到83.79%,检测速率达到0.05 s/帧。文中的舰船目标检测系统将基于深度学习的目标检测方法引入海上舰船目标检测之中,成功完成水面无人艇的海上舰船目标检测任务,但该系统在检测速率方面还有进一步提高的空间,这将是本项目后续的研究目标。