基于改进YOLOv7的网箱网衣破损识别方法

2023-08-22 11:04俞国燕苏锦萍陈泽佳陈帅兴陈其菠吴振陆
渔业现代化 2023年4期
关键词:网衣精度特征

俞国燕,苏锦萍 ,陈泽佳,陈帅兴,陈其菠,吴振陆

(1 广东海洋大学机械工程学院,广东 湛江 524088;2 广东海洋大学数学与计算机学院,广东 湛江 524088;3 广东省海洋装备及制造工程技术研究中心,广东 湛江 524088)

拓展海洋经济发展空间,推进海洋渔业向深远海养殖发展成为必然选择[1-2],但大型深远海养殖设施会因网衣破损引起跑、漏鱼而造成巨大经济损失[3-5],故实现网衣破损的精准实时识别具有重要的研究价值和现实意义。

为突破利用专业人员下潜排查这一复杂、危险的传统网衣破损检测方式,国内外学者纷纷开展研究。常用的方法有嵌入检测法[6]、声呐检测法[7]和图像分析法[8]。由于嵌入检测法会缩短网衣使用寿命,而声呐检测法会因鱼群游动影响而出现误检,故通过水下摄像头进行图像采集,并使用目标检测算法识别图像中损伤区域的图像分析法成为近年来的研究热点。Betancourt等[9]提出的根据网格节点的分布来确定网衣是否损伤;Zhao等[10]提出的根据网孔面积计算特征梯度直方图来确定损伤在网中的位置,但所提方法在网衣随浪流动发生变化的复杂环境下检测效果不佳;Liao等[11]采用改进的多尺度融合算法和MobileNet-SSD目标检测框架进行实时检测,但对小面积的损坏存在误检的现象;陈鑫等[12]使用Faster R-CNN网络模型对网箱网衣破损进行检测具备了一定的检测精度,但检测速度还需要进一步提高。

随着深度学习的发展,目标检测算法主要分为只需一次提取特征即可实现目标检测的一阶段(One-stage)和基于候选区域进行目标检测的两阶段(Two-stage)检测算法。其中,一阶段目标检测因其简单高效、适合工业应用而被广泛使用,典型的有以速度著称的SSD[13]和YOLO系列算法[14-19]。在不同版本的YOLO算法中,性能较好的有专门用于工业应用的YOLOv6网络、更快更强以及更高的标签分配和模型训练效率的YOLOv7网络。

本研究提出一种基于YOLOv7的改进算法。通过评估指标对改进Backbone网络和Neck网络在提升破损网衣的检测精度、速度和缩小模型尺寸实现部署的灵活性进行分析与探讨,并将其检测结果与其他目标检测模型的检测结果进行比较以评估该模型的性能。

1 图像数据采集与预处理

1.1 图像采集

本研究所用的网衣破损数据集来源于广东省湛江市的开放海域中,通过手持摄像机对自制试验网箱装置进行拍摄。网箱装置长105 cm、宽97 cm、高86 cm,由铝材搭建框架,上方加浮力块和不同破损状态、位置随机分布的大、小网目两种网衣组成,结构如图1所示。

图1 自制的网箱图

对一天不同时间段的网衣破损图像进行采集,设备采用索尼机芯传感器的360°旋转水下摄像头,在5~30 cm的拍摄距离下分别选择多种角度、深度进行视频拍摄。采用视频截帧的方式获得网衣破损图像(见图2)。通过人工清洗获得网衣破损图像 1 250张,并将分辨率调整为640×640像素,格式为JPG。在数据集划分上,按照9∶1将所得数据集随机分为训练集(1 125张)和测试集(125张)。

图2 采集到的网衣破损图像

1.2 图像预处理

使用labelImg工具对破损网衣进行人工标注,其标注界面如图3所示。在labelImg界面中,先设定好数据集样本与目标样本文件目录,并给定对象唯一的broken_net标签。标注后目标信息保存为与图像同名的 XML文件,其内容包含当前图像各目标的标签信息以及绘制框左上角与右下角坐标信息等。

