基于改进YOLOv5s的轻量级水下鱼群检测与识别
2024-05-20张晨蕾李梦晗田存伟
张晨蕾,李梦晗,田存伟
(聊城大学物理科学与信息工程学院,聊城 252000)
0 引言
现代渔业发展的趋势是工厂化精准养殖,而养殖鱼群目标检测是鱼类生长状况自动监测的核心[1]。然而在实际的养殖环境中,检测任务通常会遇到由于水下环境特殊而导致成像模糊、颜色失真等问题。因此,如何提高水下目标检测精度并把它应用到实际中仍是热门话题之一。
随着计算机视觉方向技术的不断发展,深度学习方法逐渐应用于目标检测。目前目标检测算法主要可以分为两类,一类是以R-CNN 算法[2]、FastR-CNN 算法[3]、Faster R-CNN 算法[4]和Mask R-CNN 算法[5]为代表的两阶段目标检测算法;另一类是以SSD 算法[6]和YOLO 系列算法[7-9]为代表的一阶段目标检测算法。
在水下目标检测研究中,叶赵兵等[10]提出的改进YOLOv3-SPP 水下目标检测,通过引入K-Means++聚类算法,该算法在一定程度上解决了水下目标颜色失真、对比度低以及检测精度低等一系列问题;叶志杨等[11]提出的YOLOv5s算法模型提高了平均检测精度;赵梦等[12]在融合SKNet 与YOLOv5 深度学习的养殖鱼群检测中,提出了一种融合视觉注意力机制SKNet,有效地解决了水下模糊图像鱼群检测准确率低的问题;朱世伟等[13]在基于类加权YOLO 网络的水下目标检测中,构造了类加权损失函数并引入自适应维度聚类方法,有效解决了水下目标检测面对图像模糊、背景复杂等问题。
本文目标是在水下复杂的环境中精准快速地检测出水下鱼群的数量,以达到对鱼群生长状况的监测,针对这一问题提出了一种轻量化YOLOv5的检测模型。相关的改进工作有以下几点:首先对建立的数据集进行预处理,得到增强后的图片;其次通过增加可变形卷积DCNV2和轻量级上采样算子CARAFE,在增大感受野的同时进一步提高模型对于水下鱼群的识别效果;最后增加轻量化GhostBottleneck 结构来减少计算量。改进后的DCG-YOLOv5s 算法可以提升检测精度,同时降低计算量。
1 YOLOv5 目标检测算法
YOLOv5 注重对小尺寸目标的探测,并在准确性和效率方面取得了显著提升。YOLOv5s一共给出了5 个版本[14],分别是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其模型在COCO 2017验证集上的测试参数见表1。
表1 YOLOv5在不同模型上的测试参数
可以看到随着网络模型深度增加,其平均检测精度也呈现逐渐提升的趋势,同时参数量也呈倍数增长。考虑到最终需要在硬件设备上部署模型,本研究选择了相对较小参数量的YOLOv5s作为实验对象。
YOLOv5s 模型架构包含了Input 输入端、Backbone 主干网络、Neck 颈部、Head 头部四个部分。YOLOv5网络结构图如图1所示。
图1 YOLOv5网络结构图
为了适应网络的规模,我们在输入图像进入网络之前对数据进行预处理,并采用Mosaic图像增强技术以提高模型的适应能力。
Backbone 特征提取端是网络模型的主干网络部分,整体来看,YOLOv5 采用了改进后的CSPDarknet53 结构,包括Conv 卷积模块、C3 模块和SPPF模块。
颈部Neck 是网络衔接部分,它采用了特征金字塔网络和聚合网络FPN-PAN 结构。其中FPN 是一种自上而下的结构,通过上采样和融合底层特征信息来生成预测特征图[15]。PAN 则是利用自下而上的结构对FPN 特征图进行补充融合,以提高网络对不同特征层次的识别能力。
最终在Head 网络的输出部分,将生成三个预测层用于目标的预测和回归。
2 模型改进与优化
2.1 Deformable Conv V2可变形卷积
为了更好地辨别不同形态下的鱼群并实现模型多尺度特征提取,本文采用可变形卷积[16](DCN V2)来提升网络特征提取能力,DCN V2通过平行卷积层学习offset 偏移,用来增加采样点的偏移量,对目标物体每个采样点周围区域进行采样。可变卷积的计算流程如图2所示。
图2 可变卷积计算流程图
可变形卷积计算过程如下:
(1)在特征图上的映射x上,使用规则网格R进行取样;
(2)利用卷积核w对样本点进行权重计算,同时R规定了感受野的范围和扩张程度。
式(1)定义了一个大小为3×3、扩张率为1 的卷积核。传统卷积公式为
可变卷积公式为
其中:y是输出特征图,p0是y中的每个位置,pn是对R中所列位置的枚举。{Δpn|n= 1,2,…,N}是R的偏移量。可变卷积在传统卷积的基础上引入了每个位置的偏移量,偏移量是由输入特征图与另一个卷积生成,因此需要通过双线性插值法计算x的值。
其中:q枚举了特征图中的所有积分空间位置,G(·)是双线性插值[17]。
2.2 上采样算子CARAFE
特征上采样又称为特征重组,它可以被理解为对每个位置进行卷积运算,将输入特征图与相应邻域像素点进行乘积计算的过程。本文采用轻量级CARAFE 算子[18]进行上采样,以替代YOLOv5s 模型中原有的插值上采样算子。该算子能够根据输入特征指导重组过程,在大的感受野内聚合上下文信息,并以简洁高效的方式将输入信息与特征图的语义信息关联起来。CARAFE 原理如图3所示。
图3 CARAFE原理图
上采样算子CARAFE 最主要分为上采样核预测模块和特征重组模块。假设上采样倍率为σ,给一个形状为H×W×C的输入特征图,CARAFE 首先利用上采样核预测模块预测上采样核,然后利用特征重组模块完成上采样,得到形状为σH×σW×C的输出特征图[19]。
2.3 轻量化GhostBottleneck结构
在YOLOv5 模型中,为了提高目标检测能力,减少漏检并保持轻量[20],我们选择用轻量级GhostBottleneck 替代主干网络中部分卷积C3。轻量化GhostBottleneck 是根据GhostNet模型中的“幻影卷积”(GhostConv)所设计,以Ghost 模块为构建基础,接着对GhostBottleneck 进一步设计得到最终GhostNet 神经网络。其中Ghost-Bottleneck 分为stride=1 和stride=2 两种结构,分别如图4(a)和图4(b)所示。
图4 GhostBottleneck结构图
在图4(a)中,stride=1 的GhostBottleneck 结构主要由两个堆叠的Ghost 模块、BN 层以及ReLU 激活函数组成。第一个Ghost 模块用作膨胀层,用于增加通道数,其中把输出与输入通道数的比值称为膨胀比。第二个Ghost 模块压缩通道数,经过BN 后的通道数与输入通道数一致,这样就构成了能使信息损失更少的逆残差结构[21]。在图4(b)中,stride=2 的GhostBottleneck 结构保持了stride=1 的结构,并在两个Ghost 模型之间加入了步长为2 的深度可分离卷积进行连接,大幅度降低计算量,实现加速的效果。
本文将stride=2 的GhostBottleneck 结构替换YOLOv5s 主干网络中部分的C3 模块,用来减少计算量。
2.4 改进的YOLOv5s算法
改进后的网络结构如图5 所示。首先使用CALHE 对原始数据集进行增强处理,得到对比度更大的数据集;其次使用可变形卷积C3_DCN与GhostBottleneck 结构替换Backbone 主干网络中的部分C3,构建轻量化网络;最后在颈部Neck 部分利用轻量级上采样CARAFE 算子替换原算法中的Upsample算子。
图5 改进后的YOLOv5网络结构图
3 实验结果与分析
3.1 实验环境
实验平台见表2。
表2 实验平台
3.2 数据集的建立与处理
目前已知公开的水下鱼群数据集相对较少,为了丰富鱼群的特征,实验所涉及的数据来源于两个部分:一部分是对FISHES-IN-THE-WILD数据集进行筛选,选出带有鱼群的部分;另一部分是通过爬虫软件在互联网中收集水下鱼群的图片。通过对图像的筛选整理出672 张JPG 格式的图像,然后使用LabelImg 工具进行手动注释,生成.txt 标签文件。其中训练集、验证集和测试集按照7∶2∶1的比例进行分配。部分数据集如图6所示。
图6 部分数据集展示
本文采用CALHE 自适应直方图均衡方法对水下原始图像进行修复与处理,以获得全新的数据集。图7 所示为通过CALHE 自适应直方图均衡法生成的图像。
图7 使用CALHE前后对比图
此外,实验还采用Mosaic 方法对数据集随机抽取4 张图片进行旋转、缩放、裁剪等处理,再将选定的4 张图片拼接成为1 张新的图片,作为训练数据,这种技术能够有效地增加训练数据集的规模,从而提升模型的泛化性和鲁棒性。
3.3 模型的评价指标
本文从平均检测精度(mAP)、参数量、计算量对模型进行比较。其中平均精度,是指在所有召回率的可能取值下对全部精度的平均值。其中,精确率(Precision,P)和召回率(Recall,R)计算公式分别见式(5)和式(6),以P和R分别作为横纵坐标,形成的图称为P-R曲线,其与坐标轴相交所占的面积可用AP来表示。mAP则是所在类别下的平均AP值。AP与mAP的计算见式(7)和式(8)。
其中,TP(True positives)可以理解为真,且被预测为真;FP(False positives)是假,却被预测为真;TN(True Negatives)是假,且被预测为假,FN(False Negatives)是真,却被预测为假。
3.4 实验结果分析
实验在自建数据集上进行,首先针对YOLOv5s 修改训练所需的配置文件,根据训练日志结果发现,在训练达到80 轮左右时数据变动逐渐趋于平稳,为确保数据的准确性,最终将训练次数设定为100 轮。部分训练日志图如图8 所示。
图8 部分训练日志图
3.4.1 Deformable Conv V2可变形卷积
从表3可知,YOLOv5s表示的是原算法在自建数据集上的实验结果,mAP为80.7%,计算量为15.8 GFLOPs。根据训练结果可知,增加可变形卷积后,mAP 提升了1.2%,同时也降低了计算量。
表3 使用Deformable Conv V2可变形卷积实验数据
3.4.2 上采样算子CARAFE不同参数的对照试验
为了验证上采样算子CARAFE 对算法改进的有效性,本实验采用对照实验的原理,分析改进后的模块对算法的提升。分别对比了不同编码器内核大小kencoder 和重组内核大小up 的检测结果,结果见表4。
表4 引用上采样算子CARAFE实验数据
表4 中参数1 与参数2 中两个数字分别代表编码器和重组的内核大小。加入上采样算子CARAFE 后,C-2 模型和C-5 模型中mAP达到了82.5%,提升了2.2%,但对比计算量可知,C-2模型的训练计算量更小,只比原YOLOv5s 模型提高了0.1 GFLOPs,后续实验中的模型将使用C-2 的数据。根据训练结果可知,上采样算子CARAFE 引入了很小的计算开销,但检测精度有了明显提升。
3.4.3 GhostBottleneck 结构不同参数的对照试验
为了验证GhostBottleneck 结构对算法改进的有效性,本实验采用对照实验的原理,分析改进后的模块对计算量的减少,结果见表5。
表5 使用GhostBottleneck结构实验数据
在加上GhostBottleneck 结构后,总体mAP值有所降低,但是计算量明显减少,Ghost-Bottleneck 结构增加的越多,计算量减少的越多,综合来看选定B-1 模型,在mAP 基本没有变化的同时,计算量降低了10.8%。
3.4.4 消融对比实验
为了更好地验证本实验三种改进方法对实验的有效性,在自建数据集上开展消融对比实验,依次在YOLOv5s上加入可变形卷积、上采样算子以及GhostBottleneck 结构,实验结果见表6。
表6 消融实验对比数据
如表6所示,YOLOv5s表示的是原算法在自建数据集上的实验结果,mAP为80.7%,计算量为15.8 GFLOPs,分别加入可变形卷积和上采样算子后计算量的变化不大,但对于检测精度的提升较为明显,同样在DC_YOLOv5s 算法实验结果中也可以看出;加入GhostBottleneck 结构后,虽对模型检测精度并没有太大影响,却明显降低了计算量。在同时引入三种改进方法后,检测模型得到最优结果,检测精度提升3%,计算量降低13.7%。
图9 所示为YOLOv5s 和DCG-YOLOv5s 的检测结果,从图中可以看出,改进后的算法在检测同位置鱼群时置信度更高;相较于原始图片漏检、错检的情况也得到了很大的改善。
图9 算法改进前后检测对比图
4 结语
为了更准确便捷地检测和识别水下鱼群,针对光照等原因导致的低对比度和颜色失真问题,在算法中引入了可变形卷积和上采样算子,同时通过使用GhostBottleneck 模块替换主干网络中的部分C3 模块来降低算法深度,从而提高了水下鱼群的检测精度。实验结果显示,改进后的DCG-YOLOv5 算法平均检测精度提升了3%,计算量减少了13.7%。这表明改进后的模型在提升检测精度同时也降低了计算量,基本满足当前水下鱼群检测的精度要求。未来还将探索更优化的算法,以解决由于鱼群数量多而引起重叠目标时出现的问题。