基于改进YOLOv5的鱼群小目标检测优化算法

2024-01-04 23:58汪沛洁谌雨章王诗琦周雯
湖北大学学报(自然科学版) 2024年1期
关键词:鱼群注意力精度

汪沛洁,谌雨章,王诗琦,周雯

(湖北大学计算机与信息工程学院, 湖北 武汉 430062)

0 引言

随着世界各国对海洋资源利用水平的不断提升,世界范围内的学者更加关注水下图像检测问题。如何利用深度学习方法替代鲁棒性差、检测精度低的传统目标检测算法,从而达到更高的检测速度和检测精度,逐渐成为研究热点。目前,通用的目标检测技术虽然比较成熟,但在不同的水下场景中,鱼类目标的种类、形状、大小、数量等存在差异,对检测精度和速度的要求也不同,它给水下环境中的目标检测任务带来了挑战。目前,基于深度学习的鱼群目标检测已经取得了较高的准确率,然而,它在复杂的水下环境中还存在着很多挑战,主要有以下几个方面:

1)现有的目标检测算法是针对中/大目标而设计的,对于水下小目标的检测的效果较差。

2)小目标易受环境干扰,水下的条件复杂,光照不均匀导致小目标的特征信息难以被网络检测到。

3)各鱼群尺寸大小不一,小目标鱼群的可利用像素较小,网络很难提取到较好的特征信息,并且随着网络层数的增加,小目标特征信息及位置信息极易丢失,从而导致小目标鱼群目标的漏检。

近年来研究人员在水下小目标鱼群检测方面做了大量的工作,并取得了一定的成果。在实际自然场景中,由于光线、水质、水下环境等自然条件的原因,水下采集的图片分辨率低,且鱼群在图像中容易与背景颜色融为一体,在这样的条件下检测鱼群是一个较大的挑战。当前,基于深度学习的目标检测方法已经吸引了大量研究学者在此方向上进行研究,并在很多方面得到了进一步的扩展、完善和应用。基于深度学习的目标检测方法主要分为两类:两阶段(Two-stage)目标检测算法和一阶段(One-stage)目标检测算法。

两阶段目标检测算法是将检测问题划分为两个阶段,首先产生候选区域,然后对候选区域进行特征提取、域分类和位置调整。这类算法的代表有R-CNN[1]及其变体Fast R-CNN[2]、Faster R-CNN[3]和R-FCN[4]等。例如,袁红春等[5]将MSRCR算法与Faster R-CNN二次迁移学习算法引入到小规模水下鱼类识别中,实现了鱼类目标的检测。Li等[6]通过改进区域卷积网络卷积层的结构,构建了检测鱼类目标的神经网络,在公开数据集上获得了较高的平均精度。一般来说两阶段算法具有较高的检测精度,但检测速度较慢。一阶段目标检测算法实现了检测和分类同时进行,通过回归直接输出物体的类别概率和位置坐标值。YOLOv1[7],YOLOv2[8]、YOLOv3[9]和SSD[10]等。例如,Xu等[11]使用YOLOv3模型检测三种不同的鱼类数据集,实现了仅使用两个数据集进行训练,对所有三个数据集进行测试,获得了平均0.539 2的识别准确率; Sung等[12]基于YOLO的架构实现了一个包含24个卷积层和两个全连接层的CNN结构,对自定义鱼群数据集进行了检测;王文成等[13]提出了一种改进SSD的鱼类目标检测算法,具有较高的准确率。一阶段目标检测虽然检测速度较快,但是检测精度通常低于两阶段算法。

基于深度学习的鱼类目标检测算法具有更高的精度和鲁棒性,但检测精度和速度仍有待提高。因此,结合深度学习目标检测方法研究小鱼群目标检测算法,对提高鱼群图像检测的精度和速度具有重要的研究价值。因此,本研究针对水下小目标鱼群检测任务,展开关于在情况复杂的水下的小目标鱼群检测研究,以实现水下小目标鱼群的检测。

1 基于多头自注意力机制和内卷算子的YOLOv5算法

1.1 YOLOv5算法YOLOv5[14]于2020年5月提出,是一个高性能、通用的目标检测算法。YOLOv5包含4个部分:Input部分、Backbone部分、Neck部分以及Output部分。YOLOv5结构图如图1所示。

图1 YOLOv5结构图

1.1.1 Input部分介绍 Input部分对输入的图片进行了Mosaic数据增强、图片尺寸处理、自适应锚框设计系列操作。Mosaic数据增强技术丰富了样本的多样性,大大降低了模型进行多样性学习的难度,该方法非常适用于小目标检测,满足本文水下小鱼群检测的需要[15]。图片尺寸处理操作是将输入图片调整为网络接受的标准尺寸,再输入进网络模型中进行训练。自适应锚框设计是指网络在初始锚框的基础上输出预测框并与真实框进行比较,计算两者差距并反向更新,不断迭代调整网络参数。

