王文杰,何小海,卿粼波,董子铭,熊淑华
(四川大学 电子信息学院,四川 成都 610041)
近年来,我国航海事业有了巨大发展,船舶技术突飞猛进,计算机科学和雷达无线电技术的应用,使得航行逐渐实现智能化、导航定位电子化、碰撞自动化等,我国正努力成为世界航海强国。为降低船舶在海上航行的风险性,维护航行人员的生命安全,对船舶目标检测[1]有着广泛的应用前景。在军事领域,对特定目标进行位置检测,有助于战略部署,加强海防预警能力;在民用邻域,对非法捕鱼船舶和偷渡越界情况进行检测,有利于海运的监测与管理。然而在实际应用中,受海面诸如光照变化、海浪风暴和极端天气等复杂环境因素的影响,使得船舶目标的高准确率、实时检测成为领域内难点之一。
传统的目标检测算法利用滑动窗口[2]的思想,获取候选区域的HOG特征[3]和SIFT特征[4],利用支持向量机(Support Vector Machine,SVM)[5]进行识别,主要应用于背景简单、待测目标特征明显的场景。由于一些红外船舶图像背景区分度低,而且目标类型复杂多变,很难通过一般的抽象特征完成对船舶的检测。随着深度学习技术的不断推进,船舶目标检测也逐渐转向了基于深度神经网络的检测,在图像和视频中的检测精度和实时性也越来越高。
基于深度学习的目标检测算法根据是否采用多阶段处理,将其分为Two-Stage的目标检测算法和One-Stage的目标检测算法。Two-Stage算法典型代表有R-CNN[6],Faster-RCNN[7]等,需要利用算法提前生成一些候选框,然后经过CNN[8]进行目标分类;One-Stage算法典型代表有SSD[9],CenterNet[10],RetinaNet[11],EfficientDet[12]和YOLO[13]等,利用处理回归问题的方法来有效解决目标边框定位的问题,因此不需要事先产生候选框。基于深度学习的船舶目标检测算法由CNN实现自动特征提取,然后用神经网络实现分类和回归,并将分类和回归损失统一在一个框架中。刘畅等[14]采用GA-RPN结构提取的图像特征来指导锚框的生成,解决了CNN检测算法中使用先验知识人为预设锚框的弊端。王燕妮等[15]将ShuffleNetV2引入到主干特征提取网络,有利于减少计算资源和压缩模型。李忠智等[16]采用UNet++网络进行目标检测,以多边输出融合(Multiple Side-Output Fusion,MSOF)策略算法为基础,在传统目标检测模型中加入特征融合层形成多尺度检测模型。于野等[17]在FPN的基础上,提出了基于多维感受野的CNN模型A-FPN,对目标特征进行显著性特征融合,提高了模型的分辨能力。赵玉蓉等[18]提出了一种基于YOLOv4的YOLO-Marine模型,通过K-Means++聚类得到初始anchor,使得船舶目标的定位更加精准。
虽然深度学习技术的应用使得目标检测的效率和精确度都得到了较大提升,但仍面临实现轻量化检测模型、部署到移动嵌入式AI平台等关键技术的挑战。Two-Stage算法精度高,但检测速度慢、训练时间长,且需要依靠强大的GPU算力;One-Stage算法准确度低于Two-Stage算法,但推理速度快、资源消耗少,更适合应用于嵌入式平台。其中YOLOv5作为One-Stage算法典型的代表网络,不仅在速度上优势明显,而且模型体积小,同时维持较高的识别精度。
本文基于YOLOv5,采用GhostNet[19]网络结构减少冗余卷积层,改善backbone层卷积结构;引入SENet加强特征感知,优化网络对目标物特征提取的能力,实现更加精准的识别;最后将改进算法部署到嵌入式 AI平台 NVIDIA Jetson TX2实现实时检测。实验结果表明,改进算法具有鲁棒性强、识别精度高和轻量易移植的特点。
YOLOv5作为主流的目标检测算法,结合了很多计算机视觉相关技术,其网络结构如图1所示,主要由输入端、backbone、neck和head四部分组成。
图1 YOLOv5网络结构Fig.1 YOLOv5 network structure
对于输入端,为了丰富数据集,提升网络的泛化能力和鲁棒性,提出Mosaic图像增强,随机使用4张图片进行尺度缩放、色彩空间调整,然后对增强后的数据集进行拼接操作。backbone层采用了Focus结构,将特征切片成4份,然后在通道维度进行向量拼接操作,实现特征融合。此外引入带有残差结构的 CSP1_X模块,使得层和层之间进行反向传播时梯度值得到增强,有效防止网络加深时所引起的梯度消失。neck层采用FPN+PAN结构,对整个金字塔特征图进行增强,PAN基于 Mask R-CNN[20]和 FPN框架,该网络的特征提取器采用一种新的增强自下向上路径的 FPN 结构,将下层的显著性特征信息传递到上层,保留更丰富的特征信息。head层对目标的特征进行预测,在目标特征图上应用锚框生成带有类别概率和目标框的最终输出向量。
尽管YOLOv5有着快速识别和自适应锚框等优点,但是其目标特征提取能力不足,特征融合网络仅仅关注高级语义信息,并且网络层间消耗过多的卷积层带来复杂的计算。因此,本文提出改进方法,加强特征感知和减少网络参数,以满足红外船舶这类特征较弱的目标在嵌入式平台的检测需求。
YOLOv5的backbone层使用卷积提取目标特征信息,通过特征图可视化发现存在相似特征图,这些冗余的特征图增加了卷积计算量和资源消耗。经典的轻量化网络MobileNet和ShuffleNet通过采用深度可分离卷积来代替传统的卷积,同时引入通道混洗操作减少计算量,但没有从根本上解决目标特征冗余的问题。
本文提出在YOLOv5的backbone层引入GhostNet模块,该模块的思想在于将原始的卷积层分成两部分,首先使用更少的卷积核来生成少量内在特征图,然后引入资源消耗更少的线性操作来高效地生成Ghost特征图,实现对目标特征图的扩充,在维持卷积的输出特征图尺寸和通道大小与原网络一致情况下,使整体计算量和参数数量大幅度降低,方便部署至嵌入式平台,同时识别效果比轻量化网络MobileNet和ShuffleNet更好。
因此,为使算法轻量易部署,本文在YOLOv5基础上借鉴GhostNet模块的思想,将YOLOv5中的传统卷积操作(如图2所示)替换为GhostConv结构(如图3所示),同时将C3模块改为GhostBottleneck结构,所提出的YOLOv5-GhostNet网络模型结构如图4所示。
图2 传统卷积提取船舶特征Fig.2 Ship features extracted by traditional convolution
图3 Ghost模块提取船舶目标特征Fig.3 Ship target features extracted by Ghost module
图4 YOLOv5-GhostNet网络结构Fig.4 YOLOv5-GhostNet network structure
卷积操作可以融合空间和通道的特征,大多数的研究主要针对空间特征进行提取,为了强化YOLOv5网络对船舶这类小目标的特征感知,需要关注通道关系。SENet注意力机制可以提取出待测图像中更加关键的特征信息,自适应地校正通道特征,引导模型对待测图像重点区域赋予更高的权值,使得模型判断分类更加准确。所以,本文在 YOLOv5 的特征提取网络层backbone中的spp操作后面添加SENet模块,其结构如图5所示。
图5 SENet注意力机制结构Fig.5 Structure of SENet attention mechanism
SENet注意力机制将Squeeze操作作用于卷积获取到的目标特征图,在保持通道数目C不改变的情况下,将输入特征图的大小从(H,W)压缩至(1,1),然后利用全局池化将一个通道上整体空间特征编码为一个全局特征,其公式为:
(1)
在此基础上,对整体特征信息应用Excitation方法,强化学习各个通道间的联系,获取不同通道的权重。
s=Fex(z,W)=δ(g(z,W))=δ(W2ReLU(W1Z))。
(2)
Scale操作则是将多个不同通道的权重和原始特征图做乘积,生成全局最终目标特征。
通过可视化YOLOv5算法各个模块获取的特征图,将普通卷积(如图6所示)和本文提出的SENet模块进行效果对比,结论表明,嵌入了SENet注意力机制的SENetC3模块(如图7所示),对于船舶目标的特征感知能力优于普通卷积,船舶目标细节信息能够被显著增强,背景噪声被明显抑制,有利于神经网络捕获到感兴趣区域,学习到目标的关键信息。
图6 普通卷积提取船舶特征图Fig.6 Ship features extracted by ordinary convolution
图7 SENetC3提取船舶特征图Fig.7 Ship feature extracted by SENetC3
为提高神经网络的学习能力和提升梯度的传递效率,激活函数将非线性因素引入到神经元,因此神经网络可以采取合适的方式逼近非线性函数,这样就能够将激活后的神经网络应用到众多的非线性模型中,在YOLOv5目标检测算法中,采用的激活函数为Swish函数:
f(x)=x×Sigmoid(βx)。
(3)
由于Swish激活函数存在计算量大的缺点,且不稳定,在不同的任务中产生不同的效果,因此本文在YOLOv5的主干网络中采取Mish激活函数。Mish激活函数是一种自正则的非单调神经激活函数,相比Swish,其平滑的特性允许更有效的特性信息流入神经网络(如图8所示),非饱和特性消除了梯度爆炸的极端情况,从而提升网络的泛化能力,得到更好的准确性。其公式为:
f(x)=x×tanh(ln(1+ex))。
(4)
图8 Swish和Mish激活函数梯度曲线Fig.8 Swish and Mish activation function gradient curve
实验数据集采用山东大学制作的远海船舶目标检测数据集,对舰船图像进行图像配准、加权融合,以及多种数据增强处理,包含旋转、翻转、放缩、添加噪声等,得到短波红外(Short Wavelength Infra-Red,SWIR)图像,其采集设备为氧化钒非制冷红外焦平面探测器,像元间距为14 μm,响应波段为8~14 μm,使用焦距为50 mm的定焦镜头;长波红外(Long Wavelength Infra-Red,LWIR)图像,其采集设备为铟镓砷非制冷红外焦平面探测器,像元间距为30 μm,响应波段为0.9~1.7 μm,使用焦距为16~160 mm的变焦镜头以及2个波段的融合图像(Fusion),即多光谱图像,总共1 044×3张图像。其中SWIR图片画面偏暗,船舰目标和海面背景对比度低,船体特征不明显;LWIR图片画面明亮,船舰轮廓与海面区分性弱;Fusion图片融合了SWIR和LWIR的2个波段,光谱信息更为丰富,使得数据集更为泛化,丰富了各种船舰的形态,3类船舰图片样例如图9所示。
(a) SWIR
(b) LWIR
(c) Fusion图9 红外船舶目标Fig.9 Infrared ship target
实验选取SWIR,LWIR和Fusion各800张,包含多个波段信息,总计2 400张红外船舶图像用于训练,600张用于训练网络时验证模型的正确性。在训练阶段,为了增强网络模型的鲁棒性和泛化能力,对2 400张训练数据集进行了Mosaic数据增强,即随机选择4张图片拼接融合,使得提取船舶目标更加丰富,如图10所示。
图10 训练数据集Mosaic增强Fig.10 Training dataset Mosaic enhancement
本文提出的红外船舶目标检测方法实验环境为Ubuntu 18.04操作系统,采取了双路NVIDIA RTX2080ti显卡提供算力,CPU为Intel(R) Core(TM) i7-9700,在PyTorch 1.9.0,cuda10.2下选择GPU模式完成模型的搭建和网络训练,训练参数如表1所示。
表1 实验参数设置Tab.1 Experiment parameter setting
在检验算法效果时,本文采用平均准确率(mAP)、模型大小(Model Size)、参数量(Parameters)作为衡量算法性能的指标。AP是指检测准确率,其值为P-R曲线与坐标轴围成的区域面积。
mAP是衡量网络模型在各个类别上的精度的指标,其公式为所有类别的AP求平均:
(5)
式中,N为数据集中目标物类别数,由于红外船舶检测中N=1,因此mAP=AP。mAP@0.5定义为当IOU阈值取0.5,所有类别的AP@0.5求平均值,mAP@0.5衡量模型精确率随召回率变化趋势。mAP@0.5∶0.95定义为将mAP的IOU阈值从0.5以0.05的步长增至0.95,并取所有mAP的均值,mAP@0.5∶0.95衡量模型在不同IOU阈值下的综合表现,其值越高意味模型高精度边界回归能力越强,检测框与标定框拟合越精准。
为了探究改进方法对模型泛化能力的影响,针对本文提出的几种改进方法,对YOLOv5算法进行结构改进和参数优化调整,以多波段船舶数据集为例,通过实验对比其效果如表2所示。
表2 改进方法实验结果Tab.2 Experiment results of improved method
由表2可知,引入GhostNet模块对网络进行轻量化可以有效减少计算参数,使得模型大小降至9.5 MB;在GhostNet模块的基础上结合Mish激活函数,使得mAP@0.5∶0.95提升2.9%,证明Mish激活函数可以提升识别准确率;将注意力机制SENet和Mish激活函数相结合,加强对船舶目标特征的感知,有助于将卷积计算得到的浅层特征图抽取为深层特征图,学习通道间的相关性,将mAP@0.5提升至99.9%,但SENet模块使计算参数略微增加;在YOLOv5中同时引入了GhostNet模块、SENet机制和采取Mish激活函数,mAP@0.5和mAP@0.5∶0.95分别达到99.9%和97.2%,同时大幅度降低计算参数,模型大小仅为10.7 MB,使得网络轻量化易部署。
综合实验结果,本文确定最终改进方案为引入GhostNet模块,SENet注意力机制和采取Mish激活函数。经过300 epochs迭代训练,在识别准确率、模型参数量等指标均优于YOLOv5算法,如图11所示,平均准确率mAP@0.5和mAP@0.5∶0.95相较YOLOv5分别提高0.4%和3.5%,同时模型参数量减少27%。
(a) 平均准确率mAP@0.5
(b) 平均准确率mAP@0.5∶0.95图11 算法改进前后平均检测精度对比Fig.11 Comparison of average detection accuracy before and after algorithm improvement
为验证本文提出的方案效果显著,在红外船舶数据集中测试了目前的多种主流目标检测算法,包括SSD,RetinaNet,EfficientDet,CenterNet,YOLOv3-Tiny和YOLOX。
表3 多种检测模型结果对比Tab.3 Comparison of results of various detection models
实验结果以平均检测精度mAP@0.5和mAP@0.5∶0.95,以及网络模型大小为评价指标,改进算法mAP较YOLOv5提高3.5%,模型参数计算量减少27%,且评价指标相比SSD,Retinanet,Efficientdet,Centernet,YOLOv3-Tiny和YOLOX算法具有明显优势,证明本文方法不仅识别准确率优于领域内主流算法,且对网络剪枝轻量化后,计算参数量大幅下降,模型大小仅为10.7 MB,有助于网络模型的嵌入式平台推理部署。
嵌入式设备在功耗、体积、成本上与高端服务器相比都具有巨大的优势,为加快算法的落地应用,实现红外船舶目标检测的轻量化部署,选取NVIDIA Jetson TX2作为目标检测算法的嵌入式终端,配置opencv,cudnn和TensorRT8.1等加速环境,将改进算法部署至平台,其检测效果对比如图12所示。YOLOv5算法对于3种类型的船舶图片均存在漏检情况,表明神经网络训练模型的泛化能力不足,面对船体特征细微的场景时,算法的鲁棒性较弱。
(a) YOLOv5 Fusion样例检测
(b) YOLOv5 LWIR样例检测
(c) YOLOv5 SWIR样例检测
(d) 改进YOLOv5 Fusion样例检测
(e) 改进YOLOv5 LWIR样例检测
(f) 改进YOLOv5 SWIR样例检测图12 改进YOLOv5算法前后船舶目标检测效果对比Fig.12 Comparison of ship target detection effect before and after improved YOLOv5 algorithm
本文改进方法Improved-YOLOv5,由于融入了注意力机制加强对目标特征的提取,采取更平滑的激活函数使得特征信息在网络间更深入的传递,对于多个波段的测试样例的所有船舶目标均无漏检和错检等情况,且检测置信度高,识别准确率mAP高达97.2%,检测帧率达到22帧/秒,证明所提方法具备高准确率和鲁棒性良好性能,满足嵌入式平台实时检测需求。
本文针对船舶航海安全的应用背景,为解决嵌入式平台资源受限条件下船舶目标检测存在的实时性差和识别效果不理想的问题,提出了一种基于改进YOLOv5的船舶目标识别方法。该方法以YOLOv5为基础,对整体卷积结构进行剪枝,实现算法的轻量化设计,此外通过增加SENet注意力机制,有效加强对特征微弱的船舶目标的感知。最后,将模型部署在嵌入式平台。实验结果表明,本文所提方法对于红外船舶图像具有很好的识别效果,识别准确率mAP@0.5高达99.9%,mAP@0.5∶0.75高达97.2%,且模型推理检测速度达到22帧/秒。本文方法在识别准确率和模型鲁棒性方面相较于YOLOv5都有明显提升,且满足嵌入式轻量化实时检测需求,在实际生产和运用中都显示出巨大的潜力。未来将继续优化算法,进一步降低网络的推理复杂度,缩小嵌入式端和PC端检测的差距。