图3 破损的网衣人工标注图

2 目标检测模型优化

2.1 目标检测模型

随着一阶段目标检测算法的发展,相较于SSD,YOLO不仅在特征提取层使用了更高分辨率的特征图,可以更好地检测小目标,而且使用来自不同维度的特征进行检测和定位,在检测精度上更有优势,因此其应用越来越广泛。YOLO系列算法已成功用于水下生物的检测,如郑宗生等[20]通过改进YOLO v4模型可以快速准确地检测到鱼的位置和类别;Al等[21]提出了YOLO-Fish不仅减少对小鱼的错误检测,还在动态环境中检测鱼类外观;Xu等[22]针对复杂的水下环境和海洋底栖动物的特点,提出一种密集小规模海洋底栖动物的定量检测算法MAD-YOLO。这些算法在不同程度上都提高了目标检测的性能,为网衣的破损检测奠定了基础。

网衣破损通常是微小的单根网线断裂,如果没有及时发现并修补则会演变成狭长撕裂和大面积不规则破洞。针对这一特性,目前YOLO系列较新算法YOLOv7对网络结构、特征提取等方面进行了优化,不仅通过采用ELAN网络架构(图4),控制最短最长的梯度路径,使得网络可以有效地学习微小的单根网线断裂的特征,还引入模型重参数化可提高对网衣破损的检测能力,防止没有及时发现并修补而演变为狭长撕裂和大面积不规则破洞,极大地促进了本试验采用YOLOv7为基础网络对网衣破损进行研究。

图4 ELAN结构图

因为640×640的图像大小可以在保证足够物体细节信息的同时加速模型的训练和推理,而1280×1280的图像大小更耗费计算资源,可能会导致过拟合问题。所以分别对640规格图像的YOLOv7和YOLOv7-X进行训练,从表1可知,YOLOv7模型的参数量、GFLOPs、层数分别占YOLOv7-X模型的51.4%、54.9%、86.4%,ap、推理时间和尺寸分别比YOLOv7-X模型降低0.8个百分点、4.1 ms和67.3MB。因此,在综合考虑网络的检测精度、速度和轻量化要求后,确定改进YOLOv7网络模型,实现智能化网箱网衣破损检测。

表1 YOLOv7网络模型指标参数

2.2 YOLOv7网络架构

YOLOv7架构主要由Input、Backbone、Neck和Prediction网络组成,分别用于网箱网衣的输入,网衣破损特征提取、图像特征融合和目标预测。本研究主要对Backbone、Neck网络进行改进(图5)。

图5 YOLOv7-C3NeHX网络结构图

2.3 模型构建及优化

2.3.1 Backbone网络的改进

网衣网孔是由网线围成分布规律的多边形,而破损处围出的是不规则的多边形,分布不规律,其特征与网目的特征十分相似,且网衣会随浪流动,检测时存在较大的难度。虽然YOLOv7较YOLO系列的其他版本在速度、准确率、扩展性和部署性等方面都有较大优势,但针对网衣破损图像特征的特殊性及位置的流动性,当存在多个目标还是会出现漏检的现象,故需要对基础的检测框架进行改进以增强对网衣破损的检测。本研究将Backbone网络的第4个ELAN替换为C3_HB(图6),其主要是使用了HorBlock模块中的gnConv(图7)在执行空间交互期间通过逐渐增加通道宽度,实现有限复杂性的高阶交互,以提取出更多的网衣破损特征信息;将自注意力中的二阶交互扩展到任意阶,且完全继承标准卷积的平移等效性,避免局部注意力带来的不对称性,使模型可以更好地处理不同方向和角度的特征,以解决网衣破损特征不明显且随浪流动难以识别的问题。

图6 C3_HB结构图

图7 gnConv结构图

C3_HB模块的主要功能是:首先将初始的输入分别送入2个分支进行卷积操作,其中分支1再与HorBlock模块相连;接着通过Concat操作进行分支1、2输出特征图的深度连接;最后经过CBS层得到C3_HB的输出特征图。

