基于改进的YOLOv5s算法的水下小目标检测

2022-02-24 02:22魏养养李本银曹孟新
安徽工程大学学报 2022年6期
关键词:卷积特征模块

魏养养,李本银*,曹孟新

(1.安徽工程大学 电气工程学院,安徽 芜湖 241000;2.安徽工程大学 安徽省电气传动与控制重点实验室,安徽 芜湖 241000;3.安徽工程大学 高端装备先进感知与智能控制教育部重点实验室,安徽 芜湖 241000)

现阶段卷积神经网络(Convolutional Neural Networks, CNN)已广泛使用在目标检测、跟踪等任务中[1-5],并且取得了不错的效果。目前卷积神经网络目标检测算法有单阶段检测和两阶段检测这两种。单阶段的检测算法检测精度较低,但是在实时性上有保障;如SSD[6]、Yolo[7]、Yolov2[8]、Yolov3[9]、Yolov4[10]等。两阶段的算法与之相反,其检测时计算量大导致实时性低,但检测精度较高;如Mask R-CNN[11]、R-CNN[12]、Fast R-CNN[13]、Faster R-CNN[14]等。这些算法在陆地目标检测任务中都已经得到使用,并且还在更新迭代地发展, 将这些算法迁移到水下环境中,对推动水下目标探测技术的发展具有重要意义[15]。

现下水下目标检测领域中卷积神经网络应用的研究已经有了不少成果,如:对于有效样本小、信号与噪声比(Signal-to-Noise Ratios, SNR)低的声纳数据集,Kong等[16]提出了改进的YOLOv3算法用于实时检测,称为YOLOv3-DPFIN,以实现以最短时间消耗的噪声密集型多类别声纳目标的精确检测。Zeng等[17]提出在标准的Faster R-CNN检测算法中加入对抗性遮挡网络(AON)的方法来应对水下环境复杂多变,可获取的样本图像有限的问题,可以有效防止检测网络过拟合生成的固定特征。李宝奇等[18]针对轻量化目标模型SSD-MV2对水下光学图像感兴趣目标检测精度低的问题,提出了一种通道可选择的轻量化特征提取模块(Selective and Efficient Block, SEB)和一种卷积核可变形、通道可选择的特征提取模块(Selective and Deformable Block, SDB)。

虽然水下目标检测技术发展得如火如荼,但仍然存在一些重要的问题:①海洋空间尺度大,而水下目标通常很小,导致待检测目标的特征信息丢失;②水下图像多由专业的水下图像采集设备采集,有人为不可控因素导致的光线变化、泥沙影响等,也会导致待检测目标的特征信息丢失;③水下目标检测算法模型最终要部署于嵌入式设备进行商业、农业或军工业的使用,对稳定性和实时性要求高。本文针对上述问题通过实验验证提出了一种嵌入卷积块注意力机制的YOLOv5s-SPP3算法,结合注意力机制和金字塔池化层对水下图像重要特征信息关注并将局部特征信息和全局特征信息融合,有效地改善了特征信息丢失导致误检漏检的情况,并在算法中将传统的非极大值抑制用中心距离非极大值抑制替换掉,优化对重叠目标的检测进而提高算法模型的检测精度。

1 YOLOv5算法介绍

YOLOv5有小型、中型、大型、超大型4种网络模型,本文改进的是小型网络模型(YOLOv5s)。该网络是由3大块组成:骨干网络(Backbone-net)、颈部网络(Neck-net)和头部输出网络(Head-net)。YOLOv5s网络结构图如图1所示。

图1 YOLOv5s网络结构图

