改进YOLOv5的红外船舶目标检测算法
2023-10-25朱志宇
古 静, 朱志宇
(江苏科技大学自动化学院,江苏 镇江 212000)
0 引言
海洋资源的大量开采和海洋产业的崛起与兴旺,致使海洋目标检测的发展变得尤为关键,其重要作用体现在监测、跟踪和对抗等诸多领域[1]。近年来,红外技术不断发展,广大学者的研究方法重心已经偏向于利用红外图像实现船舶目标检测。红外探测系统具有诸多优点,如工作环境适应性强、穿透大气能力强、探测作用距离远、灵敏度高等,这都有利于提高船舶检测的精度以及满足实时性。
原始的人工提取特征方法是早期红外图像船舶目标检测研究方法的基石,如空间域的滤波技术、变换域的滤波技术[2],该类方法体现了传统的目标检测思想。基于空间域的常见算法有中值滤波[3]和均值滤波等,其方法是对红外图像进行滤波处理,以达到抑制背景噪声的目的。常见的基于变换域的算法有小波变换[4]、高通滤波[5]和引导滤波等,该类算法对目标信噪比有显著提升,同时目标图像的边缘信息得以有效保留。传统的目标检测与识别算法依赖性强,检测精度不高,且检测速度慢,适用性低。
近年来,人工智能技术崭露头角,深度学习技术逐步被广泛应用于各大领域。基于深度学习的方法不需要大量的人为特征提取的设计,且拥有强大特征提取能力,该方法的目标检测性能和检测准确率明显优于传统目标检测方法。当前用于目标检测的神经网络方法主要分为两类。一类为基于区域推荐的方法,主要包括R-CNN,Fast R-CNN和Faster R-CNN等[6]。该方法为双阶段流程,首先是建议区域的产生,此阶段利用区域建议网络或者选择性搜索方式完成,其次在生成的建议区域中进行回归分类[7],虽然这种方法提高了目标检测的准确率,但其计算量过大,导致实时性差。另一类为基于回归思想的方法,主要包括由JOSEPH等提出的YOLO算法,单单使用一个神经网络就能实现目标检测的分类和定位问题[8]。文献[9]提出的SSD算法,利用多尺度特征提取来解决YOLO算法对小目标检测不敏感的问题。文献[10]提出的Retina-Net,使用Focal Loss解决样本不均衡问题,让one-stage网络达到two-stage的精度。经过不断改进,2020年GLENN等提出的YOLOv5算法极大简化了模型,且保有之前系列算法的优势,在保证高准确率的同时也能兼顾目标检测的快速性。目前,将YOLOv5算法引入到海洋船舶目标检测,利用深度神经网络模型强大的学习能力和模型通用性,来实现准确、可靠和快速的船舶目标自动检测与识别,可以为海洋领域里不同目标的检测、定位和识别等多种应用需求提供技术支持。
考虑到YOLOv5算法和红外技术的诸多优点,将YOLOv5算法与红外船舶目标检测相结合,进一步深入研究,致力于达到兼顾高精度与实时性的船舶目标检测的要求。本文主要介绍YOLOv5的网络结构,对YOLOv5算法进行一些改进和优化,训练算法网络模型,最后同实验中列出的几种目标检测算法进行对比,进一步说明了本文算法的检测效果与优势。
1 YOLOv5网络结构
YOLOv5的网络结构大致可以分为4个模块:输入端(Input)、骨干(Backbone)网络、Neck网络和预测端(Prediction)[11]。其整体结构如图1所示。
图1 YOLOv5网络结构
输入端的工作过程如下。首先,在捕获图片后进行马赛克数据增强,一组分到4张图片,经过缩放、排布或裁剪拼接成一幅图像。其次,YOLOv5算法通过等比缩放并用最小的黑色边框自适应地填充,以此实现图像尺寸大小统一,为训练神经网络模型做准备。模型在网络训练初始阶段,YOLOv5算法对初始锚框会自适应地设定,输出预测框,并比较真实框,通过两者交并比的计算得到偏移量,利用反向迭代得到最优锚框大小,进而调整网络参数,降低损失函数[12]。
骨干网络包括Focus处理、CBS处理、CSP结构和SPP空间金字塔池化等,其作用是对图片进行特征提取。首先,进行特殊的下采样——Focus操作,其目的是得到多个低分辨率的特征图,因而需对高分辨率的特征图进行拆分。其次,Focus处理后的图像经过CBS层,其由卷积层、批量归一化和激活函数Leaky ReLU组成[13]。最后,经过空间金字塔池化层,包括卷积、最大池化层和拼接融合。
Neck网络是网络的融合部分,采用FPN结合PAN的结构,其主要用来将提取出的特征进行混合组合,并传递到预测层,缩短了信息传输路径,保持了较高的语义信息,加强网络特征融合的能力。Neck网络结构如图2所示。
图2 Neck网络结构
在预测端,YOLOv5采用GIOULoss作为损失函数,同时通过非极大值抑制(NMS)来筛选根据不同尺度下的特征对目标图像生成的相应的预测框[14]。GIOU如图3所示,A表示真实框,B表示预测框,N表示A与B的并集,M表示A与B的交集,则交并比IIOU算式为
图3 GIOU示意图
(1)
其次,设C为A和B的最小外接矩形、D为C与并集N的差集,则GGIOU算式为
(2)
而作为损失函数
(3)
GIOU引入了真实框与预测框的最小外接矩形,在两者不相交的情况下实现对其距离的预测[7]。
2 改进YOLOv5目标检测算法
为了解决复杂背景下海上红外船舶目标检测精度不高的问题,本文对YOLOv5算法进行改进,提出了一种将视觉Reasoning纳入YOLOv5目标检测的新方法。本文将基于Multi-Head Attention的Reasoning层整合到Neck的顶部,从而可以通过使用更有意义、更细粒度和更增强的特征映射来提取关于不同红外船舶图像区域之间关系的Reasoning信息,进而提高模型的检测效率。此外,通过CIOULoss改进预测端(Prediction)中的损失函数实现高精度的定位,进一步提高算法对红外船舶检测系统的船舶目标检测的准确率。改进YOLOv5目标检测算法——YOLO-ship算法流程如图4所示。
图4 YOLO-ship算法流程图
1) 添加Reasoning层。
本文改进算法将基于Multi-Head Attention的Reasoning层整合到Neck的顶部,通过视觉Reasoning改进YOLOv5目标检测,提出了一种新的提取图像区域间语义关系来预测边界框和类概率的体系结构,利用Reasoning提高每个船舶类别的平均精度。
Reasoning层的结构如图5(a)所示。
图5 Reasoning层组成结构及注意力机制计算过程
Reasoning层的结构包括:Flatten,Positional Encoding,Multi-Head Attention,Skip Connections,Normalization,MLP和Rearrange。最后将连接层的输出输入到1×1的卷积层,最终通过预测端输出预测结果。其中视觉Reasoning层内部模块具体如下。
① Flatten。
Multi-Head Attention层期望有一个序列作为输入。在Flatten中Tensor被组改为一个序列,并以这种形式输入到Multi-Head Attention层。
② Positional Encoding。
对图像区域的顺序进行建模,采用固定正余弦位置编码公式
(4)
(5)
其中:i为网格区域在序列中的位置;j为特征深度索引,与特征深度bfeature相同。
③ Multi-Head Attention。
Multi-Head Attention是在网格单元之间进行推理,即图像区域的主要层。输入序列不同区域之间的推理采用自注意力法进行建模。
注意力机制的计算过程如图5(b)所示。首先通过输入序列X生成对应的查询Q(query)、键K(key)和值V(value),即
Q=X×WQ
(6)
K=X×WK
(7)
V=X×WV
(8)
其中,X为输入的样本序列特征。
通过Q,K,V之间的计算得到注意力特征图,即加权处理后的V矩阵。具体的计算过程是将Q与K相乘后除以根号下K矩阵维度dk后进行softmax处理得到权重矩阵WA,算式为
(9)
将WA与V矩阵相乘,得加权后的特征图矩阵
(10)
④ Skip Connections。
在Reasoning层中有2个Skip Connections,反向传播得到了改进,并通过残差跳跃连接将原始信息传播到以下各层。
⑤ Normalization。
在Reasoning层的2个地方应用了归一化方法。除了残差的跳跃连接外,归一化也是改善反向传播的另一个关键因素。为了处理Internal Covariate Shift,采用了层归一化。
⑥ MLP。
Multi-Head Attention的输出经过归一化后被输入到多层感知器(MLP)。MLP层由2个线性层和中间的ReLU非线性层组成,算式为
MLP(x)=max(0,xW1+b1)W2+b2
(11)
式中:x为样本分量;W1和W2为权重;b1和b2为偏移量。
⑦ Rearrange。
Rearrange是Reasoning层的最后一个子层,在其中序列被转换回检测Head所期望的shape。
2) 改进的损失函数CIOULoss。
GIOULoss虽然在IOU的基础上,解决了两个框不重合时其距离远近无法判断的问题,但当真实框包含预测框时,则对预测框的位置无法准确判断[14]。为了有效解决GIOULoss存在的问题,本文采用改进的损失函数CIOULoss,在考虑两个框距离的基础上,进一步考虑框的宽高比的尺度信息。
YOLOv5的损失函数算式为
Loss=Lossclass+Lossconf+Losscoord
(12)
式中:Lossclass表示分类损失;Lossconf表示置信度损失;Losscoord表示回归框损失。
CIOU原理如图6所示。
图6 CIOU原理
Losscoord展开算式为
(13)
式中:b为先验框;bgt为真实框;c为最小外接矩形的对角线距离;d为两框中心点之间的欧氏距离;a为权重函数;v用于度量长宽比的相似性。a和v的算式分别为
(14)
(15)
式中:wgt和hgt分别为目标真实框的宽和高;w和h分别为先验框的宽和高。
3 实验与结果分析
3.1 数据集准备
本文实验数据集采用公开的红外船舶数据集——红外海洋目标训练数据集。该数据集数据场景丰富,共有9402张红外船舶图片,将其分为训练集和测试集,具体数量为训练集8402张、测试集1000张。训练集图像采用Labelimg工具对红外船舶数据集进行标注,并分为客船(liner)、散装货船(bulk carrier)、军舰(warship)、帆船(sailboat)、独木舟(canoe)、集装箱船(container ship)和渔船(fishing boat)7种船舶类型。
3.2 训练环境及参数配置
本文实验在Pytorch框架上搭载,模型训练通过GPU加速,具体环境和配置参数如表1所示。
表1 训练环境配置
本文实验采用改进的YOLOv5目标检测网络——YOLO-ship作为训练模型,训练权重采用YOLOv5s.pt,批大小设为8,训练100个epoch。
3.3 实验结果与分析
本文实验采用精确率(Precision)P、召回率(Recall)R和平均精度均值(mean Average Precision,mAP)PmAP作为评价指标。其中,精确率和召回率分别为
(16)
(17)
式中:TP代表正确的船舶检测框数目;FP代表虚警的船舶检测框数目;FN代表漏检的船舶目标数目。
P-R曲线以召回率的值为横轴,精确率的值为纵轴,曲线与横纵轴围起来的面积即AP的值(PAP)。在目标检测中,每个类别都可绘制出P-R曲线,因此要衡量模型整体性能需求出mAP(PmAP)。PAP和PmAP算式分别为
(18)
(19)
其中,P(R)表示P-R曲线。
训练出模型的精确率、召回率和平均精度均值如图7和图8所示。
图8 PmAP曲线
由图7可知,目标检测精确率的平稳点在训练了约30个epoch后达到,目标检测召回率的平稳点在训练了约40个epoch后达到。
由图8可知,PmAP在训练了大约30个epoch之后也趋于稳定,对算法模型的精准度进行了验证。
图9所示为损失函数在训练过程中的迭代曲线,其反映出损失值CIOULoss在约25个epoch之后降低到0.04以下,验证了算法模型收敛的快速性。
图9 损失函数CIOULoss
本文算法在测试集上的红外船舶目标检测部分结果如图10所示。
图10 YOLO-ship实验结果
由图10可以看出,对于海面背景下不同尺度和不同类型的船舶均能有效定位,且检测准确率高;对于船舶之间有部分遮挡,目标较小的情况,也可以精确地实现定位,漏检率低。
为了测试YOLO-ship算法训练出的目标检测模型的性能,本文从红外船舶检测的精度和速度的角度出发,把YOLO-ship算法与几种较为主流的基于深度学习的目标检测算法进行了对比实验,其中选用了基于回归思想方法的典型代表SSD算法,基于区域推荐方法的典型代表Faster R-CNN算法,以及YOLO系列算法中的YOLOv3和YOLOv5算法,各种算法实验在同一硬件条件下进行,结果如表2所示。
表2 几种算法的检测精度和速度对比
由表2可知,PmAP值由本文YOLO-ship算法训练后达到了94.65%,相较于SSD算法提高了14.92个百分点,相较于Faster R-CNN算法提高了8.09个百分点,相较于YOLOv3与YOLOv5算法分别提高了5.92个百分点和2.97个百分点。其中,YOLO系列的算法相较于SSD和Faster R-CNN算法,PmAP值明显上升,YOLO-ship则在同系列算法的基础上PmAP值仍有提高。该结果表明YOLO-ship算法在检测精度上相较于所列算法为最优算法。作为双阶段目标检测算法,Faster R-CNN算法的检测速度FPS低至5.02帧/s,其检测速度明显太慢,无法达到实时检测的要求,而YOLOv5算法的FPS在所有算法中最高,其检测速度最快。由于本文改进算法YOLO-ship添加了类似Transformer编码器的模型作为Reasoning层,致使该算法检测速度略低于YOLOv5算法,但其检测速度仍然优于其他算法,故而可以满足检测的实时性。
4 结束语
综上所述,为了解决复杂背景下海上红外船舶目标检测精度不高的问题,本文提出了一种基于改进YOLOv5的红外船舶目标检测算法。首先,对网络结构进行改进,添加类似Transformer编码器的模型作为Reasoning层,提出一种新的提取图像区域间语义关系来预测边界框和类概率的体系结构,从而提高模型的检测精度;其次,改进原YOLOv5目标检测网络的损失函数,进一步提高算法对红外船舶检测系统的船舶目标检测的准确率。该算法模型经过验证,平均精度均值达到94.65%,在保证较高精确率的同时能达到实时检测的要求。后续的一个研究方向是在保证算法检测精度高、鲁棒性强、模型性能好的同时,致力于提高模型的检测速度,适当删减算法的冗余结构,将模型轻量化,增强算法的可移植性。