基于通道非降维与空间协调注意力的改进YOLOv8养殖鱼群检测

2023-10-19 06:05涂万于红张鹏韦思学张鑫杨宗轶吴俊峰林远山胡泽元
大连海洋大学学报 2023年4期
关键词:鱼群注意力卷积

涂万,于红*,张鹏,韦思学,张鑫,杨宗轶,吴俊峰,林远山,胡泽元

(1.大连海洋大学 信息工程学院,辽宁省海洋信息技术重点实验室,辽宁 大连 116023;2.设施渔业教育部重点实验室(大连海洋大学),辽宁 大连 116023)

精准养殖是水产养殖的新趋势,目标检测技术是精准养殖的基础[1-2]。然而,在真实的养殖环境中,模糊和遮挡对鱼类目标检测具有较强的干扰。传统的图像处理和机器视觉方法往往难以处理复杂的水下情况,导致检测准确度不高[3-4]。近年来,深度学习为目标检测提供了新的解决方法[5-6]。

深度学习中,YOLO算法因具有计算量较小、运行速度快等特点,广泛应用于水下目标检测中[7]。针对鱼群模糊造成的特征丢失问题,Chen等[8]在YOLOv7[9]中使用不同采样率的膨胀卷积[10],在不增加算法参数量的情况下,减少特征融合中细粒度信息的丢失,增强了模型的特征提取能力;Li等[11]利用先验知识来增强目标特征,在水下鱼群检测中,精度和召回率分别达到94.92%和92.21%,但模型过度依赖先验知识的数量,在鱼群存在遮挡情况时,无法保持高识别精度;袁红春等[12]使用GCBlock[13],并优化目标框回归损失函数,在高密度遮挡情况下,以更低成本完成鱼类检测与识别,但YOLOv8n的识别能力有限,易产生目标漏检。Li等[14]利用可变形卷积模块[15],减少了鱼类个体漏检数量,但可变形卷积模块缺乏有效的学习指导,会重点关注非必要特征,降低了模型的泛化能力。在模型的特征提取能力方面,注意力机制能够提高模型对关键信息的感知能力。针对水下成像模糊、失真等导致鱼群检测准确率低的问题,赵梦等[16]将SKNet[17]注意力机制与YOLOv5融合,构成了关注像素级信息的特征提取网络,提升了养殖鱼群检测和识别的整体效果,但SKNet的降维操作会丢失鱼类个体的空间信息,导致目标定位精准度下降;韦思学等[18]提出融合通道非降维双重注意力机制ECBAM来获取更多的鱼类细节特征,对养殖鱼群目标检测效果更佳,但ECBAM仅对气泡造成的遮挡有所改善,仍具有局限性。

综上可知,基于YOLO的水下鱼群检测方法存在如下问题:养殖环境中,模糊会造成特征信息严重缺失,导致检测精度下降;高密度养殖会产生密集遮挡,目标间特征差异较小且会相互影响,使检测的召回率降低。因此,针对上述问题,本研究中,提出基于通道非降维与空间协调注意力ECAM(efficient coordination attention module)的改进YOLOv8养殖鱼群检测方法YOLOv8-Head-ECAM,在FPN(feature pyramid network)[19]中增加大尺寸检测头,同时在特征融合后使用ECAM注意力机制,降低模糊、遮挡对鱼群检测的影响,以期为养殖鱼群的检测提供有效解决方案。

1 YOLOv8-Head-ECAM模型的构建

真实的养殖环境中,当相机镜头或水质发生变化时,会造成鱼群图像出现模糊现象,从而降低算法对鱼群的识别能力。另外,以不同角度观察鱼群时常常存在鱼群遮挡现象,造成部分鱼类个体出现漏检问题。为解决因模糊和遮挡导致的密集鱼群检测效果不佳的问题,提出以YOLOv8为基础模型框架的YOLOv8-Head-ECAM,通过改进检测头和使用ECAM注意力机制,提升模型的检测效果。

1.1 YOLOv8模型

YOLOv8是YOLO系列算法的最新版本,能够以高精度和高速度检测物体[20]。与YOLOv8相比,YOLOv5中的C3模块仅对多个BottleNeck结构进行简单的堆叠,限制了梯度在不同层之间的有效传递,模型提取到的特征只包含较少的上下文信息,导致对模糊和遮挡目标的检测效果下降;而YOLOv7中一系列可训练的技巧,需要更多的计算资源和训练时间才能达到最佳性能[21]。YOLOv8在保证其轻量化的同时,可以获得更丰富的梯度流信息,其算法系列包括5个模型,分别是YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l和YOLOv8x。相比于其他模型,YOLOv8x采用更深的网络结构,引入了更多的卷积层和残差连接,从而能够学习到更多的特征。因此,本研究中采用YOLOv8x作为基础模型框架。

YOLOv8模型由输入端、骨干网络和头部网络3部分组成。输入端将图像统一成分辨率为640×640的图像;骨干网络由用于提取图像特征的卷积神经网络组成,通过C2f结构获取更丰富的梯度流,从而学习更多的特征;头部网络包括颈部(Neck)和检测头(Detect)两部分,分别用于特征融合和目标预测。其中,Neck是连接Backbone和Detect的中间层,用于进一步提取特征和调整特征图的分辨率,提升检测头的预测能力;Detect包括分类器和回归器两部分,根据Neck的输出特征预测目标的位置和类别。

1.2 检测头的改进

YOLOv8使用Anchor-free检测头预测边界框,通过去除一些不必要的卷积等优化操作,达到更快的检测速度[20],但对于遮挡鱼群的检测效果并不理想。FPN结构在处理复杂的视觉场景时具有明显优势,其独特的金字塔结构允许模型在不同尺度下进行特征融合,使模型能更好地理解图像中的细节和上下文信息。最底层的C2f模块接受的特征来自主干网络更低层,从而能更好地提取图像的细节信息,包括边缘、角点和纹理等。因此,在FPN底层添加一个大尺寸检测头,与骨干网络最底层的C2f进行特征融合,新增加的分辨率为160×160的检测头能提供更高的分辨率,捕捉更多的细节信息,可更加有效地检测水下模糊的鱼类目标个体。

1.3 ECAM注意力机制的添加

为了降低模糊背景对鱼群检测造成的干扰,采用ECAM注意力机制,使模型聚焦于图像中特定的感兴趣区域,抑制冗余和干扰信息,提高特征表达能力。ECAM结构如图1所示,主要包括两个部分,分别是高效通道注意力模块(efficient channel attention block,ECAB)和协调空间注意力模块(coordinated spatial attention block,CSAB)。

图1 ECAM网络结构Fig.1 ECAM network structure

针对鱼群模糊造成的特征提取能力下降问题,ECAB使用通道注意力[22]学习不同特征通道之间的相关性,提高模型对重要特征的关注程度。为了避免降维操作带来的性能下降问题,ECAB通过自适应选择一维卷积核大小的方法,实现局部通道的高效交互,从而降低模型的复杂度。对于给定特征张量F∈RC×H×W(C为通道,H为高度,W为宽度),ECAB的输出Mc(F)为

Mc(F)=σ{C1[G(F)]}。

(1)

式中:G为全局平均池化;C1为一维卷积;σ为Sigmoid函数。

(2)

(3)

经分解操作后,得到编码空间信息的中间特征张量f,其计算公式为

f=δ[C2([Zh,Zw])]。

(4)

式中:[·,·]为拼接操作;C2为二维卷积;δ为非线性激活函数。

将f拆分后通过卷积变换得到注意力权重gh和gw,CSAB的最终输出Ms为

(5)

因此,给定特征张量F,ECAM的输出M(F)为

F′=Mc(F)⊗F,

(6)

M(F)=Ms(F′)⊗F′。

(7)

式中:F∈RC×H×W;⊗为逐元素相乘。

1.4 YOLOv8-Head-ECAM网络结构