因网衣破损不及时发现导致的养殖鱼群大量逃逸会造成经济损失,亦可能影响生态平衡,故模型的检测速度也很关键。为提高破损网衣的检测速度,将Backbone网络的第一个ELAN替换为C3_NeB(图8),使用了ConvNeXtBlock模块一方面采用深度可分离卷积以降低参数量和运算成本,以及通过减少激活函数以减少频繁做非线性投影对网络特征信息传递的影响;另一方面stem部分用步长为4的4×4卷积使滑动窗口不再相交,每次只处理一个patch的信息,以通过减小输入参数量来减少计算量。

图8 C3_NeB结构图

2.3.2 Neck网络的改进

实际应用中,检测模型不仅要满足一定的精度、速度需求,还需要满足模型封装移植时内存占用低的要求,本试验将Neck网络中4处使用ELAN_2C(图9)的地方替换为C3_X(图10),采用Bottleneck模块使用1×1卷积核用于降低特征维度以减少参数量来缩小尺寸的特点,使模型达到轻量化。并在两个分支进行Concat操作后再进行卷积时,使用性能更佳的Mish激活函数,使训练效果更稳定、准确。因此改进后模型权重参数量有效降低,尺寸缩小,实现网衣破损检测的轻量化设计,为后期更好地将模型部署到硬件设备中做准备。

图9 ELAN_2C结构图

图10 C3_X结构图

网衣通常是透明或半透明的,具有纹理和孔洞结构,使物体边缘和纹理信息比较模糊或不明显,和普通目标检测图像不同,以及长时间浸泡于海水中易附着贝类、藻类等生物,导致破损处不易被发现。针对这一难点,本试验将无参注意力SimAM(图11)引入网络架构中,以更好地提取网衣破损的特征。该模块采用能量函数选择操作,避免了过多的结构调整,无需额外参数为特征图推导出3D注意力权值,有效发掘每个神经元的重要性,更好聚焦主体目标,进一步提升输出特征图中明显的特征,有效地解决了检测模型在网衣材质和附着物影响下,难以提取破损特征和实现有效的网衣检测的问题。

图11 SimAM的3D注意力权重

3 模型训练与评价

3.1 试验方案设计

(1)对比YOLOv7、YOLOv7-C3_HB、YOLOv7-C3_NeB、YOLOv7-C3_X、YOLOv7-MP_SimAM、YOLOv7-C3NeHX模型的试验结果,分析各改进模块的有效性,具体设计如下:1)对每个模型均训练400轮,设置相同的初始学习率、损失函数等超参数。2)从每个模型训练生成的权重集合中选取最优的权重文件,根据评估指标比较改进模型的提升程度。

(2)SSD算法是一种直接预测边界框的坐标和类别的目标检测算法,通过密集的位置预测来得出目标的位置和类别信息,不需要像两阶段目标检测器那样先生成候选区域,再对这些候选区域进行分类和回归,从而具有较快的检测速度。YOLOv6在网络结构、训练策略等算法层面进行了多项改进,具有较简单的网络结构和训练流程,是一种硬件友好的目标检测算法,便于在不同的工业应用场景中应用。YOLOv7提供了更快更强的网络架构和更有效的特征集成方法、更准确的目标检测性能、更鲁棒的损失函数以及更高的标签分配和模型训练效率。在主流算法中,以上算法分别在检测速度、模型应用和检测精度方面是典型的代表。通过与速度快著称的SSD模型进行对比验证本模型在检测速度上具有的优势、与面向工业应用且部署友好的YOLOv6模型进行对比验证本模型在实际应用场景的可行性、与原YOLOv7模型进行对比验证本模型改进的可行性。随后再进一步与Zhao等[10]、Liao等[11]、陈鑫等[12]提出的其他网衣破损检测模型进行对比以验证本模型在本领域对检测精度、速度和模型轻量化取得最佳的平衡。具体设计如下:1) 根据相关指标对比每个模型训练生成的权重文件。2)以不同条件下的目标作为控制变量,对比7种算法的检测效果,验证了本研究提出的模型的合理性和有效性。

