改进RFBnet网络的船只目标检测方法
2022-06-23方健,刘坤
方 健,刘 坤
上海海事大学 信息工程学院,上海 201306
舰船是海上活动的重要载体,基于计算机视觉的舰船目标检测已经应用到实际的船舶管理系统中,因此靠岸和离岸舰船的检测在军事和民用领域都有着广泛的应用。目前,舰船目标检测采用的平视视角的自然图像具有数据量小、分辨率高、含有丰富的颜色和纹理信息、数据容易获取等特点,已成为目标检测领域重要的来源。但此类图像中多目标情况下的舰船目标很容易被多目标给遮挡,造成小目标漏检、分类错误等问题,如何提高检测的精度和速度,满足实际应用中海洋安防的需求是急需解决的问题。
传统的舰船目标检测算法分为三类,如基于统计的目标检测[1]、基于知识的目标检测[2]、基于模型的目标检测[3],这类算法需要人工提取目标特征,如SIFT(尺度不变特征变换匹配算法)、HOG(方向梯度直方图特征)、SURF(加速稳健特征)等。随着深度学习理论的日趋成熟,基于深度学习的算法都比传统的目标检测算法有着更大的优势。目前基于深度学习的目标检测方法主要分为两种模式,一种是以Fast-RCNN[4]、Faster-RCNN[5]为代表的两级检测器,基本特征首先由主干网提取,其次区域建议网络(RPN)[6]根据预先定义的锚定值生成感兴趣区域(ROI)提案,然后将这些方案的特征调整为固定大小,并由分类和回归网络的两个分支进行处理,最后检测结果由非极大抑制获得;另一种是以YOLO[7]和SSD[8]为代表的单级检测器,网络直接预测潜在对象在多个特征图上的位置和类别标签,而不需要裁剪和调整ROI建议,处理方案更简单,并且比两级检测器能够更快地检测目标。随着目标检测框架的改进,单级检测器的检测精度也可媲美两级检测器,因此更多学者研究单级检测器,甚至将单级和两级检测器相结合,这些算法已应用于船舶检测与识别领域。岳邦宇等[9]提出一种基于改进的Faster-RCNN的舰船检测方法将空洞卷积和VGG相结合,设计了一个特征提取网络,并将其应用于SAR舰船目标检测,提高了对小型舰船目标的检测能力。刘相云等[10]针对高分辨率遥感影像场景复杂,提出了一种改进的RFB Net遥感影像目标识别算法,在RFB Net模型的基础上构建特征金字塔网络,融合高层语义信息和低层特征信息,提高了网络识别能力。Yu等[11]对传统的YOLO算法进行改进,采用网络结构改进、输入图像多尺度变换、目标帧维数聚类等方法,提高了小目标的检测速度。Liu介绍了一种a receptive fields block net detector(RFB Net),基于SSD的主干,结合了Inception[12]、空洞卷积的思想,来模拟人类的视觉感知,在保证检测速度的同时,检测的效果进一步提升。
基于此,本文在RFBnet检测算法的基础上,提出了一种改进RFBnet网络的目标检测方法。首先,为了利用浅层和深层特征图的优势,分别设计池化特征融合模块和反卷积特征融合模块进行特征融合形成新的六个有效特征层;其次,对于以VGG为基础网络的RFBnet算法,针对其浅层提取能力不足导致小目标检测效果不好的缺点,对新的前三个有效特征层分别设置了对应尺度的DB1、DB2、DB3卷积块,用于增强该3层的特征信息;然后,为了提高感受野信息提取的效率,本文还融入注意力机制,让卷积更加关心目标中心区域的信息;最后引入聚焦分类损失来改进原来的损失,以提高网络的检测性能。实验结果表明,改进的RFBnet方法可以改善多目标情况下的舰船目标检测,该方法可应用于实际的海洋安防工作中。
1 RFBnet网络模型及其改进
1.1 数据集的介绍
本文针对可见光成像的船只检测开展研究,本文选取了一个包含7 000张1 920×1 080分辨率的船只数据集SeaShips[13],该数据集包含六类船只类型,所定义的六类船只基本上可以覆盖近海区域内出现的所有船只并充分考虑到背景、光照、视角、可见船体占比、尺度以及遮挡情况,部分图像如图1所示。该数据集采用标准的PASCAL VOC标注格式,每一张图片都精确标注了目标的标签和边界框,在训练前进行预处理,将图像大小调整为300×300像素。其中ore carrier类有1 141张,bulk cargo carrier类有1 129张,container ship类有814张,general cargo ship类有1 188张,fishing boat类有1 258张,passenger ship类有705张,六类混合类别(图像中有船只相互遮挡)的有765张,训练集、验证集和测试集按照7∶2∶1的比例随机划分。
图1 数据集部分样本示例Fig.1 Partial sample of data set
1.2 RFBnet及其改进的网络模型
RFBnet算法[14]采用类似Faster-RCNN中的Multibox原理[15],网络的输入为3通道RGB图像,特征图共有6层,分别为BasicRFB_a P3、BasicRFB P3、BasicRFB P5、BasicRFB P6、Conv2d P7、Conv2d P8,尺寸分别为38×38、19×19、10×10、5×5、3×3、1×1,通道数分别为512、1 024、512、256、256、256。RFBnet算法采用主干网络VGG-16提取特征,每一个特征单元分别用于学习其在原图中感受野区域内的信息,标签框的信息存在于该标签框中心点对应的特征单元在原图上的感受野区域中,该网络特征中的每一个特征单元分别用于学习以其对应原图像素的信息,最后将该特征分别送入分类网络与定位网络用于学习各单元感受野中标签框的信息。
本文保留了RFBnet基本模型框架,传统的RFBnet算法对小目标物体检测效果较差。因此做了以下改进:(1)为了利用浅层和深层特征图的优势,分别设计池化特征融合模块和反卷积特征融合模块来提高各层之间的联系;(2)设计了融入注意力机制的膨胀卷积模块作用于原始图像的特征提取;(3)引入聚焦分类损失来改进原来的损失,以提高网络的检测性能。
本文首先是BasicRFB_a P3、BasicRFB P3和P6、P7、P8分别与P5进行特征融合并做L2 norm归一化操作,同理,其他特征层做相同的操作,得到六个新的特征层;然后是DB1、DB2、DB3模块分别与新的BasicRFB_a P3、BasicRFB P3、BasicRFB P5进行特征融合[16],之后添加了一个3×3卷积层用于增加网络的学习能力同时降低特征维度并获得最终前三个有效特征层,这样一共形成11 620个先验框,预测结果就会对这11 620个框分别进行调整,最后判断调整后的框是否包含所需要的物体,如果有的话就把他标出来,当然利用先验框得到的框有一些会重合,所以还需对得分和重合情况进行判断,利用非极大抑制的办法找到所需要的框并且标出所属的种类。如图2所示为改进的RFBnet模型框架。
图2 改进的RFBnet模型框架Fig.2 Improved RFBnet model framework
2 基于改进RFBnet的检测算法
2.1 融入注意力机制的膨胀卷积块DB
RFBnet主干网络提取特征的每个单元分别用于学习其在原图中感受野区域内的信息,而较浅网络层的特征所学习的标签框尺度较小,那么想要提高学习标签框信息的准确率需要让网络在学习的过程中不断缩小各特征单元的感受野区域,同时也要保证该感受野区域内的信息包含特征单元对应位置的标签框信息。相较于深层特征,浅层特征的感受野区域更小,数量也更多,导致浅层学习起来难度更大,因此可以将重心放在前三层特征中,在设计膨胀卷积的卷积核尺寸时参考了RFBnet的先验框(priorbox)尺寸,RFBnet算法中先验框中心坐标为:((offset+n-1)×step,(offset+m-1)×step),step是特征图相对于原图的比值,offset是一个比值,一般取0.5,特征图第(n,m)个特征单元对应的先验框中心坐标为:((offset+n-1)×step,(offset+m-1)×step),即每相邻的两个先验框中心坐标总是相差(step,step)。
本文提出一种步长为step的卷积网络用于提取特征单元感受野区域内的信息,卷积块中卷积核的步长均为其所对应的step,卷积核的尺寸均大于标签框的尺寸,这样让信息提取得更加充分,每进行一次卷积,都是其主干网络层中特征单元感受野区域内的信息进行的一次采集,由于卷积的步长为step,那么经过一轮卷积,DB提取特征的宽与高正好是原图宽与高的step分之一。同时需要让每个卷积核充分的覆盖每次卷积所学习的标签框,参考先验框的生成方法,BasicRFB_a P3、BasicRFB P3、BasicRFB P5层特征单元对应的多个先验框最长的边分别为42、104、192,于是想到3种尺寸分别为60×60、120×120、240×240的卷积核去学习每个标签框的信息,这里卷积尺寸要比先验框稍大的一个重要原因是,在RFBnet算法中标签框是先验框经过真实框调整后的框,往往正例的先验框与真实框会存在一定的偏差。
对于一个需要检测的目标,当卷积核扫过靠近目标中心区域内的像素时,卷积核会将注意力放在中心点附近。对于一个远小于60×60分辨率的目标,往往目标周围很大一块区域的像素是无效的特征,所以单纯使用一种尺寸的卷积核去学习特征单元感受野区域内的信息,效率并不高,于是提出一种给卷积添加注意力机制的卷积块结构,DB1结构如图3所示,通过给60×60的卷积并行添加了30×30和15×15尺寸的卷积分支。
图3 融入注意力机制的DB1Fig.3 DB1 into attention mechanism
DB1对应核的尺寸达到了240×240的分辨率,虽然步长设为s tep(DB3卷积核的步长为32)可以减少巨大的计算量,但是对于3通道的原图,完成单通道输出就需要240×240×3的参数量,若是匹配特征图的通道数,DB3卷积参数量就高达240×240×3×512,显然给RFBnet增加这么多参数量是不值得的,于是引入了膨胀卷积,在膨胀率大于1时,相同参数量的卷积核可以有更大的感受野,给3个不同分辨率的核分别设置了8、5、3的膨胀率,这样相同感受野的情况下,参数量会降低,膨胀率的引入使得这么大尺寸的卷积核完全行得通,对于60×60的卷积核,可以使用8×8,膨胀率为8的卷积核进行替代,两者在原图中有相同的覆盖率,将步长设为step,这将大大减少卷积的计算量。DB1中3层卷积核尺寸分辨率分别为60×60、30×30、15×15,通过R分别为8、5、3的膨胀率转化后分辨率分别为8×8、6×6、5×5。DB2、DB3经过同样的转化,结构如图4所示。
图4 DB1、DB2、DB3结构图Fig.4 DB1,DB2,DB3 structure diagram
2.2 特征融合
I-RFBnet共提取出6组不同大小的有效特征图,图5为I-RFBnet中的DFF模块、PFF模块对RFBnet主干网络中BasicRFB P5进行特征融合操作的流程示意图,首先使用PFF模块中的最大池化层2×2、3×3卷积和Relu激活函数对相对较浅的BasicRFB_a P3和BasicRFB P3特征进行处理,在保留浅层网络显著的细节特征、降低特征维度的同时,使浅层网络特征学习到更多的非线性关系,与BasicRFB P5融合后使得BasicRFB P5获取更多的BasicRFB_a P3和BasicRFB P3的边缘细节信息,然后使用DFF模块中的Deconv 2×2、3×3卷积和ReLU激活函数对相对较深的BasicRFB P6、Conv2d P7、Conv2d P8进行处理,在填充特征内容、提取敏感特征信息的同时使深层网络特征学习到更多的非线性关系,与BasicRFB P5融合后,使得BasicRFB P5具备更多的BasicRFB P6、Conv2d P7、Conv2d P8的特征信息,图5中的×2和×3分别代表将相应的操作进行两次和三次,最后将上述提取的特征进行融合并做L2 norm归一化操作,组成新的BasicRFB P5特征,同理,对主干网络中的其他层做相同操作,具体可表示为:
图5 对Basic RFB P5特征融合流程图Fig.5 Flow chart of feature fusion for Basic RFB P5
其中,xi为主干网络第i层特征,ω(⋅)表示进行3×3卷积和ReLU激活操作,σ(⋅)表示进行下采样操作,采用的是最大池化操作,表示进行(i-p)次下采样操作,[Xp]表示下采样特征集合,δ(⋅)表示上采样操作,采用的是最近邻插值法,表示进行(d-i)次上采样操作,[Xd]表示上采样特征集合,CBasicRFB(⋅)表示进行特征融合操作,L2(⋅)表示进行L2norm归一化操作,Yi表示对原始网络中xi层特征进行上下文特征融合后生成的特征图。
2.3 候选框匹配和损失函数设计
为实现对图像中不同尺度的船只目标进行检测,设计不同纵横比的候选框进行匹配以适应不同尺度大小的图像目标,根据RFBnet损失函数,可以得到候选框D={d1,d2,…,dn},其中di由(cx,cy,w,h)4个坐标值组成,(cx,cy)为中心点坐标,w、h分别为候选框的宽和高,将候选框与真实标签框进行匹配,得到候选框的坐标及其对应的目标类别,具体可表示为Ŷ∈Rn×(l+4),l表示类别种类,为简单标记可以令Ŷ=[Ẑ,B̂],其中Ẑ=Rn×l表示预测类别向量集合,其中B̂=Rn×4表示预测坐标向量集合,当候选框与真实的标签匹配大于阈值时将其记为正例样本Pos表示,当候选框与真实的标签框匹配小于阈值时将其记为负例样本用Neg表示。
此外,RFBnet算法在6个预测尺度上一共要预测11 620个预测框,其中只有少部分预测框中包含有目标,而大多数预测框中只包含有图像背景信息,网络更多地聚焦在容易分类的背景框,造成对目标的分类能力下降。为避免这种情况导致模型训练退化的问题,本文引入聚焦分类损失[17]对模型训练进行监督,可表示为:
式中,N为与真实框的候选框个数,定位损失函数可表示为:
式中,Lclass_f1(Ẑ,Z)为分类损失函数,采用交叉熵计算损失,可表示为:
式中,Ẑj,c表示正确且类别为背景预测框的概率,at和r为超参数,且at∈[0,1],r∈[0,5],当r>0时意味着正样本的损失相对减少,模型将更加聚焦于负样本的训练,因此加入聚焦分类损失函数有效地解决了正负样本分布不均衡的问题,提高了模型的优化效率。
3 实验结果分析
本文实验是基于64位的Windows10操作系统,Inter®CoreTMi7-7800XCPU-@3.5 GHz处理器,16 GB内存,NVIDIA GeForce GTX1080Ti 11 GB显卡,采用深度学习框架为TensorFlow,主要使用软件工具为Pycharm,Python3.6。
在整个训练过程中,为了快速优化训练,将与真实框的IoU值大于0.5的先验框设定为正例框,采用难以学习的负例框参与训练,正负样本的比例设为3∶1。每4张图片设为一个batch,优化器为Adam,学习率使用回调方式,当两个epoch完成时,损失不下降,学习率减小为原来一半,训练分三次进行,模型首先在ILSVRC CLS-LOC数据集上预训练;第二次训练,设置网络前20层参数不参与训练,初始学习率为0.000 5,epoch设为50,第三次网络所有层参数都参与训练,初始学习率为0.000 1,epoch设为100,为了减小训练时间,加入早停(early-stopping),每次训练4个epoch损失值不下降就结束本次训练。
图6展示了三种不同的主流算法的mAP曲线图,AP计算的阈值均设为0.5,当使用I-RFBnet算法时,mAP值可以达到96.26%,比FSSD高0.99个百分点,比RFBnet高出4.74个百分点。对于每一个类别,小目标fishing boat的AP值明显有大幅提升,主要是相对RFBnet而言,高出9.94个百分点,比FSSD也高出0.45个百分点,说明通过把浅层的细节特征和高层的语义特征融合起来能够提高算法对小目标的检测。还有一个有明显变化是ore carrier,通过观察数据集可以发现包含有ore carrier的图片目标与背景的混肴率都很大,背景的干扰性很大。而I-RFBnet比FSSD[18]和RFBnet的AP值分别高出0.95个百分点和5.88个百分点,主要原因是本文使用了聚焦分类损失,有效地解决了正负样本分布不均衡的问题,提高了模型的优化效率。
图6 I-RFBnet、FSSD、RFBnet三种不同算法的mAP曲线对比Fig.6 Comparison of mAP curves of I-RFBnet,FSSD and RFBnet
图7展示了不同算法使用同样训练策略下的检测结果图,从检测效果可以看出I-RFBnet相对其他两种算法有明显的提升,I-RFBnet检测出来的目标类别数要多于其他两种,尤其是对小目标的检测效果提升明显,而且对遮挡目标的识别率也较高,而FSSD和RFBnet有较多的漏检和错检情况,在第三行的三幅图比较中,可以发现FSSD和RFBnet发生了误检而且对小目标的检测精度也不高,而I-RFBnet不但正确区分出了船的类别,而且目标的置信度也远高于其他两种,原因在于I-RFBnet采用了特征融合和膨胀卷积,对浅层特征层进行了特征增强,因此对多尺度目标特别是小目标的检测能力更强。
图7 三种不同算法在SeaShips测试集上的检测结果Fig.7 Detection results of three different algorithms on SeaShips test set
为了进一步验证,本模型消融实验几组实验都采用相同的训练配置、学习率衰减方法以及批量。为了让实验充分训练,本文进行100个epoch充分训练,实验结果如表1所示。前两列DB2和DB3表示作用不同数量的浅层,如DB2表示仅增强前两层特征图,Attention表示DB使用注意力结构,Fusion表示特征融合。第一行表示传统RFBnet的mAP为91.52%;第三行可以看出,不对原来六个特征层进行特征融合而直接对前三层添加带注意力结构的DB卷积块可以提升0.46个百分点的精度;第四行可以看出,对原来六个特征层进行特征融合后再给前三层添加DB模块,mAP相比RFBnet提高了1.9个百分点;第五行可以看出,I-RFBnet比RFBnet的mAP提高了4.74个百分点,表明本文提出的先使用特征融合形成六个有效特征层再对前三层加入注意力机制的膨胀卷积块的方法对检测精度的提高是有效的,而且需要同时使用效果才可达到最佳。
表1 消融实验Table 1 Ablation experiments
在表2中尝试了3种结构的膨胀卷积结构,除了前面提到的卷积块结构外,本文还尝试了步长为0.5 step的卷积加上2×2尺寸、2×2步幅的最大池化(Maxpooling)以及步长为0.25 step的卷积加上4×4尺寸、4×4步幅的最大池化代替步幅为step的卷积。表中可以看出三种结构的膨胀卷积块对特征单元信息增强均有效,使用步长为step卷积效果最好。
表2 在I-RFB中使用不同结构的膨胀卷积Table 2 Expansion convolution of different structures is used in I-RFB
为了进一步验证本文方法的有效性,将本文方法与当前主流的一些目标检测算法进行对比。所有实验均在SeaShips数据集上进行的,除SSD-512、YOLOv2(532×532)以外,图像的输入尺寸均为300×300,参数的选择和之前一样,YOLOv2算法以Darknet-19作为基础网络,RetinaNet[19]、DSSD[20]算法分别以ResNet50、ResNet101作为基础网络,其他都以VGG16作为基础网络,AP计算的阈值设为0.5和0.7。实验结果如表3所示,从表中可以看出,本文提出的算法在精度上都高于其他算法。在检测速度上,由于本文对RFBnet算法的网络结构做了一些改进,导致检测速度有所下降,但是仍然优于两级检测器,能够满足实时检测的需求。
表3 与其他算法在SeaShips数据集上的性能对比Table 3 Performance comparison with other algorithms on SeaShips data set
4 结论
本文针对多目标遮挡情况下小目标检测问题,设计了一种基于改进RFBnet的算法。算法设计了池化特征融合模块和反卷积特征融合模块并提出了一种融入注意力机制的膨胀卷积块DB,增强了靠近目标中心点区域特征的学习,将算法在SeaShips数据集上进行测试,实验结果表明:(1)与当前多种深度学习算法相比,本文所提出的改进算法结构合理,检测精度最高,虽然检测时间上有所下降,但可以满足实时检测的需求。(2)从检测精度上看,当IoU阈值设置为0.5时,改进后的算法较SSD、RFBnet、FSSD算法分别提高10.51、4.74、1.87个百分点;当IoU阈值设置为0.7时,改进后的算法较SSD、RFBnet、FSSD算法分别提高13.27、5.12、3.28个百分点。
通过预测结果图看出,改进后的方法检测效果得到了较大的提高,尤其提高了对小目标的检测精度,尽管改进后的方法能够达到实时检测的应用需求,但相较于原始RFBnet算法耗时依然过多,未来将进一步优化算法,扩充自然图像船只数据集,以提升对复杂场景下的小目标检测。