与YOLOv4目标检测网络相比较,YOLOv5s算法在YOLOv4的“CSPDarknet+PAN-SPP+YOLO-Head”算法结构上,融合了近几年人工智能领域内一些深度神经网络中优秀的网络结构、算法模型思想和训练技巧[19]。由于网络优化中的梯度信息重复会导致大多神经网络推理过程中计算量增大,而CSPNet可以降低计算量和内存成本,提高卷积神经网络的学习能力以及准确性。因此,在Backbone-net上,YOLOv5延用了YOLOv4中融合CSPNet的思想,形成C3结构。并且YOLOv5在Backbone的前面加了Focus切片结构,对图像进行切片操作,从而得到没有信息丢失的二倍采样特征图。颈部网络和输出端检测头部延用了YOLOv4的SPP+FPN 和YOLO-Head结构,如表1所示,最终形成“Focus+C3+PAN-SPP+YOLO-Head”的模型结构。

表1 不同网络模型结构的对比

2 改进的YOLOv5s算法

2.1 CBAM模块的嵌入式设计

注意力机制[20]是通过神经网络生成掩码,掩码中的值代表不同位置的注意权重。通过权重的不同,选择性地过滤不重要的特征信息,从而达到对重要特征信息的保留提取。本文采用的卷积块注意力机制[21](Convolution Block Attention Mechanism,CBAM)属于混合注意力机制,其结构如图2所示。

图2 CBAM模块结构图

混合注意力机制融合了通道和空间两种注意力机制,使神经网络对特征图重要信息的目标区域更加注意,抑制不相关信息,提高目标检测的整体准确率。结构分别如图3、4所示。

图3 通道注意力机制的模块结构图

图4 空间注意力机制的模块结构图

CBAM的数学推导公式为

(1)

F′=MC(F)⊗F,

(2)

(3)

F″=MS(F′)⊗F′,

(4)

本文对CBAM模块在YOLOv5s网络的不同位置不同数量进行嵌入设计来研究其性能的变化。由于CBAM模块是增强通道和空间特征信息的,所以将它分别嵌入到YOLOv5s算法中特征融合区域(即网络Neck区域)前面或后面,由此产生6种基于YOLOv5s算法的新模型结构:YOLOv5s-Backbone-CBAM(①)、YOLOv5s-Backbone-CBAM(①+②)、YOLOv5s-Backbone-CBAM(①+②+③)、YOLOv5s-Head-CBAM(①)、YOLOv5s-Head-CBAM(①+②)、YOLOv5s-Head-CBAM(①+②+③),Head和Backbone的修改区域图如图5、6所示。图5中,①②③分别表示添加CBAM模块的修改位置,“⟹ ”表示嵌入CBAM模块前后的转换符。

2.2 增加SPP模块的YOLOv5s算法

空间金字塔池化(Spatial Pyramid Pooling,SPP)是由He等[23]为了有效避免对图像区域剪裁、缩放操作导致的图像失真等问题和卷积神经网络对图像重复特征提取的问题而提出的池化策略。使用SPP模块早在YOLOv3-SPP算法中就出现了,在该算法中,SPP 模块有4个并行分支,分别是一个跳跃连接和3个卷积核大小分别为 5×5、9×9、13×13的最大池化。He等[25]在检测头部分加入SPP模块实现了YOLOv3-SPP,将特征图经过SPP 模块池化后的新的特征图重新融合起来传入后层网络,但目的不是为了解决上述问题,而是为了将局部特征和全局特征进行融合,因此在该模块中待池化的特征图的大小要等于或逼近最大池化核的大小。特征图经过SPP模块的特征融合处理后,输出的特征图有了更好的表达能力,对于处理待检测目标中目标大小差异较大的情况会有很大改善,应用于处理复杂的多目标检测任务时更甚,使其在检测的精度上有很大的提升。因此YOLOv4模型在骨干网络后也加入了SPP模块,而YPLOv5s也沿用了这种结构设计,模块结构如图7所示。由图7可见,输入先通过1×1×256的卷积层,再分别经过大小和深度为5×5×1、9×9×1、13×13×1的3个最大池化层,最后将得到的3个池化后的特征图与池化前的特征图进行通道拼接。此时得到的特征图在尺寸上不发生变化而输出的通道数变为原来的4倍。