1.1.2 Backbone部分介绍 Backbone部分是主干网络, 其作用是提取特征,由Focus模块和CSP结构组成。其中,Focus模块为YOLOv5独创的结构,其作用为对进入网络的图片进行切片操作,提高卷积速度。如图2所示,图像的像素尺寸与输入网络前相比缩小了一半,减少了卷积的计算量,提高了卷积运算速度,最重要的是同时保留了图像完整的信息,但降低了网络的检测精度。本研究主要将Focus模块替换为Conv模块,以提高网络的检测精度。

图2 Focus模块结构示意图

YOLOv5版本使用了两种CSP结构,分别是CSP1_X和CSP2_X。Backbone网络中主要使用了CSP1_X结构,Neck结构中主要使用CSP2_X结构,新版YOLOv5中,将Bottleneck CSP(瓶颈层)模块转变为了C3模块,结构作用基本相同均为CSP架构,是对残差特征进行学习的主要模块,其结构分为两支,如图3所示。

图3 C3模块结构示意图

1.1.3 Neck部分介绍 Neck部分是网络中间的衔接部分,起到传递获取的特征融合信息的作用。Neck部分是FPN+PAN的结构,其结构如图4所示。FPN结构是自顶向下的,通过上采样和融合低层信息的方式得到预测的特征图。PAN是采用自底向上的对FPN进行补充的特征金字塔。

图4 Neck部分结构示意图

1.1.4 Output部分介绍 Output部分是输出,用来输出小目标识别的结果。YOLOv5中使用GIOU-loss作为损失函数来替换普通的IoU计算方法,有效解决了边界框不重合的问题。YOLOv5在性能上略低于YOLOv4,但比YOLOv4更灵活、更快,所以它有一个优势在模型部署。

1.2 多头自注意力机制注意力机制(attention mechanism)模仿了生物观察行为的过程[16],注意力机制可以快速提取系数数据的重要特征,通过对输入图像数据采用注意力机制,可以突出图片中目标的关键特征并抑制次要信息,进而提高整个神经网络模型的检测的效率和精度,同时也会促使模型学习中再次出现类似特征时将注意力放在该图像特征上,提高模型的学习及泛化能力[15]。注意力机制中存在查询矩阵Q、键矩阵K和值矩阵V。而自注意力机制(self-attention mechanism)是注意力机制的改进,其令Q=K=V,抑制了网络对外部信息的依赖,更关注数据或特征内部之间的联系[16],能够处理比常规卷积更大的感受野,提高模型的学习能力,并增强了神经网络的可解释性。

多头注意力机制(multi-head attention)的本质是在参数量总体不变的情况下,将查询Q、键K、值V三个参数进行h组拆分,每组拆分将参数映射到高维空间的不同子空间中执行注意力函数运算计算注意力权重, 从而能够从多个维度提炼特征信息[16],得到最终的输出,其结构如图5所示。多头自注意力以缩放点积注意力(scaled dot-product attention, SDA)为原理,如式(1)所示:

(1)

图5 缩放点积注意力和多头自注意力模块结构示意图

并行计算各个子空间的SDA,如式(2)所示:

(2)

融合所有子空间的注意力信息,如式(3)所示:

MultiHead(Q,K,V)=Concat(head1,…,headh)W0

(3)

1.3 内卷算子经典的卷积核具有空间不变性和通道独立性,但刘文婷等[16]提出的新的神经网络算子Involution(内卷算子)却与之相反。Involution的示意图如图6所示。

图6 Involution示意图

Involution核H∈RH×W×K×K×G包含Spatial和Channel的反向特征变换。是专门为对应坐标(i,j)的像素Xi,j∈RC定制的,但在通道上共享,其中C表示计算通道,G表示每个组共享相同的involution核的组数,卷积核的大小取决于输入特征映射的大小。利用involution核对输入进行乘加运算,得到involution的输出特征映射:

(4)

Involution核H的形状取决于输入特征映射X的形状,生成以原始输入张量为条件的Involution核,使输出核与输入核对齐。这里将核生成函数符号为φ,并将每个位置(i,j)的函数映射抽象为:

Hi,j=φ(Xψi,j)

(5)

从单个像素Xi,j跨越每个Involution内核Hi,j。每个像素ψi,j有核生成函数φ,其形式如式(6)所示:

Hi,j=φ(Xi,j)=W1σ(W0Xi,j)

(6)

其中,W0和W1代表两个线性变换,共同构成Bottleneck结构,σ表示批处理归一化后对两个线性变换的非线性激活函数BN和ReL U。基于以上优点,本研究将部分C3模块中引入内卷算子即C3Inv模块来替代部分原YOLOv5中的C3模块,这有利于捕获空间长距离信息和减少网络参数的数量。

