-
开放科学(资源服务)标识码(OSID):

-
鱼类的体长、体高不仅是评估鱼类种群健康和生态系统平衡[1]、研究鱼类生长状况[2]、环境适应性[3]的关键,还是物种识别和分类[4]、体质量估算[5-6]、品质选择与分级[7-8]的重要指标。传统的鱼体长度估计方法主要依赖于人工测量,这个过程通常耗时费力且含有较多的主观因素,结果的可靠性、一致性难以保证。随着人工智能技术的不断发展,在水产领域,计算机视觉技术得到了广泛应用,例如鱼类计数[9-10]、疾病检测[11]、表型性状指标的测量[12-13]、种类识别[14]和智能投喂[15-16]等,同时也为鱼类长度测量带来了更为高效、准确的技术解决方案。White等[17]在2006年证明基于计算机视觉的自动测量系统检测鱼的大小是有效的。在使用单个相机拍摄的二维图像进行鱼体长度测量时,计算机视觉技术常用的方法有最小外接矩形法和霍夫变换法[18],但最小外接矩形法存在灵活性不足的问题,无法根据实际需求灵活调整测量点,霍夫变换法则对图像质量和内存消耗要求更高。这些方法通常需要进行相机标定[19],以将图像中的像素长度转换为实际尺寸。不仅如此,传统的计算机视觉技术对环境条件如光强度、水质要求较高[20],处理过程中所需的算法也意味着数据处理的复杂性较高[21]。
YOLO v8(You Only Look Once version 8)由Ultralytics开发团队于2023年1月推出,是一种基于深度学习的高性能目标检测模型[22]。该模型能够快速而准确地预测图像中所有对象的边界框和类别,实现高效的目标检测。此外,YOLO v8的灵活性和可扩展性使其在不同规模和复杂度的目标检测任务中表现出色。这些特点使得YOLO v8成为计算机视觉领域首选的模型之一,广泛应用于物体检测[23]、计数[24]、交通场景分析[25]和自动驾驶[26]等领域。杨杰超等[27]研究开发出一种简易表型获取装置,通过YOLO v8网络模型快速、高效、精确地测量所采集图像中黄颡鱼的表型特征参数。Xing等[28]采用改进的YOLO v8结合BoT-SORT技术,解决远洋环境中设备运动、光线变化、背景噪声等复杂因素导致的漏检、误检、精度低等问题。Li等[29]利用YOLO v8模型进行鱼类识别和关键点检测,通过数学模型确定实际身体尺寸。
基于此,我们研究并开发了一种基于YOLO v8的快速、准确提取鱼类体长、体高的方法。此方法利用训练的模型自动识别和提取图像中多尾鱼的体长和体高,能有效提升数据处理的效率,减少人为误差,增强测量的一致性与重复性。采用棋盘格标定板,将图像中的像素长度精确转换为实际物理尺寸,确保数据的准确性。该方法不仅为鱼类表型测量提供了一个经济、高效的参考方案,也显示了深度学习在水产科学领域的应用潜力和优势。
全文HTML
-
YOLO v8网络由输入端(Input)、主干网(Backbone)、Neck模块和输出端(Head)4个部分组成[30]。Input采用Mosaic数据增强、自适应锚框计算和自适应灰度填充来处理不同尺度和外观的变化。Backbone主要用于提取图片中的信息,包含Conv、C2f和SPPF结构,Conv模块用于提取特征并整理特征图;C2f可以在保证轻量化的同时获得更加丰富的梯度流信息,并根据模型尺度来调整通道数;SPPF能够融合不同尺度的特征。Neck模块通过PAN-FPN结构实现不同尺度特征的有效融合,加强模型的语义和定位能力。Head采用解耦头结构,将分类和检测过程分开,使用TaskAlignedAssigner方法选择正样本,Loss计算包括分类和回归2个分支,分类分支采用BCE Loss,回归分支则采用DFL Loss和CIUO Loss。这些特点使得YOLO v8在减少网络参数的同时提高了检测的精度和实时性[31]。作为目前最先进的目标检测算法之一,性能优异,优势突出。具体网络结构如图 1。
-
拍摄对象为野外资源调查所捕获的鱼类。将捕获的鱼类麻醉后,放置于平面,分类,水平摆放整齐,并放置一块棋盘格标定板,使用智能手机水平拍摄,如图 2。标定板规格图案阵列为12×9,方格边长为1 cm,用于将像素测量值转换为物理长度,然后用游标卡尺对每尾鱼进行体长、体高的性状测量和记录。
-
本研究用于搭建图像检测模型的数据集图片共534张,随机选取521张图像(1 005尾)作为训练集,包含单尾和多尾鱼的图像,13张(98尾)作为验证集,均为多尾鱼的图像,数量4~17尾不等。使用Labelimg软件对鱼类体长、体高进行人工标注,如图 3。目标框宽从鱼类吻端开始至鱼类尾鳍基部,目标框高从背鳍起点处至腹面,分别表示鱼类的体长(BL)和体高(BH)。
-
本研究使用YOLO v8进行图像检测模型的搭建,预训练检测模型选用YOLO v8n.pt。用构建好的图像数据集对模型进行训练,训练参数设置为epoches为150、batch为16,然后通过图像验证集来评估模型的性能。实验平台使用的处理器为AMD Ryzen 5 5600H with Radeon Graphics,显卡型号为NVIDIA GeForce RTX3050,4G,操作系统为Windows11,64位。
-
将标注后的鱼类体长、体高数据集输入YOLO v8网络模型完成训练后,再输入图像验证数据集,模型将识别并定位图像中的对象,并输出包含这些对象位置的标签文件,即包含目标检测框归一化坐标的txt文本格式文件。读取验证集图片信息,主要包括图片的像素长、宽,用于计算图片的实际宽度和宽高比例。设定棋盘格标定板规格,提取图片中标定板的角点并计算其平均长度,如图 4。利用已知角点间的实际长度,推导出图像的实际宽度。其原理是先将图像转换为灰度图像,然后使用OpenCV函数findChessboardCorners和cornerSubPix在灰度图像中检测标定板角点并精细化角点的位置,利用NumPy计算角点间的平均像素距离。随后处理目标框信息,先读取模型输出的图像验证集的标签文件,由于文件中的目标框信息并不是简单按照从左往右或从上往下的顺序排列的,为了简化后续流程,使其与图片中目标框的顺序一致,将其按照中心点y坐标从小到大的顺序重新排序,然后基于图像实际宽度并结合图片宽高比,将目标框的宽和高转换为实际尺寸。最后将结果保存至Excel中,即获得鱼类的体长、体高。体长、体高测量整体工作流程如图 5。
-
以0.02 mm精度游标卡尺的人工测量结果作为体长、体高的参考值,将其与模型及算法提取的结果进行对比,得到检测误差。分别计算体长、体高的绝对误差(EA)、相对误差(ER)、平均绝对误差(EMA)和平均相对误差(EMR)并作图,用于体长、体高性状检测结果的评估。相关公式如下:
式中:x为测量值;t为参考值;n为样本数量。
体长、体高的测量时间计算为YOLO v8模型推理时间和后续算法处理时间的总和,将总处理时间除以鱼的数量来估计每尾鱼的平均测量时间,算法处理时间使用“time”模块记录开始和结束的时间。由于测量时间与实验平台的硬件与软件环境直接相关,同时还受到图片大小、复杂度和模型配置的影响,因此时间以本研究的实验平台为例进行估计。本研究所有数据的分析和处理由Python 3.9、GraphPad Prism 9.5.1和Excel 2021软件完成。
2.1. 图像采集
2.2. 图像数据集构建
2.3. 图像检测模型的搭建
2.4. 基于图像的体长、体高测量
2.5. 算法验证
-
基于模型对图像验证集中的98尾鱼体长、体高性状进行预测,根据上述验证方法,检测误差结果如表 1。体长的绝对误差为0.02~0.67 cm,平均绝对误差为0.29 cm;体高的绝对误差为0~0.29 cm,平均绝对误差为0.08 cm。体长的相对误差为0.04%~3.32%,平均相对误差为1.18%;体高的相对误差为0.01%~4.68%,平均相对误差为1.56%。体长、体高检测的相对误差如图 6,体长的绝对误差整体比体高大,但体长的相对误差明显低于体高的相对误差。两性状平均相对误差均小于2%,表明体长、体高检测结果准确性较高,检测精度能够达到设计需求。
-
对验证集13张图片(98尾)的处理时间进行计算,根据YOLO v8模型推理结果显示,每张图片预处理耗时4.4 ms,推理耗时40.6 ms,后处理耗时16.9 ms,每张图像处理耗时如表 2,总耗时548.3 ms。后续算法处理时间通过“time”模块获得提取体长、体高的时间,结果显示处理13张图片耗时60.6 s。计算得出每尾鱼体长、体高平均测量时间为0.6 s,远低于人工测量时间。
3.1. 体长和体高检测结果
3.2. 测量时间评估
-
体长、体高的可靠估算对水产领域的重要性不言而喻[32],能够提供关于渔业资源多样性和数量的重要信息[33-34]。除此之外,在科学研究中,体长、体高等形态指标作为鱼类研究的基础,效果的好坏将直接影响其他相关研究[13]。在商业中,体长决定了鱼类货物的价值。从可持续性的角度来看,鱼类的体长决定其成熟度[35]。
YOLO v8在该系列算法中效果非常突出,是一种单阶段目标检测算法,相比于Mask R-CNN等两阶段目标检测算法,它简单高效、成本更低、检测速度更快[22]。不仅如此,高精度的目标检测能力、快速的实时处理性能、自动化和非接触式的测量方法,使得YOLO v8在目标检测的研究中展现出显著的优势[29]。相比于人工测量与传统的计算机视觉技术,基于深度学习的计算机视觉技术不仅能有效避免人工测量的主观性和不准确性,还能迅速处理含有多尾鱼的大量图像,显著缩短了数据处理时间,优化了整个测量流程。
本研究利用YOLO v8及后续算法对体长、体高进行自动提取并与人工测量的数据进行误差分析,结果显示,体长、体高的绝对误差范围分别是0.02~0.67 cm、0~0.29 cm,相对误差的范围分别是0.04%~3.32%、0.01%~4.68%,体长、体高的平均相对误差分别为1.18%、1.56%,体长与体高的绝对误差范围和相对误差范围均符合精度要求。Tseng等[35]开发了CNN分类器来估计鱼体体长,平均绝对误差和平均相对误差分别为5.36 cm和4.26%,Hsieh等[36]利用霍夫变换计算金枪鱼的长度,所开发的软件程序的平均估计误差为4.5%±4.4%。房舒[37]基于深度学习,对鱼类体长和全长测量的平均相对误差控制在4%以内。Monkman等[38]利用不同框架下的R-CNN模型定位鱼体,通过像素长度和真实参考长度间的关系计算鱼长,测量误差在2.2%左右。相比而言,本研究所提出的方法对体长的测量更加准确,体高的测量精度也符合已有的研究结果。Andrialovanirina等[39]开发了一种使用Image J软件和分析程序自动测量鱼类全长的方法,每尾鱼测量平均耗时7.9 s。王禹莎等[40]利用Mask R-CNN模型测量大黄鱼体长、体高,每尾鱼的平均处理时间为3 s。相比之下,本研究每尾鱼测量平均耗时更短。不仅如此,该方法不需要进行其他标定工作,因为图片中放置的棋盘标定板提供了一个规律且易于识别的图案,通过棋盘标定板将图像中的像素长度转换为物理尺寸。
目前,该方法在应用中仍存在一定局限。结果显示,相比于体长,体高的相对误差较大,可能是因为体高数值本身较小,同时体高的测量受到鱼体摆放角度等因素的影响。此外,为确保测量准确,图像拍摄时鱼需尽可能放置水平,并且鱼之间需留有1 cm左右的空间以避免相互遮挡和挤压,否则可能导致检测遗漏。在进一步的研究中,计划通过计算机视觉技术精确检测和分类图像中的多种鱼类[41-42]。利用YOLO v8的实时检测功能,结合目标框信息与算法,准确提取鱼的长度,为鱼类分类与长度测量提供一种更加高效、便捷、准确的自动化方法。
下载: