APP下载

基于YOLOv5模型的鱼类数量统计方法改进研究

2022-12-29覃学标黄冬梅杜艳玲袁小华

渔业现代化 2022年6期
关键词:鱼类尺度计数

覃学标,黄冬梅,2,宋 巍,贺 琪,杜艳玲,袁小华

(1 上海海洋大学信息学院,上海 201306;2 上海电力大学电子与信息工程学院,上海 200090)

在渔业养殖过程中,需要定期地对养殖池内鱼的数量进行监测[1-2],以估算生产潜力、分析鱼的构成和统计生物量等[3-6]。而鱼生活在水下,受成本、安全和对生物体毁坏等因素的影响[7],依靠人工计数容易出错并会对鱼造成一定的伤害[8-9]。利用各种远程可操控的潜水设备替代人工观测是良好的解决方案,通过这些设备可以大范围地收集鱼类在水下活动的图像[10]。但要对这些图像中鱼的数量进行统计,仍然需要人工进行处理[11]。近几年基于机器学习的图像处理方法快速发展[12-15],被广泛地应用于人脸识别、行为监测和自动驾驶等领域[16-21],如何利用机器学习的方法自动统计图像中鱼的数量是当前研究的热点之一[22-24]。

当前基于机器学习的鱼类数量统计方法主要有回归分析法、计算黑点法和深度学习方法等,诸多学者基于这些方法开展了鱼类数量统计的研究。如Zhang等[25]提出密度分级和局部回归的鱼类数量统计方法,用于检测鱼类在相互重叠时的数量。Albuquerque等[26]运用高斯混合的方法检测图像中的黑点,以此计算鱼苗的数量。Hernandez等[27]将输入图像转为黑白图像,并通过设置阈值的方式计算其中的黑点,以此统计图像中鱼苗的数量。Lainez等[28]基于深度学习方法开展鱼苗数量统计研究,由于鱼苗的个体较小,为了避免漏检,对图像进行切块,在较小范围内进行数量统计。除此之外,基于深度学习的鱼类检测模型也用于鱼的数量统计。如Yang等[29]使用YOLOv3和Faster R-CNN模型对海参、扇贝和海胆的图像进行检测,对输出结果进行统计可以得到相应类别的数量。Gray等[30]使用Mask R-CNN模型对无人机采集的鲸鱼图像进行检测,对检测结果进行统计可得到鲸鱼的数量。上述方法中,回归分析法和计算黑点法对图像的质量要求较高,主要应用于室内鱼苗数量的统计。在养殖环境下,受水体浑浊度和水中光衰减的影响,水下图像普遍具有模糊、对比度低的特点,难以通过回归分析或计算黑点的方法对鱼的数量进行统计。基于深度学习的鱼类数量统计方法对模糊的水下图像具有较强的适用性,可以应用于养殖环境下鱼类数量的统计。但在养殖条件下,鱼在水中相互遮挡,图中可观测到的具有完整轮廓的鱼类目标较少,在这样的情况下运用当前基于深度学习的模型进行数量统计存在较严重的漏检问题,影响了数量统计的准确率。

本研究提出局部优选及改进输出尺度的鱼类数量统计方法。在检测鱼的全身的基础上,增加检测鱼的头部和鱼的尾部等局部信息,优选三个类别中数量最多的类作为数量统计的结果,以减少遮挡带来的漏检问题。另外,鱼的全身、鱼的头部和鱼的尾部在图像中显示为大尺度目标或中尺度目标,为了提高模型对该类目标的检测能力,本方法对模型的输出尺度进行改进,增加了大尺度目标和中尺度目标的特征输出,使其更适合当前条件下的数量检测,进一步提高了数量统计的准确率。

1 数据与方法

1.1 数据

使用水下摄像机GoPro RX0在室外养殖池中采集数据,时间为2020年5月~6月下午13:00—16:00,图像分辨率为1 920×1 080,帧速率50 fps。将视频按10帧一张输出,从中取出具有一条或多条完整轮廓的鱼的图像。由于采集的数据中鱼类相互遮挡,大量的图像质量不高,需要进行清洗。清洗后得到3 595张图像,构成鱼类数据集(Data1)。使用标注软件LabelImg将图像中的鱼标注为“fish”“head”和“tail”。“fish”定义为肉眼可辨别的鱼;“head”定义为鱼嘴到鱼颚的部分;“tail”定义为鱼肛门到尾鳍夹角的部分,标注过程如图1所示。按7∶3比例将数据划分为训练集2 517张,测试集1 078张。由3人分别对测试集中鱼的总数量进行计数,取平均数作为人工计数的结果。经过计算,测试集中人工计数的鱼的总数为3 546条。