YOLOv8-Head-ECAM模型结构如图2所示,在FPN中加入大尺寸检测头,捕捉鱼类个体的细节信息,然后使用ECAM注意力机制抑制模糊背景带来的干扰,增强模型的特征提取能力,有效提高了模型对模糊与遮挡目标的识别效果。

图2 YOLOv8-Head-ECAM网络结构Fig.2 YOLOv8-Head-ECAM network structure

2 养殖鱼群检测试验

2.1 数据集和数据增广

试验所用数据采集自大连天正实业有限公司大黑石养殖场红鳍东方鲀养殖车间,为了加大数据集样本间的差异性,去除了部分高度相似数据,得到600张分辨率为1 280×720的图像。

由于养殖环境中鱼群游动方向不固定,而摄像机拍摄角度单一,为了增加鱼群样本的多样性,对数据集进行水平、垂直和水平垂直混合翻转。通过数据增广后,数据集扩充1倍,共计1 200张分辨率为1 280×720的图像。按照7∶2∶1的比例随机划分数据集,得到训练集、验证集和测试集数量分别为840、240和120张,部分数据集翻转效果如图3所示。

图3 部分数据增强图像Fig.3 Partial data augmentation images

2.2 数据标注

在鱼类目标检测中,数据集的标注是一个关键的环节。传统的手工标注因主体理解和判断的不同,导致标注结果出现主观差异。本研究中数据标注由半自动化标注和人工微调两部分组成。首先,采用Li等[14]试验已标注的1 008张鱼群检测图像训练YOLOv8模型,再将本试验中所需1 200张未标注图像送入已训练好的YOLOv8模型进行数据标注,文件保存为.txt格式。在试验过程中发现,经过训练的YOLOv8模型能对图像中70%的鱼类个体实现精准标注,但对模糊和遮挡的目标存在错检和漏检问题。因此,对图像中剩余30%无法准确标注的个体,通过LabelImg标注工具进行人工微调。

2.3 试验环境和参数设置

对养殖鱼群检测模型的训练和测试均在同一环境下运行。试验所用的操作系统为Ubuntu 20.04,CPU型号为Intel(R)Xeon(R)Platinum 8255C CPU@2.50 GHz,GPU型号为Nvidia Geforce RTX 3080,显存10 GB,使用的深度学习框架为Pytorch 1.10.0,编程语言为Python 3.8,GPU加速库为CUDA 11.3。训练参数设置如下:批大小(batch size)为8,训练周期(epochs)为300轮,初始学习率(learning rate)为0.000 1。

2.4 评估指标

在模型检测精度方面,选取准确率(precision rate,P)、召回率(recall rate,R)和平均精度均值(mean average precision,mAP@0.5)作为评价指标;在模型检测性能方面,选取模型参数量(params)、检测速度(detection speed)分别作为模型大小、检测实时性的评价指标。计算公式为

P=PT/(PT+PF),

(8)

R=PT/(PT+NF),

(9)

(10)

(11)

式中:PT为正确预测为鱼的样本数;PF为错误预测为鱼的样本数;NF为未被预测为鱼的样本数;PA为精度均值;PmA为mAP,mAP@0.5为IoU阈值设置成0.5的平均精度均值;N为类别总数。

2.5 消融试验

为验证模型改进部分的有效性,设计了消融试验。试验方案如下:将Head模块和ECAM分别添加到YOLOv8中,命名为YOLOv8-Head和YOLOv8-ECAM,与同时添加这两个模块的YOLOv8-Head-ECAM模型进行对比。

试验结果如图4、表1所示,在YOLOv8中,分别添加检测头Head与添加注意力机制ECAM后均增加了模型的参数量,降低了模型的检测速度。这是因为检测头通常由一些卷积层和全连接层组成,添加检测头会加重模型的计算量;而添加注意力机制使得网络在多个层级中进行计算和调整,导致计算量和检测时间增加。而在YOLOv8模型中同时添加检测头和注意力机制,虽增加了计算时间,降低了检测速度,但提高了模型检测的准确性。YOLOv8-Head-ECAM模型的识别效果最好,与YOLOv8模型相比,准确率、召回率和平均精度均值分别提升了2.3%、1.7%和1.6%。