3.2 模型评价指标

使用不同的评价指标可以客观、准确地评估网络的检测性能[23-26],综合网衣破损识别速度快、准确率高,抗水下环境能力强,部署模型灵活的要求,本研究从不同角度对模型识别效果进行评价,分别是以下4种关键指标和模型参数量(Params)、GFLOPs、推理时间、模型尺寸、检测帧率(Frames Per Second,FPS)。

(1) 精确率(Precision)反映了分类器对正样本的准确程度,精确率越高表示网衣破损错检的数目越少,公式如(1)所示:

(1)

式中:p表示精确率;tp表示被模型正确识别的网衣破损数量的正样本;fp表示被模型识别干扰环境为网衣破损数目的负样本。

(2) 召回率(Recall)反映了分类器对正样本预测的效果,召回率越高表示网衣破损漏检的数目越少,公式如(2)所示:

(2)

式中:r表示召回率;fn表示网衣破损数目被模型识别为干扰环境的正样本。

(3)平均精度 (Average Precision,ap)表示精确率与召回率曲线所围成的面积,反映了分类器对正样本的识别准确程度和检测到正样本能力之间的权衡,值越高代表分类器性能越好,对网衣破损的检测更趋近于理想效果,公式如(3)所示:

(3)

式中:ap表示平均精度。

(4)F1值,即精确率与召回率的一个平衡点,能同时考虑到精确率和召回率。F1值越高,代表模型越优,对网衣破损的检测效果越好,公式如(4)所示:

(4)

式中:F1表示精确率与召回率的一个平衡点。

3.3 网络训练

试验使用64位Ubuntu 18.04.6 LTS操作系统,GPU采用RTX3090型显卡,基本频率为3.90 GHz的Intel(R) Xeon(R) W-2245 CPU。通过Anaconda环境管理器安装相关工具包,在Pycharm编译器实现Python代码编辑,同时在PyTorch1.10.2架构上进行模型的训练和测试。

4 结果与讨论

4.1 训练结果

YOLOv7-C3NeHX模型的损失曲线如图12所示,损失值在前50轮快速下降,训练到270轮之后,损失值曲线基本趋于拟合。结合图13可知,模型的平均精度随着训练轮数的增加不断上升,但在第270轮之后,模型的训练精度反而随迭代次数的增加而下降。综合考虑,本试验将训练第270轮结束后输出的模型作为网衣破损识别的识别模型。

图12 YOLOv7-C3NeHX模型的损失曲线图

图13 YOLOv7-C3NeHX模型的平均精度值曲线图

4.2 消融试验结果

为明确YOLOv7-C3NeHX算法中各模块对目标检测性能的影响,验证各模块的有效性,采用消融试验对数据集进行训练,结果如表2所示,其中YOLOv7-C3_HB表示将Backbone网络的第四个ELAN替换为C3_HB,YOLOv7-C3_NeB表示将Backbone网络的第一个ELAN替换为C3_NeB,YOLOv7-C3_X表示使用C3_X替换掉Neck网络中的ELAN_2C,YOLOv7-MP_SimAM表示在改进后网络的第52、58层将卷积层改为SimAM模块,YOLOv7-C3NeHX表示将所有改进都加入到模型中。

表2 消融试验结果

从表2的数据可知,加入不同的模块均可取得理想的效果。加入C3_HB后,ap提高0.9个百分点,提高了模型的检测精度;加入C3_NeB后,GFLOPs只占原模型的40.8%,推理时间减少2.2 ms,提高了模型的检测速度;加入C3_X后,模型尺寸占原模型的83.2%,参数量约减少6.3×106,压缩了模型尺寸。使用SimAM后,ap提高0.2个百分点,F1值提高1个百分点,发掘了每个神经元的重要性,从而进一步提升输出特征图中明显的特征。将所有改进都加入模型后,ap和F1值分别提高3.1和3个百分点,GFLOPs占原模型的38.2%,推理时间和模型尺寸分别降低2.4 ms和4.3 MB,可以最大限度地结合各模块优点来提升模型的检测精度、速度,同时有效地实现网络的轻量化。