图1 鱼类数据集

Data1为经过挑选的数据,不能代表实时条件下的数据特征,为了进一步验证模型的鲁棒性,建立了时序数据集(Data2)。从所采集的数据中随机截取10 min视频,按1 s一张输出,得到600张时序图像,人工计数每一张图像中鱼的数量并保存成时序数列,如图2所示。经过计数,时序数据集中鱼的总数为2 287条。

图2 时序数据集

1.2 方法

1.2.1 局部优选的鱼类数量统计

由于在拍摄画面中存在鱼的相互遮挡或画面截断等实际情况,具有完整轮廓的鱼类目标较少,以鱼的全身作为目标进行检测将导致漏检问题。然而,画面中鱼的头部和鱼的尾部出现的情况较多且比较完整,将其选为目标进行检测比较理想。

基于此,本研究在检测鱼的全身的基础上,增加检测鱼的头部和鱼的尾部等局部信息,通过优选3个类别中数量最多的类作为数量统计的结果,达到提高数量统计准确率的目的,如图3所示。

图3 局部优选的检测过程

将图像输入鱼类检测模型,记输出的鱼的全身、鱼的头部和鱼的尾部的数量分别为Nfish、Nhead和Ntail,优选的数量统计结果表示为:

N=max(Nfish,Nhead,Ntail)

(1)

式中:N表示鱼的数量。

1.2.2 改进输出尺度的鱼类检测模型

Gray等[26]的研究表明,YOLO模型在鱼类的检测上取得较好的检测结果,基于此,本研究选取YOLOv5模型作为鱼类检测模型开展试验。YOLOv5模型依据网络宽度和深度不同分为l、m和s三种结构,为了能够快速完成部署,本研究在计算量较小的YOLOv5s模型上开展试验,其网络结构如图4所示。

图4 YOLOv5s模型的网络结构

将鱼类图像输入YOLOv5s模型,同时对鱼的全身、鱼的头部和鱼的尾部进行检测,优选数量最多的类作为数量统计的结果。一般情况下,养殖鱼类的体型较大,属于大尺度目标,鱼头和鱼尾则属于中尺度目标。为了提高模型对这类目标的检测能力,本方法将YOLOv5s模型的输出尺度改为76×76、38×38、38×38、19×19和19×19。通过对模型输出尺度的改进,使其更适合当前条件下的鱼类检测,引入局部优选和改进输出尺度后的YOLOv5s+模型如图5所示。

图5 YOLOv5s+的网络结构

2 试验

2.1 试验设置

将Data1的训练集输入YOLOv5s+模型进行训练,训练参数为输入尺寸640×640,激活函数Mish,损失函数Focal loss,学习率0.01,训练轮数300轮。作为对比,在YOLOv3、Mask R-CNN和未改进的YOLOv5s模型上进行试验,模型的训练参数使用原文默认值。试验环境为处理器AMD 1950X 3.4GHz,内存32G,显卡GTX-1080Ti,操作系统Ubuntu16.04,编辑环境Python3.8。

2.2 试验结果

引入检测数量和检测时间对本方法进行评价,检测数量定义为检测概率大于0.3的目标个数,以人工计数的数量作为衡量的基准。检测时间定义为单帧图像的检测时间,准确率为检测数量除以人工计数的数量。

表1为不同方法在Data1的测试集和Data2上试验结果的对比。

表1 试验结果的对比

从表1中可以看出,本方法YOLOv5s+获得较好的数量统计结果。在Data1上的检测数量与人工计数误差较小,准确率为96.3%;在Data2上检测的准确率为88.9%,检测时间为0.009s,帧速率为111 fps。对比其他方法,本方法在Data1上的准确率比未改进的YOLOv5s高10.4%,比YOLOv3高13.4%,比Mask R-CNN模型高26.2%。说明本方法可以较准确地对鱼类数量进行检测,在速度方面可以满足实时性的检测需求。

3 讨论

3.1 局部优选的性能分析

引入检测数量和提升幅度对局部优选的性能进行评估。提升幅度δ的计算方法为

(2)