表1 添加Head与ECAM对模型检测性能的影响Tab.1 Effects of adding Head and ECAM on model detection performance

图4 YOLOv8与YOLOv8-Head-ECAM模型检测效果对比Fig.4 Comparison of detection effects between YOLOv8 and YOLOv8-Head-ECAM model

2.6 ECAM模块位置分析

为研究ECAM位置对检测效果的影响,设计了位置对比试验。将ECAM分别放在3个不同的位置,分别是Backbone的SPPF后、Neck的C2f中及Neck的C2f后。

试验结果如表2所示,与添加到Backbone相比,将ECAM添加到Neck处,模型取得了更高的准确率和召回率。这是因为Backbone网络主要提取图像底层特征,不能很好地获取鱼类个体的全局信息;而Neck网络利用Backbone网络的输出,能够更好地提取和融合特征。另外,将ECAM放在Neck的C2f后能够带来更显著的提升,因为将注意力机制添加到C2f模块之后,网络会对特征融合的结果进行更加精细的调整,使得模型能够更好地关注与目标相关的特征信息,从而进一步提高目标检测的精度。

表2 ECAM模块不同位置对模型检测性能的影响

2.7 模型对比试验

为验证算法对水下鱼群检测的效果,选择该领域内目前检测准确率较高的方法进行模型对比试验,对比模型分别是Li等[11]将先验知识融入YOLOv5中的水下群体目标检测模型KAYOLO,Li等[14]融入可变形卷积模块的水下群体目标检测模型DCM-ATM-YOLOv5,赵梦等[16]引入SKNet注意力机制的养殖鱼群检测模型SK-YOLOv5,以及韦思学等[18]使用通道非降维双重注意力机制的养殖鱼群检测模型ESB-YOLO。

试验结果如表3、图5所示,YOLOv8-Head-ECAM模型取得了最好的识别效果,虽然采用的对比模型都在一定程度上缓解了模糊、遮挡导致检测效果不佳的问题,但各自都存在着不足。KAYOLO模型利用先验知识增强待检测对象的特征,但模型检测结果过于依赖先验知识的质量和数量,当先验知识有噪声或数量少时,对模型的检测效果影响较大;DCM-ATM-YOLOv5模型采用的可变形卷积模块,由于缺乏有效的学习指导,可能会重点关注非必要特征,造成特征提取能力下降;SK-YOLOv5模型由于采用了SKNet注意力机制,在基于全局上下文的特征融合后,会忽略局部细节信息,导致模糊鱼群个体的检测难度增加;ESB-YOLO模型在空间信息编码操作中,未考虑空间位置信息交互,导致鱼类个体无法精准定位。在检测速度方面,YOLOv8-Head-ECAM模型虽慢于DCM-ATM-YOLOv5和ESB-YOLO模型,但该模型通过添加大尺寸检测头和ECAM注意力机制,在速度满足实时性要求的情况下,不仅提取了模糊个体的细节信息,还增强了模型的位置感知能力,从而提高了水下养殖鱼群目标检测的准确性。

图5 不同模型检测效果对比Fig.5 Comparison of detection effects among different models

2.8 公开数据集的模型检测性能对比

为了验证算法的鲁棒性,从中国农业人工智能创新创业大赛鱼类数据集中随机选取2 420张图像,按照7∶2∶1的比例划分数据集,与KAYOLO、DCM-ATM-YOLOv5、SK-YOLOv5和ESB-YOLO模型同时展开试验,进行模型性能对比。

试验结果如图6、表4所示,YOLOv8-Head-ECAM的准确率、召回率和平均精度均值均高于其他模型,表明本研究中提出的添加ECAM模块与改进Head模块的YOLOv8-Head-ECAM模型具有较强的鲁棒性。

表4 公开数据集的模型检测性能对比

图6 公开数据集的模型检测效果对比Fig.6 Comparison of model detection effects on public datasets

3 讨论

3.1 添加检测头对模型检测性能的影响

