融合SKNet与YOLOv5深度学习的养殖鱼群检测
2022-05-23赵梦于红李海清胥婧雯程思奇谷立帅张鹏韦思学郑国伟
赵梦,于红*,李海清,胥婧雯,程思奇,谷立帅,张鹏,韦思学,郑国伟
(1.大连海洋大学 信息工程学院,辽宁省海洋信息技术重点实验室,辽宁 大连 116023;2.设施渔业教育部重点实验室(大连海洋大学),辽宁 大连 116023)
工厂化养殖是现代渔业发展的趋势,精准养殖是工厂化养殖的方向,鱼群目标检测是精准养殖的基础[1-2]。准确检测养殖池中的鱼群,可为鱼类行为分析、鱼类生长状况测量和鱼病诊断提供支撑[3-4]。机器视觉为水下鱼群目标检测提供新的解决方法[5],传统机器视觉方法是通过图像中鱼类的轮廓特征评估一个阈值对鱼群进行检测[6],这种方法精度较高,但需要由有经验的专家总结有效的鱼类特征,检测效果依赖于专家的经验[7]。当养殖池塘中鱼类的种类较少且专家假设的有效特征高度一致时,这种方法效果较好。随着鱼群种类和数量的增多,鱼群的持续运动也会导致鱼的重叠和形状变化,传统机器视觉方法不能有效识别形状变化的鱼,从而导致检测效果降低。
与传统机器视觉方法相比,深度学习能够自动提取图像中的特征,可根据养殖场景的需求,通过不断学习预测值与真实值间的差异,得到有效解决方案,具有较强适应性[8-9]。Girshick等[10-11]提出的RCNN(region-based CNN)和Fast RCNN是较早基于深度学习的目标检测算法,并在目标检测领域中取得了重大突破,但该类算法无法满足实时性检测的要求;Ren等[12]在Fast RCNN基础上结合区域候选网络RPN(region proposal network)共享卷积层特征提出了Faster RCNN,解决了实时性这一问题,并提升了检测精度。为使检测速度更快,Redmon等[13-15]提出了YOLOv1~YOLOv3目标检测算法,该算法在识别的基础上进一步进行定位,采取直接预测目标边界框和类别概率的方式对物体进行预测。在水产养殖领域,研究人员也采用基于YOLO的算法对鱼群进行检测,如Xu等[16]和Liu等[17]分别训练了一个YOLO架构,实现了在水下视频中准确识别鱼群的目的。为进一步提升检测精度,Bochkovskiy等[18]将YOLOv3算法从数据处理、主干网络和损失函数等各个方面进行优化,在此基础上提出了 YOLOv4算法;俞国燕等[19]基于YOLOv4算法提出一种鱼类检测的改进算法,该算法采用Resblockbody1模块,提高了目标框的定位精度。为进一步提升检测效果,王书献等[20]将YOLOv5用于金枪鱼延绳钓电子监控系统浮球及金枪鱼目标检测,取得了良好的效果,但该方法在真实场景下目标检测鲁棒性较低。Konovalov等[21]提出了基于卷积神经网络的图像分类模型,用于在海洋领域存在多目标的环境中检测鱼群,该模型在清晰无噪声的合成海洋多目标图像上可以准确检测到鱼群,但未考虑到浑浊水质下模糊图像的鱼群检测情况。针对复杂环境下的目标检测问题,Fan等[22]提出了在水下成像模糊、尺度变化和纹理失真的情况下,海胆和扇贝等小目标的检测方法,该方法引用感受野增强模块RFAM(receptive field augmentation module)来丰富特征信息,对小目标检测效果较好,但该模型对鱼类特征信息不敏感,不能有效检测本研究数据中的鱼群。Li等[23]提出的视觉注意力机制SKNet(selective kernel networks)解决了特征信息不敏感问题,提升了特征提取能力,但在真实养殖环境下,还存在水下成像模糊、失真等影响鱼群检测准确率的问题。为解决上述问题,需要探究结合视觉注意力机制的目标检测方法,确保在提升图像清晰度的基础上,进一步加强网络对鱼群特征的提取能力,着重学习鱼群特征,提高养殖场景下鱼群检测的准确率。
本研究中,针对真实生产环境下养殖鱼群图像模糊、失真等特点,提出融合SKNet与YOLOv5的养殖鱼群检测方法,将SKNet视觉注意力机制融合到YOLOv5的Backbone端构成关注模糊鱼类信息的特征提取网络,以获取图像中模糊鱼类的特征并加强网络对模糊鱼体的识别能力,提高养殖场景下鱼群检测的准确率。
1 SK-YOLOv5模型的构建
卷积神经网络可从复杂的背景中区分前景对象,但在真实养殖环境中,水下拍摄的鱼群图像模糊不清晰,严重影响网络提取特征的能力,导致鱼群检测和识别准确率较低。为提升检测效果,采用UNet[24]对水产养殖鱼群图像进行预处理,但在预处理过程中会丢失鱼群特征等有用的信息。为尽可能多地利用鱼群特征信息,同时保证检测结果不受背景噪声的影响,将SKNet融合到YOLOv5的Backbone端构成关注像素级信息的特征提取网络,加强鱼类特征信息的提取能力,图1为改进YOLOv5的养殖鱼群检测方法流程图。
图1 改进YOLOv5的养殖鱼群检测方法流程图
1.1 基于UNet的图像预处理
在真实养殖场景中,养殖池底部能见度较低,水中微小的无机物和有机物颗粒含量较高。在这种浑浊水中拍摄时,由于微小颗粒对光线的散射作用,使得鱼群图像模糊不清。图像模糊会导致某些鱼体轮廓不清晰,特征丢失或者不明显,阻碍后期目标检测网络对鱼类特征的提取,从而对水下鱼群目标识别的准确性产生影响,无法达到预期目标。为了准确检测水产养殖池塘中的鱼群,检测前需要对模糊图像进行预处理,即水下图像清晰化。UNet是一个在超清图像生成任务中泛化能力较强的全卷积网络,该网络主架构由编码器和解码器组成。其通过跳跃连接将编码器层不同尺度的特征直接输入到相应解码器层,能够提取深层次的特征,且不需要鉴别器指导清晰图像的生成,减少了参数的处理,有较快的运行速度,适用于图像预处理任务。因此,本研究中选取UNet作为清晰化网络,用作水下鱼群图像的预处理,网络架构如图2所示。
图2 基于UNet的图像预处理
将给定不同曝光度的模糊水下鱼群图像,使用响应函数CRF(contrast response function)[25]的估计逆值对图像进行线性化,再应用伽马校正产生的数据作为输入传递给不同的编码器。在伽马校正过程中,用X={X1,X2,X3}表示输入不同曝光度模糊鱼群图像的集合,将其映射到Y={Y1,Y2,Y3}的清晰鱼群图像的集合[26],伽马编码的映射公式为
(1)
编码器提取不同曝光度模糊鱼群图像的鱼类特征信息,再将不同编码器提取的特征信息进行合并,将合并的特征信息输入至解码器端,同时每一个编码器提取的特征信息采用跳跃连接的方式也输入至解码器端。该操作通过编码器和跳跃连接将不同像素的语义信息映射到解码器,使得解码器融合了相同尺度和不同尺度的特征信息,网络不断学习该映射对应的特征信息,得出所有像素点的特征图,最后将所得特征图送入色调映射器的映射网络得到清晰鱼群图像[27],该网络被定义为
(2)
由于清晰鱼群图像通常在色调映射后显示,因此,在色调映射后的清晰鱼群图像上计算各像素点的损失函数[27],得到清晰鱼群图像的像素压缩公式为
(3)
其中:λ为控制压缩程度的参数,本研究中设为5 000。
最后,图像预处理阶段控制图像清晰化程度的损失函数(LUNet)定义为
(4)
1.2 融合SKNet的YOLOv5鱼群检测
YOLOv5有4个不同的模型,包括YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x,其中,YOLOv5s网络是YOLOv5系列中深度和特征图宽度最小的网络,YOLOv5m、YOLOv5l和YOLOv5x均为在此基础上不断加深、加宽的网络。以上4种模型主体结构相同,当使用养殖鱼群数据集训练模型时,发现YOLOv5x的结果优于YOLOv5s、YOLOv5m和YOLOv5l。因此,本研究中选择YOLOv5x以追求最佳检测性能。虽然YOLOv5x在目标检测领域获得最佳检测性能,但本研究中训练模型的数据经过图像预处理后存在部分特征丢失或不明显问题。为解决此问题,在YOLOv5的Backbone端融入视觉注意力机制SKNet。YOLOv5模型具有较好的适配性,在特征提取阶段为其融合SKNet构成复杂强大的特征提取网络,能大幅提升YOLOv5 的检测能力。
1.2.1 基于YOLOv5的鱼群检测方法 养殖池中拍摄的鱼群图像经过图像预处理后,首先通过YOLOv5输入端的Mosaic数据增强、自适应锚框计算和自适应图像缩放以丰富数据集,提高鲁棒性和提升推理速度。然后通过Backbone特征提取网络提取图像中鱼类的特征,原始608×608×3的鱼群图像输入Focus结构,采用切片操作,使其变成304×304×12的特征图,再经过一次32个卷积核的卷积操作,最终变成304×304×32的特征图。该特征图利用CSP模块先将基础层的特征映射划分为两部分,再通过跨阶段层次结构将它们合并,在减少计算量的同时可以保证准确率。为了更好地提取融合特征,将Backbone端得到的特征图输入至Neck端,采用SPP模块增加主干特征的接收范围,显著分离了最重要的上下文特征。最后通过Prediction模块将图像分为76×76、38×38和19×19个网格,预测不同大小的目标。目标中心所在的网格负责完成图像中鱼类目标的检测。为了完成鱼类目标的检测,每个网格默认输出预测的3个边界框及边界框对应位置(x,y,w,h)的信息和分类结果,以及边界框Conf(Object)精度的置信度信息。
预测框和真实框交并比计算公式为
(5)
Conf(Object)=Pr(Object)×IOU。
(6)
其中:Pr(Object)用于表示是否有鱼类目标,1表示是,0表示否;IOU表示预测框与真实框的交并比;box(Pred)表示预测框;box(Truth)表示真实框。每个预测边界框包含x、y、w、h、Conf(Object)5个参数,(x,y)表示预测框中心距离真实框中心的偏移量,(w,h)表示预测框的宽度和高度。
图3 SKNet网络结构
本研究中为了加强鱼类的特征信息,抑制养殖池环境中的其他信息,将SKNet网络融入在YOLOv5的Backbone端,改进结构如图4所示。
图4 融合SKNet的YOLOv5网络结构
YOLOv5的Backbone端设置3层输出,分别对应着大中小3种不同尺度的特征,该特征为后面的不同尺度检测提供信息。为加强鱼类特征信息的关注和提取能力,在Backbone端不同尺度特征的输出层引入SKNet网络,通过对不同尺度通道特征信息的加权处理,网络更加注意鱼类的特征信息,不同尺度特征信息经SKNet加权之后,输入Neck端进行特征融合,最后以3种不同尺度的预测方式对图像中的鱼群进行检测。
2 养殖鱼群检测试验
2.1 试验环境及参数设置
本试验运行系统:Windows10 操作系统,主频为3.4 GHz的intel Core i7-6800K CPU处理器,GTX2080Ti GPU处理器,PyCharm试验平台;Pytorch机器学习框架,整个模型通过80个epoch进行训练,batch为32,初始学习率为0.000 1。
2.2 试验数据
试验用数据采集自大连天正实业有限公司大黑石养殖场红鳍东方鲀养殖车间,使用一个200万像素的摄像头,摄像头拍摄的视频通过ezviz传输到移动终端,再通过视频抽帧的方式获得分辨率为1 920×1 080的图像。在所抽取图像中选择1 200张作为本次试验的数据集,所有数据通过Labelimg进行标注,生成记录类别信息和位置信息的xml文件,并按照训练集和测试集7∶3的比例进行划分,其中840张图像作为训练集,360张图像作为测试集。
2.3 评估标准
为了验证SK-YOLOv5对水下模糊鱼群图像的检测和识别鱼类的能力,所有试验结果用精确率和召回率进行评估,精确率(precision,P),也称查准率,即预测结果中成功预测鱼类目标的概率。召回率(recall,R),也称查全率,即鱼类目标总体中被成功预测的概率。根据Ground truth对水下模糊图像鱼群检测结果进行评估,计算公式为
(7)
(8)
其中: TP(true positive)是预测结果中正确预测鱼类目标的个数;FP(false positive)是预测结果中错误预测鱼类目标个数;FN(false negative)是未被预测出的鱼类目标个数。
2.4 消融试验
消融试验即内部对比试验,该试验分2组进行,分别是图像预处理模块性能对比和SKNet模块性能对比。通过测试图像预处理模块和SKNet模块的性能,以验证本研究中网络架构设计的重要性。
2.4.1 图像预处理模块性能对比 为了验证图像预处理模块UNet的有效性,在YOLOv5基础上添加了图像预处理模块。模型训练过程中,所有参数保持不变,将图像预处理模块输出的清晰化图像直接作为YOLOv5的输入。试验结果如表1所示,加入图像预处理模块后,鱼群检测的精确率和召回率分别提升了0.82%和0.93%,有效解决了水下模糊图像鱼群检测准确率低的问题。
表1 UNet图像预处理模块对模型性能的影响
2.4.2 SKNet模块性能对比 在“2.4.1节”的基础上,将SKNet融合到YOLOv5的Backbone端构成关注像素级信息的特征提取网络。融合SKNet后的网络可以加强鱼类特征信息的提取能力,抑制无效特征信息,提高特征信息的利用率。试验结果如表2所示,在YOLOv5和图像预处理模块基础上,融入SKNet的网络模型,精确率和召回率分别提升了1.32%和1.36%,有效提升了水下鱼群目标检测效果。
表2 SKNet模块对模型性能的影响
2.5 模型性能对比试验
试验分2组进行,分别是SK-YOLOv5与YOLOv5的对比,以及与目前检测准确率较高的基于深度学习的水下目标检测模型的对比。通过模型对比试验,以验证本研究中所提网络架构的性能。
2.5.1 与YOLOv5的性能对比试验 将SK-YOLOv5与YOLOv5进行了对比。首先用所选数据对YOLOv5进行端到端的训练,不进行任何网络结构的调整,直接输出鱼群检测结果。然后将图像预处理模块添加在YOLOv5模型的前端,最后将SKNet融合到YOLOv5的Backbone端构成关注像素级信息的特征提取网络。试验结果如表3所示,与YOLOv5模型相比,鱼群检测的精确率和召回率分别提升了2.14%和2.29%。这表明,添加图像预处理模块UNet和SKNet模块的YOLOv5对水下模糊图像鱼群检测的性能有较大提升。
表3 YOLOv5与SK-YOLOv5的性能对比
2.5.2 与不同模型的性能对比试验 通过对水下图像进行鱼群检测,量化了SK-YOLOv5的性能,并与目前检测准确率较高的水下目标检测模型进行了对比,对比模型分别为Konovalov等[21]提出的用于海洋领域鱼群检测模型XFishHmMp(underwater fish detection with weak multi-domain supervision)和Fan等[22]提出的用于海胆和扇贝等小目标检测模型FERNet(dual refinement underwater object detection network)。为了公平比较,将所有模型用水下模糊鱼群图像数据集进行训练,在训练过程中对每个模型进行微调,并将同一批图像统一用于测试。试验结果如表4所示,针对养殖池内成像模糊失真的鱼群图像数据,SK-YOLOv5模型的精确率和召回率分别为98.86%和96.64%,较XFishHmMp和FERNet达到较好检测效果。
表4 不同模型与SK-YOLOv5的性能对比
3 讨论
3.1 网络模型的选择
针对在真实养殖环境下,因水下成像模糊、失真导致的鱼群检测准确率较低的问题,本研究中通过对模糊图像进行预处理,即水下图像的清晰化加以解决。UNet是一个在超清图像生成任务中泛化能力较强的全卷积网络,能够提取深层次的特征,且不需要鉴别器指导清晰图像的生成,减少了参数的处理,有较快的运行速度,适用于图像预处理任务。因此,选取UNet作为清晰化网络,用作水下鱼群图像预处理。
通过图像预处理,得到了清晰的图像,并为后续的鱼群检测提供了高质量数据。但是,由于本研究是针对视频影像的鱼群检测,需要选择一种计算速度较快和目标检测准确率较高的网络框架作为基础的水下鱼群检测模型。YOLOv5是目前检测准确率较高的目标检测模型,且单一图片的推理时间能够达到7 ms,即140 FPS,是目标检测领域处理速度较快的网络,因此,选定综合性能较好的 YOLOv5作为基础网络模型框架。为尽可能多地利用鱼群特征信息,同时保证检测结果不受背景噪声影响,在YOLOv5的Backbone端融入SKNet构成关注像素级信息的特征提取网络,通过给每个特征元素都找到其对应的注意力权重,加强鱼类特征信息的重构和提取能力,抑制无效特征信息,从而提高特征信息的利用率,提升鱼群检测的准确率。
3.2 SK-YOLOv5模型的检测效果
本研究中通过消融试验和模型对比试验,验证SK-YOLOv5模型的效果。在基础网络模型YOLOv5上加入图像预处理模块UNet,可以得到清晰的鱼群图像,检测精确率和召回率分别提升了0.82%和0.93%;加入SKNet模块后,鱼群检测效果得到了再一次提升,与只加入图像预处理模块相比,SKNet模块将鱼群检测的精确率和召回率分别提升了 1.32%和1.36%。为进一步分析SK-YOLOv5模型的效果,采用不同模型对真实养殖环境下的鱼群进行检测,并将检测结果进行对比。首先将SK-YOLOv5与目前检测准确率较高的目标检测模型YOLOv5进行对比,SK-YOLOv5的精确率和召回率较YOLOv5分别提升了2.14%和2.29%。然后将SK-YOLOv5与目前检测效果较好的基于深度学习的水下目标检测模型XFishHmMp[21]和FERNet[22]进行对比,检测精确率分别提升了5.39%和3.59%,召回率分别提升了5.66%和3.77%。XFishHmMp能够有效检测清晰图像中的鱼群,但无法准确检测本研究模糊图像中的鱼群;FERNet对海胆、扇贝等水下小目标识别效果较好,但是也不能有效检测本研究中鱼群等大目标。针对养殖池内成像模糊失真的鱼群图像数据,SK-YOLOv5的精确率和召回率分别达到98.86%和96.64%,达到了较好检测效果,实现了工厂化养殖鱼群的准确识别,为鱼类行为分析和鱼类生长状况监测提供了基础方法,为精准养殖提供了重要的技术支撑,也将为在失真和模糊等复杂背景下基于深度学习的水下目标检测提供了有效的解决方案。
4 结论
1)本研究中,在当前鱼群检测方法的基础上,提出了基于YOLOv5的养殖鱼群检测模型,引入UNet作为图像预处理模块,输出得到清晰的鱼群图像,加强了网络对模糊鱼体的识别能力。
2)在YOLOv5网络模型基础上,融合SKNet视觉注意力机制,加强了鱼类特征信息的提取能力,抑制了无效特征,提高了特征信息的利用率。
3)以真实养殖环境下的鱼群图像为样本,用训练后的融合SKNet与YOLOv5的养殖鱼群检测算法,可以检测模糊和失真的鱼群,精确率和召回率分别达到了98.86%和96.64%,性能比YOLOv5和目前已有的其他鱼群检测模型更为优异,该模型具有较好的识别准确度,可对真实养殖环境下成像模糊、失真的鱼群实现精准识别。