图5 Head嵌入CBAM模块的修改区域

图6 Backbone嵌入CBAM模块的修改区域

在YOLOv5s原网络结构中SPP模块位于Backbone的20×20的特征图后面,经过SPP模块后直接送入检测头预测结果。本文在每个检测头前面(即Neck部分)的上采样之后添加了SPP模块,以增强特征信息的表达能力,达到更好的检测效果,本文将加入SPP模块的YOLOv5s网络称为YOLOv5s-SPP3。网络结构修改图如图8所示。

图7 SPP模块结构图

图8 YOLOv5s-SPP3网络结构修改图

2.3 DIoU_NMS的使用

将所有的检测框都计算一个交并比(Intersection over Union,IoU)的值,然后通过预设的NMS的阈值来筛除未达到阈值的锚框是传统的非极大值抑制(Non-Maximum Suppression ,NMS)算法做的事。但在现实场景中检测时,会出现目标部分重叠的情况。如果两个目标距离很近,这样会导致IoU的值都比较大,经过NMS处理后可能会只留下一个检测框,就会出现漏检的情况。这是由于NMS值考虑了预测框与真实框的重叠区域,并没有考虑两相邻中心点之间的距离与长宽比。

图9 DIoU_NMS几何原理图

中心点距离非极大值抑制(Distance-IoU Non-Maximum Suppression,DIoU_NMS)在NMS的基础上还考虑了相邻目标之间的中心点距离和长宽比,使得在两检测框的IoU都比较大的时候再参考中心点距离和长宽比的值,从而减少相邻目标漏检的情况。其几何原理图如图9所示。图9中d表示两个框中心点之间的距离,c表示两个框最小闭包矩形框区域的对角线长度。则DIoU数学表达式为

(5)

由于本文用到的是水下RUIE数据集,而水下生物的生存特性都是习惯结群的,检测目标会出现重叠遮挡现象,所以使用DIoU_NMS来代替传统的NMS会带来一定的检测精度的提升。

3 实验与结果分析

3.1 实验数据集及环境配置

本文实验采用2021年全国水下机器人大赛(包含水下光学目标检测智能算法、水下声学目标检测、水下光学目标检测产业应用、水声通信产业应用四大算法赛)提供的专门用于评价水下目标检测等算法的 RUIE数据集。该数据集是在真实海洋环境下通过专业水下摄像机采集,数据集共包括鱼类、海胆、海参、扇贝等7 600幅图像,每张图片都是由防水摄像机在不同时间段和水深下拍摄得到的,包括不同亮度、背景深度、模糊度和色彩偏差的图像,图像的像素大小都为1 920×1 080。

所用到数据集只将在海底活动缓慢的4类海洋生物(海胆、海参、扇贝和海星)通过图像标注工具Labelimg进行了标注,实验前通过转文件格式代码将RUIE数据集标签文件转换为适用于YOLO网络的txt标签文件,然后划分数据集,将数据集按9∶1划分,从7 600幅图片中随机抽取6 840张作为训练集,760张作为测试集。

本文实验都是使用Windows10操作系统。实验所使用的硬件平台基础为中央处理器(CPU):AMD Ryzen 75800H with Radeon Graphics 3.2 GHz;图形处理器(GPU):NVIDIA GeForce RTX 3060 Laptop。深度学习框架:PyTorch 1.9.0+CUDA 11.4。编程软件和IDLE(集成开发环境):Pycharm和Python 3.8。网络训练参数配置如表2所示。

表2 网络训练参数

图10 损失函数变化曲线

在整个训练过程,Batchsize设为8,总共迭代171 000次,初始学习率设为0.01,最终学习率为0.2。每一轮epoch都进行YOLOv5s自带的数据增强算法 ,训练200个epoch收敛后的损失函数变化情况如图10所示,且各损失值为box_loss=0.032 30,obj_loss=0.048 95,cls_loss=0.001 74,total_loss=0.083 01。