将特征金字塔网络结构引入YOLO模型中,能更好地捕捉不同尺度目标的细节信息,但考虑到每个检测头的尺度范围是固定的,对于小尺度目标无法准确地定位边界框,一般通过增加大尺度检测头来增强对小目标的感知能力。陈卫彪等[24]提出的基于深度可分离多头网络结构的目标检测方法DSM-YOLOv5,在YOLOv5模型中增加一个分辨率为160×160的小目标检测头,并将其与高层网络进行残差连接,有效地解决了传统无人机航拍图像目标检测算法存在漏检率高、检测成功率低和模型体积大等问题,DSM-YOLOv5的mAP@0.5较YOLOv5s提高了3.45%。袁磊等[25]通过在特征金字塔中增加分辨率为160×160的检测层,提出了一种基于YOLOv5的道路目标检测改进方法CTC-YOLO,该方法增强了对小目标的学习能力,弥补了检测目标尺寸范围小的缺点,在公开数据集KITTI、CITYSCAPES及BDD100K上的试验结果表明,该方法的mAP@0.5相较基线模型分别提高了3.1%、2%和1.2%。本研究中,保留YOLOv8原有的3个检测头,在FPN底层添加一个大尺寸检测头,与骨干网络最底层的C2f进行特征融合,新添加的分辨率为160×160的检测头能提供更高的检测分辨率,捕捉更多的细节信息,更加有效地检测水下模糊的鱼类目标个体。

3.2 使用注意力机制对模型检测性能的影响

引入注意力机制的方法能有效减少背景干扰,使模型更好地关注目标区域。祝志慧等[26]在主干网络加入卷积注意力模块CBAM[27],提出一种基于改进YOLOv7模型的复杂环境鸭蛋检测方法,在干扰、遮挡等复杂环境下,该方法能够加强网络信息传递,提高模型对特征的敏感程度,减少复杂环境对鸭蛋的识别干扰,与YOLOv7相比,改进YOLOv7模型的F1值提高了7.6%。 齐向明等[28]通过引入SimAM注意力机制[29],提出了一种小目标检测算法,有效地解决了图像检测中出现的相互遮挡、背景复杂和特征点少的问题,在公开数据集VOC2007+2012的试验结果表明,与原始算法相比,mAP@0.5提升了3.35%。蔡竹轩等[30]为了较好地关注到目标信息,增强相关通道的特征表达,在空间金字塔池化层前置入有效通道注意力机制ECA[31],通过不降维的跨通道交互,增强了相关通道的特征表达并降低了性能损耗,从而提高了对水稻稻穗的检测精度。本研究中,在特征融合后使用ECAM注意力机制,能够忽略模糊背景对鱼类个体的影响,聚焦鱼类的关键特征,检测精度比原来的模型有所提升,这与上述研究网络模型改进的思想一致。

4 结论

1)本研究中,提出的基于YOLOv8的养殖鱼群检测模型,通过增加大尺寸检测头,捕捉鱼类个体的细节信息,增强了模型对模糊目标的识别能力。

2)本研究中,在YOLOv8模型的基础上,提出通道非降维与空间协调注意力机制ECAM,使模型聚焦于图像中特定的感兴趣区域,降低了模糊背景对鱼群个体检测造成的干扰,从而提高了特征表达能力,提升了检测的准确性。

3)本研究中,提出的YOLOv8-Head-ECAM模型可以检测模糊、遮挡的鱼群,平均精度均值、准确率和召回率分别达到了96.6%、94.2%和92.4%,与已有检测效果较好的水下鱼群检测模型相比,该方法具有更好的检测性能,进一步提高了鱼群检测的有效性。然而,本研究中提出的算法主要针对摄像头位于水下的鱼群检测,当摄像头处于水上时,如何识别反光区域的养殖鱼目标是未来有待研究解决的问题。

猜你喜欢
鱼群注意力卷积
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
鱼群漩涡
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
基于改进鱼群优化支持向量机的短期风电功率预测
基于人工鱼群算法的光伏阵列多峰MPPT控制策略
多子群并行人工鱼群算法的改进研究