式中:Δ为增量;C为基准值。

表2为仅以鱼的全身作为目标进行检测与局部优选检测结果的对比,试验模型为YOLOv5s+。可以看出,仅以鱼的全身作为目标进行检测,Data1和Data2的检测数量与人工计数的结果相差较大,出现较严重的漏检问题。局部优选的策略通过优选三个类别中数量最多的类作为数量统计的结果,其检测结果接近人工计数的结果,比仅以鱼的全身作为目标进行检测的结果高37.4%和30.7%,说明局部优选的策略有效地提高了模型的检测数量。

表2 仅以鱼的全身作为目标进行检测与局部优选检测结果的对比

图6为从Data1中选择样例图像对局部优选的结果进行展示。从图6中可以看出,在不同条件下,鱼的全身、鱼的头部和鱼的尾部都有数量占优的情况,通过优选数量最多的类作为数量统计的结果,可以提高检测的准确率。图6b和图6c展示了仅以鱼的全身作为目标进行检测所出现的漏检情况。图6b局部优选的检测结果为4条,而以鱼的全身作为目标进行检测的结果仅为1条,少了3条;图6c局部优选的检测结果为3条,而以鱼的全身作为目标进行检测的结果为2条,少了1条。说明局部优选的策略有效地提高了模型的检测数量。

图6 鱼的全身、鱼的头部和鱼的尾部检测结果(红色数字为优选的结果)

3.2 改进输出尺度的性能分析

以下对输出尺度改进前后的性能进行分析。引入检测数量和检测精度AP[31]进行评价,AP计算方法为

(3)

(4)

(5)

式中:R为召回率,P为准确率,T为将正样本检测为正样本的数量,N为将正样本检测为负样本的数量,F为将负样本检测为正样本的数量。

选择AP50作为检测精度衡量依据,将预测框与真实框交并比大于50%的结果定为正确结果。

表3为输出尺度改进前后在Data1上检测结果的对比。从表中可以看出,对比未改动的YOLOv5s模型,改进后的YOLOv5s+模型在鱼的全身、鱼的头部和鱼的尾部三个类别中AP50分别提高了2.2%、1.9%和1.9%,检测数量分别提高了12.7%、3.0%和9.4%,局部优选的检测数量提高了4.9%。在检测时间上,由于增加了输出的尺度,检测时间增长0.002 s。说明本方法对YOLOv5s模型输出尺度的改进可以进一步提高检测精度和检测数量,对局部优选的检测结果也产生了影响。

表3 输出尺度改进前后检测结果的对比

表4为输出尺度改进前后在Data2上检测结果的对比。由于Data2为未标注的时序数据,仅对其改进前后的检测数量进行对比。从表4中可以看出,对比未改动前,改进后的YOLOv5s+模型在鱼的全身、鱼的头部和鱼的尾部三个类别中的检测数量分别提高了52.3%、9.0%和16.3%,局部优选的检测数量提高了15.4%。Data2为未经挑选的数据,鱼类相互遮挡,图像质量较差,可以代表实时条件下的数据特征。在输出尺度改进后的模型上,其检测结果的提升幅度比Data1的提升幅度更加明显,说明对输出尺度的改进在实时数据的检测中发挥了更大的作用。

表4 输出尺度改进前后检测结果的对比

3.3 应用验证

由于Data2为连续的时序数据并已人工计数每一张图像中鱼的数量,在Data2上开展本方法的应用验证。为了更直观地将本方法机器统计的结果与人工计数的结果进行对比,以10为窗口单位,输出两者的移动平均线,如图7所示。可以看出,两者之间未表现出较大的背离。说明本方法的检测结果与人工计数的结果相近,在实时鱼类数量统计上具有实用性。

图7 移动平均线对比

4 结论

本研究提出局部优选及改进输出尺度的鱼类数量统计方法,可以准确地对图像中鱼的数量进行统计,并在速度上满足实时性的统计需求。方法所采用的局部优选策略使得统计数量提高了37.4%,对输出尺度的改进使得统计数量提高了4.9%,可以应用于渔业养殖实时鱼类数量统计的生产中。

猜你喜欢

鱼类尺度计数
古人计数
递归计数的六种方式
财产的五大尺度和五重应对
鱼类运动会
古代的计数方法
古代的人们是如何计数的?
奇妙的古代动物 泥盆纪的鱼类
宇宙的尺度
9
室外雕塑的尺度