3.2 评价准则

本实验使用了召回率R(Recall)、准确率P(Precision)、mAP值(mean AP,mAP)作为网络性能的评价指标(mAP是用Precision和Recall作为两轴作图后围成的面积)。式(6)~(8)为3个评价指标的计算公式:

(6)

(7)

(8)

式中,XFP表示被错误检测出的目标数;XFN表示没有被检测出的目标数;XTP表示被正确检测出的目标数;AP为单个目标类的平均精度值;N(class)表示目标类别数,其数学表达式为

(9)

在多类别目标检测任务中,mAP是衡量模型整体检测精度的一个非常重要的指标,mAP越大表明整体检测精度越高。文中会用到mAP@0.5&mAP@0.5∶0.95,@后的数表示判定IoU为正负样本的阈值,@0.5∶0.95表示阈值取0.5~0.95(步长为0.05)的均值。

3.3 实验结果与分析

(1)嵌入CBAM模块后模型的效能评估和分析。 本节实验将2.1节提出的6种嵌入CBAM模块的网络模型在RUIE数据集划分好的训练集上训练,并与原YOLOv5s模型做对比实验,从而研究不同位置和数量的CBAM模块对网络性能的影响,以实现对网络更好的优化,实验结果如表3所示。由表3可以看出,在Bottleneck最后一个C3上嵌入CBAM模块对于提升算法的检测性能是最有效果的,与YOLOv5网络模型相比,mAP@0.5值提升了2.05%,mAP@0.5∶0.95提升了1.55%。通过实验1、2、3可以看出,在骨干网络中添加过多的CBAM模块不会增加模型的检测性能,反而将mAP@0.5的值分别降低了0.11%、1.02%;通过实验4、5、6可以得出与实验1、2、3一样的结果,并将实验2与实验5的数据进行对比可以看出,在骨干网络嵌入CBAM模块要比在YOLO检测头嵌入的性能要好。本节实验表明,将不同数量CBAM模块嵌入YOLOv5s不同位置产生不同的实验效果的原因是骨干网络中特征图语义信息较稀疏,依旧将浅层和中层的轮廓信息与纹理信息保留在特征图中了,但小目标检测任务中正需要这些关键信息。通过嵌入CBAM模块使得骨干网络增强对特征图中小目标信息的通道和空间特征信息进行关注保留,但由于更大的感受野、更小的特征图尺寸和大量的语义信息已经包含在骨干网络更深层的特征图中,这使得CBAM模块很难再区分出更重要的通道和空间特征信息,嵌入后还可能会因此减弱模型的检测性能。

表3 不同模型在测试集上的性能评估

由于上面的实验数据说明1个CBAM模块的嵌入达到的效果是最好的,但是对于该CBAM模块嵌入骨干网络哪里是最好的没有研究,本文追加了两个实验8、9,将骨干网络的②、③两个部位作为实验对象嵌入CBAM模块分别试验进行对比。从表3可以看出,在①位置嵌入CBAM模块对于网络的性能提升是最有效的,而在②、③位置嵌入反而使各指标有所下降。最终选择在骨干网络最后一个C3模块嵌入CBAM模块。

(2)添加SPP模块后实验结果分析。本小节实验是对2.2节所提的YOLOv5s-SPP3模型进行实验,实验结果如表4所示。由表4可以看出,增加SPP模块的模型性能提升是挺明显的,在RUIE数据集上mAP@0.5值较YOLOv5提升了2.03%,mAP@0.5∶0.95也提升了1.68%。由此说明在颈部增加SPP模块可以有效提升模型对待检测目标的分类能力及定位能力。

表4 YOLOv5s-SPP3性能评估

图11 使用DIoU_NMS后的mAP的变化图