2 改进算法的结构

YOLOv5目标检测算法本身是一个比较优秀的检测算法,目前国内外研究仍有很大的改进空间。参考前面提到的算法理论研究对YOLOv5算法进行了改进,得到改进的YOLOv5算法——INV-YOLOv5。其结构如图7所示,网络整体结构如表1所示。

表1 改进YOLOv5网络整体结构

图7 改进YOLOv5网络框架示意图

考虑到图像中存在占像素信息少的目标,更容易受到背景的影响,YOLOv5m模型算法在使用卷积网络检测样本时容易漏掉小目标的部分特征信息,从而致使小目标的检测精度不高,因此在主干模块中,将Focus模块替换为Conv模块,目的是提高网络的检测精度。C3模块被Involution参与的C3Inv模块所取代,部分C3模块被多头注意力机制参与的C3TR模块所取代,这有利于特征提取,可以捕获空间上更远距离的信息,告诉模型需要注意哪些位置和信息,进一步提高检测的准确率,可以减少网络参数量。同时,将Concat修改为加权的Weightconcat(加权的Concat),给特征图不同的权重然后再合并在一起,如式(7)所示:

(7)

(8)

3 实验结果与分析

3.1 数据集的选取与建立

3.1.1 数据集介绍 本文中使用的公开数据集有Labeled Fishes in the Wild数据集[17]和WildFish数据集[18]。Labeled Fishes in the Wild数据集是从部署在遥控车辆(ROV)上的摄像机系统记录的水下视频中提取的,它包括两类(鱼和非鱼)和1 329张图像。WildFish是鱼类检测和识别领域最大的数据集。WildFish由1 000种鱼类和54 459张图像组成,图片来自FishBase[19]、专业网站(如海洋中心和博物馆)和谷歌图像搜索。图片经过筛选、清洗以及标注等步骤,增加了许多小目标和密集目标的数量,可以提高对小目标和密集目标的检测率。图8所示为Labeled Fishes in the Wild数据集的分析可视化结果图示例,图8(a)中横纵坐标表示中心点x,y坐标的位置,图8(b)中横坐标width物体的宽,纵坐标height代表物体的高。最终得到的数据集总共有6 765张图片,将数据集按照按照8∶2的比例分为两部分:训练集和测试集。其中训练集5 412张图片,测试集1 353张图片。图9是来自两数据集的示例图像。

图8 数据集分析

图9 来自数据集的示例图像

3.1.2 数据集标记 经过LabelImg标注的数据集是PASCAL VOC格式的.xml文件,由于本研究使用了算法YOLOv5m,所以需要将其转换为YOLO格式的.txt格式文件,其公式如下:

x=(xmax+xmin)/dw

y=(ymax+ymin)/dh

w=(xmax-xmin)/dw

h=(ymax-ymin)/dh

(9)

.xml文件中物体位置坐标的左上角坐标和右下角坐标为xmax、xmin、ymax、ymin.dw、dh表示图片的高和宽。数据集标注示例如图10所示。

图10 数据集标注示例

3.2 实验配置本实验在Windows10操作系统中进行,采用Python语言编程实现,如表2所示,列举了实验硬件配置和所搭建的程序环境。

表2 改进YOLOv5识别小鱼程序环境

3.3 评价指标的选取本实验在Windows10操作系统中进行,采用Python语言编程实现,如表2所示,列举了实验硬件配置和所搭建的程序环境。

本实验使用精确率(Precision)、召回率(Recall)、平均精度AP(average precision)、平均精度均值mAP(mean average precision)来评价模型。其中,ture positives(TP) 是指将鱼群的图片识别成正样本;ture negatives(TN) 是指背景的图片没有被识别出来,或者是背景被正确分类成背景;false positives(FP) 是指将背景图片识别成了鱼群;false negatives(FN) 是指将鱼群的图片识别为背景[20]。

精确率(Precision)表示所有被识别出来的鱼群中正确识别的鱼群所占的比例:

(10)

召回率(Recall)是被正确识别出来的鱼群数量与测试集中所有的鱼群数量的比值:

(11)

平均精度AP(average precision)指的是以召回率Recall为横轴以精确率Precision为纵轴组成的曲线围成的面积,公式如下:

(12)

实验中平均精度均值mAP(mean average precisin)是指数据集中所有类别的平均精度的均值,公式如下:

(13)

其中,m表示测试集中的样本个数。

3.4 结果分析为了更好地展现该改进模型的优势,实验将改进的YOLOv5m算法即INV-YOLOv5算法与YOLOv5m、YOLOv4、SSD、CenterNet在Labeled Fishes in the Wild和WildFish两种数据集上进行对比,模型使用相同实验环境来进行训练、验证,并将实验结果进行分析。