4.3 不同目标检测算法检测效果对比

为验证本研究所构建的YOLOv7-C3NeHX网络的性能,分别与速度著称的SSD、面向工业应用部署友好的YOLOv6、更快更强的原YOLOv7和Zhao等[10]、Liao等[11]、陈鑫等[12]提出的其他网衣破损检测模型进行对比结果如表3所示。

表3 不同目标检测网络检测性能对比

由表3可知,YOLOv7-C3NeHX网络的ap最高,比原YOLOv7网络提高3.1个百分点,比SSD、YOLOv6、Zhao等[10]、Liao等[11]和陈鑫等[12]所提算法分别提高7.88、47.4、82.53、35.3和18.65个百分点,说明使用HorBlock模块有利于提取出更多的网衣破损特征信息。针对模型的检测速度,YOLOv7-C3NeHX模型达到了232.56FPS,除了比YOLOv6低,较SSD、YOLOv7、Zhao等[10]、Liao等[11]和陈鑫等[12]提升了163.75FPS、83.31FPS、211.78FPS、221.26FPS、186.35FPS,说明ConvNeXtBlock模块通过减小输入参数量来减少计算量的有效性。对于模型尺寸,YOLOv7-C3NeHX模型的尺寸为70.6MB,比YOLOv6、Liao等[11]所提算法大32.5MB、44.6MB之外,分别占SSD、YOLOv7、陈鑫等[12]所提算法的74.32%、94.26%、12.91%,说明了采用Bottleneck模块的可行性。在未参与训练的测试集中进行检测,本文所提的YOLOv7-C3NeHX模型漏检率最低,说明SimAM注意力模块的嵌入大大降低了漏检率。

综上,所提YOLOv7-C3NeHX网络不仅能满足检测精度、速度的需求,且实现模型的轻量化。

4.4 讨论

对比水面目标检测[27],本研究的难度在于水下环境通常比较复杂,图像质量会受噪声和失真等影响,可见度低,因此对目标边缘的提取准确率低;对比泳池溺水行为检测[28],泳池水清澈且目标较大,而远海的水质较为浑浊且网衣断裂处微小,因此增加了检测的难度;对比水果检测[29-31],网衣破损的位置会随浪流动,故对实时性检测的要求更高。针对以上存在的难处,YOLOv7-C3NeHX算法使用gnConv结构和SimAM模块加强对关键特征的提取从而获得了较高的精度检测;同时使用深度可分离卷积,并减少激活函数和改变卷积步长获得了较快的速度检测目标。

5 结论

YOLOv7-C3NeHX算法用于破损网衣的检测,该算法在检测精度、速度和模型轻量化达到最好的平衡,综合性能更好。其平均检测精度为88.1%,检测速度达到232.56FPS,模型尺寸占原YOLOv7的94.3%。针对复杂的远海环境,YOLOv7-C3NeHX算法能更好地对破损网衣的关键特征进行提取,从而更精确地识别出网衣的破损。对比了这个领域的其他检测模型,其检测精度、速度,YOLOv7-C3NeHX算法取得了更佳的检测效果。视觉系统是智能网衣修补机器人实现高效补网的关键技术之一,其检测精度、速度、模型尺寸等仍有一定提升空间,后续将对模型进一步优化,以达到更好的检测性能和轻量化效果,从而更好地部署到机器人中。

猜你喜欢
网衣精度特征
遮蔽效应下双平面网衣和圆形网衣的水动力性能
基于CFD的刚性养殖网衣流场数值模拟及不确定度分析
如何表达“特征”
不忠诚的四个特征
基于DSPIC33F微处理器的采集精度的提高
抓住特征巧观察
辽墓出土网衣编法三例
辽墓出土铜丝网衣修复与复原报告
GPS/GLONASS/BDS组合PPP精度分析
改进的Goldschmidt双精度浮点除法器