(3)使用DIoU_NMS 后的效果。由于上述实验中遇到了重叠目标的遮挡问题,导致在检测目标时出现漏检和误检的问题,在查阅大量文献后提出了2.3节的将YOLOv5s中传统的NMS换为DIoU_NMS来改善漏检和误检的问题。通过加入锚框中心位置信息作为参考,保留两个置信度都比较大的框来改善上述问题。实验结果如图11所示。由图11可以看出,实验效果还是比较可观的,模型的mAP@0.5提升了1.42%,通过模型对重叠目标的检测效果也是很明显的。

重叠目标的检测对比图如图12所示。由图12可以看出,原图有两个海星,但是未加DIoU_NMS的YOLOv5s没有检测出来,而加了之后明显提升了检测精度,将两个海星都检测出来,证明加入后YOLOv5s算法的网络性能明显提升。

图12 重叠目标检测的效果对比图

(4)CBAM-TsppYOLOv5s算法性能评估。通过上述实验结果,最终提出了一种新的算法:CBAM-TsppYOLOv5s,其网络结构如图13所示。

为了验证算法的检测效果优于原算法,先在RUIE测试集上进行对比实验,并通过消融实验来检验添加部分的有效性而且使用专门检验小目标算法性能的VEDAI数据集进行训练和测试,并与其他算法进行性能对比,结果如表5所示。由表5可以看出,CBAM-TsppYOLOv5s在RUIE数据集上的性能相较于YOLOv5s在mAP@0.5上提升了2.2%,证明本算法在水下目标检测上较原算法是有优势的。检测效果对比图如图14所示。

表5 CBAM-TsppYOLOv5s算法与原算法在RUIE测试集上的检测效果对比

由于只有最终算法的测试效果图对比,不能说明每个添加的模块都能发挥效果,本文使用消融实验来验证各模块的有效性。在RUIE数据集上做的消融实验结果如表6所示。从表6可以看出,3个新添加的模块对于模型精度的提升都有着不同程度的递进式增加,通过消融实验得到的结果可以证明新添加的3个模块对算法的精度提升都是有一定效果的。

将本文提出的CBAM-TsppYOLOv5s网络与YOLOv4、YOLOv3网络以及改进的网络在专门针对小目标检测的VEDAI数据集上的检测结果对比如表7所示。从表7中可见,各算法在VEDAI数据集上测试得到的mAP@0.5的值可以看出本文提出的CBAM-TsppYOLOv5s算法对小目标的检测要优于其他算法。

表6 消融实验结果

表7 不同算法模型性能对比

由于上述实验结果可以说明对于密集目标、相互遮挡目标和小目标,改进的YOLOv5s网络可以有效检测并降低漏检率。另外,原有的YOLOv5s网络在检测目标时会导致误检测。改进后的YOLOv5s网络改善了目标误检情况。实验结果表明,改进的YOLOv5s提高了水下小目标检测的精度,能满足海洋目标检测任务的基本需要,有实际应用价值。

4 结论与展望

本文研究发现在YOLOv5s骨干网络的最后一个C3模块的Concat层嵌入CBAM模块可以增强骨干网络对特征图中小目标的通道和空间特征信息的关注和提取;在颈部网络中加入SPP模块可以提升特征图对不同大小感受野的表达能力,有效提升模型对目标的定位和分类能力,并采用了DIoU_NMS代替传统的NMS优化了重叠目标的漏检和误检的问题;最终提出了CBAM-TsppYOLOv5s水下小目标检测算法。实验结果表明,CBAM-TsppYOLOv5s算法对水下小目标检测的mAP@0.5值比YOLOv5s提升了2.2%,单个精度最高可达到93.01%,达到了较好的检测效果。下一步将进行图像去模糊化处理和算法模型嵌入式设备部署方面的研究。

图14 检测效果对比图

猜你喜欢
卷积特征模块
根据方程特征选解法
28通道收发处理模块设计
“选修3—3”模块的复习备考
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
从滤波器理解卷积
不忠诚的四个特征
基于傅里叶域卷积表示的目标跟踪算法
抓住特征巧观察
集成水空中冷器的进气模块