表3所示为各个模型在数据集Labeled Fishes in the Wild上在mAP、Recall和实时检测FPS(frames per second)的对比结果。从表3 的实验结果可以看出,在Labeled Fishes in the Wild这个数据集上,INV-YOLOv5与YOLOv5m相比,mAP高出了6%,与YOLOv4、SSD、CenterNet相比,mAP提升了9.1%、10.8%和13.6%。

表3 数据集Labeled Fishes in the Wild实验数据

表4所示为各个模型在数据集WildFish上在mAP、Recall和实时检测FPS的对比结果。从表4 的实验结果可以看出,在Labeled Fishes in the Wild这个数据集上,INV-YOLOv5与YOLOv5m相比,mAP提升了14.5%,与YOLOv4、SSD、CenterNet相比,mAP均有提升,说明改进的YOLOv5算法INV-YOLOv5检测准确率优于目前先进算法,并且FPS相差不大。同时处理速度有较大提升。

表4 数据集WildFish实验数据

表5所示为各个模型在数据集Labeled Fishes in the Wild上复杂度对比的对比结果。从表5的实验结果可以看出,在数据集Labeled Fishes in the wild上YOLOv5检测算法中的YOLOv5m模型与一阶段检测模型SSD和YOLOv4还有CenterNet相比较,YOLOv5m属于轻量级的模型。本文中提出的方法在YOLOv5m轻量级的基础上更减少了模型的参数量,由原本的41.9 MB减少到了35.41 MB。

表5 不同网络复杂度对比

为了更直观地分析检测结果,图11可视化了YOLOv5m与INV-YOLOv5在Labeled Fishes in the Wild数据集上的检测结果。图12可视化了YOLOv5m与INV-YOLOv5在WildFish数据集上的检测结果。综合模型大小、mAP、FPS及可视化结果来看,本文中方法INV-YOLOv5在鱼群小目标检测上具有较好的性能。

图11 Labeled Fishes in the Wild数据集可视化结果

图12 WildFish数据集可视化结果

3.5 消融实验为了进一步验证改进算法的有效性,对算法所提的替换Focus模块、使用C3Inv、使用C3TR和使用Weightconcat模块等方法在WildFish数据集上设计了5组消融实验,每组实验所使用的环境和训练技巧相同。实验结果可从表6得到。其中YOLOv5m-A表示在原始YOLOv5m的主干网络中将Focus模块替换为Conv模块;YOLOv5m-B表示在YOLOv5m-A基础上将网络中一部分的C3模块替换为有Involution参与的C3Inv模块;YOLOv5m-C表示在YOLOv5m-B的基础上将网络中的另一部分C3模块替换为被多头注意力机制参与的C3TR模块;INV-YOLOv5表示本研究所提出的模型,在YOLOv5m网络的基础上同时替换Focus模块、使用C3Inv、使用C3TR和使用Weightconcat模块。通过对比平均精度可以看出,在原始YOLOv5m的主干网络中将Focus模块替换为Conv模块提高了模型4.8%的mAp,证明Conv模块能够提高网络的检测精度。提出的C3Inv模块让模型的mAp提升2.3%。C3TR模块对于特征提取有显著效果,mAP提高5.7%,证明该模块能够增强特征的表达能力,有利于特征提取捕获空间上更远距离的信息,告诉模型更需要注意哪些位置和信息,进一步提高检测的准确率。Concat修改为加权的Weightconcat(加权的Concat),给特征图不同的权重然后再合并在一起,能够丰富特征图的信息,对于模型检测的mAp提高1.7%。实验表明,对于模型检测小目标鱼群,所提方法都改善了对小目标的检测效果。

表6 INV-YOLOv5消融实验

4 结束语

INV-YOLOv5模型在Labeled Fishes in the Wild数据集和WildFish数据集上实验验证表明,该方法的平均精度(mAP)分别为81.7%和83.6%,通过综合分析认为可以实现对小鱼群目标的检测, 不仅拥有较高的识别率并且更加轻量化,模型大小与YOLOv5m网络相比减少了6 M(Mega)左右,达到了在复杂环境下对小目标检测的要求。根据分析结果,今后可在水下获取更多小目标鱼群影像,扩充数据集,进行补充训练,进一步提高识别率。

猜你喜欢
鱼群注意力精度
让注意力“飞”回来
基于DSPIC33F微处理器的采集精度的提高
鱼群漩涡
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
GPS/GLONASS/BDS组合PPP精度分析
基于改进鱼群优化支持向量机的短期风电功率预测
基于人工鱼群算法的光伏阵列多峰MPPT控制策略
改进的Goldschmidt双精度浮点除法器
多子群并行人工鱼群算法的改进研究