发明内容
有鉴于此,本发明提供了一种高分辨率图像下水产养殖物的工厂化养殖 计数方法、装置及存储介质,以实现养殖池内水产养殖物精准识别与计数, 为科学喂养、定量投饵提供可靠信息。
为此,本发明提供了以下技术方案:
本发明提供了一种高分辨率图像下水产养殖物的工厂化养殖计数方法, 所述方法包括:
获取水产养殖物养殖池的高分辨率图像数据集;
根据所述高分辨率图像的尺寸与YOLOv5模型图像预处理之后的图像尺 寸计算出裁切数量与裁切窗口滑动步长;
按照滑动的裁切窗口依次对所述高分辨率图像数据集中的每幅高分辨率 图像进行裁切;所述裁切窗口按照所述裁切窗口滑动步长滑动;
将所述低分辨率图像并入所述高分辨率图像数据集,形成训练集;
利用所述训练集对YOLOv5模型进行训练;
获取待检测高分辨率图像,基于训练好的YOLOv5模型,对所述待检测 高分辨率图像中的水产养殖物进行检测;
统计检测到的各类水产养殖物的数量,输出每类水产养殖物的计数结果。
进一步地,计算裁切数量与裁切窗口滑动步长的公式如下:
其中,Nw代表水平方向最终生成的裁切窗口的数量;Nh代表竖直方向 最终生成的裁切窗口的数量;Iw代表原图的宽度;Ih代表原图的高度;Fw代 表YOLOv5模型图像预处理之后输入图的宽度;Fh代表YOLOv5模型图像 预处理之后输入图的高度;Sw为裁切窗口沿横向滑动的步长;Sh为裁切窗 口沿纵向滑动的步长。
进一步地,在裁切图像的同时还包括:对裁切后的图像进行标签映射。
进一步地,对裁切后的图像进行标签映射,包括:
对目标标注信息进行重新计算,在裁切图像的同时计算裁切后新图像的 坐标信息,将原图的坐标映射到新生成的裁切图中;计算方法包括:
计算原图目标检测框与当前滑动裁切窗口两个矩形框的交集与并集比值; 其中,原图目标检测框为左上角坐标(x1,y1)及右下角坐标(x2,y2)形成的 矩形框;当前滑动裁切窗口为左上角坐标(x3,y3)及右下角坐标(x4,y4) 形成的矩形框;
当两个矩形框的交集与并集比值大于0时,
如果x3小于x1,则x5等于x1,否则x5=x3;
如果x4大于x2,则x6等于x2,否则x6等于x4;
如果y3小于y1,则y5等于y1,否则y5等于y3;
如果y4大于y2,则y6等于y2,否则y6等于y4;
基于x5、x6、y5、y6得到裁切图目标检测框的标注映射坐标;其中,x5、 x6、y5、y6是中间计算结果,裁切图目标检测框的标注映射坐标包括左上角 坐标(xtop,ytop)及右下角坐标(xbot,ybot);其中,xtop=x5-x1,ytop=y5-y1, xbot=x6-x1,ybot=y5-y1。
进一步地,获取水产养殖物养殖池的高分辨率图像数据集,包括:利用 工业摄像头采集水产养殖物养殖池的图像。
本发明还提供了一种高分辨率图像下水产养殖物的工厂化养殖计数装置, 所述装置包括:
图像获取单元,用于获取水产养殖物养殖池的高分辨率图像数据集;
裁切单元,用于根据所述高分辨率图像的尺寸与YOLOv5模型图像预处 理之后的图像尺寸计算出裁切数量与裁切窗口滑动步长;按照滑动的裁切窗 口依次对所述图像获取单元获取的高分辨率图像数据集中的每幅高分辨率图 像进行裁切;所述裁切窗口按照所述裁切窗口滑动步长滑动;
训练集单元,用于将所述裁切单元得到的所述低分辨率图像并入所述高 分辨率图像数据集,形成训练集;
训练单元,用于利用所述训练集单元形成的训练集对YOLOv5模型进行 训练;
检测单元,用于获取待检测高分辨率图像,基于所述训练单元训练好的 YOLOv5模型,对所述待检测高分辨率图像中的水产养殖物进行检测;
统计单元,用于统计所述检测单元检测到的各类水产养殖物的数量,输 出每类水产养殖物的计数结果。
进一步地,还包括标签映射单元,所述标签映射单元用于在裁切图像的 同时对裁切后的图像进行标签映射。
进一步地,所述标签映射单元具体用于:
对目标标注信息进行重新计算,在裁切图像的同时计算裁切后新图像的 坐标信息,将原图的坐标映射到新生成的裁切图中;计算方法包括:
计算原图目标检测框与当前滑动裁切窗口两个矩形框的交集与并集比值; 其中,原图目标检测框为左上角坐标(x1,y1)及右下角坐标(x2,y2)形成的 矩形框;当前滑动裁切窗口为左上角坐标(x3,y3)及右下角坐标(x4,y4) 形成的矩形框;
当两个矩形框的交集与并集比值大于0时,
如果x3小于x1,则x5等于x1,否则x5=x3;
如果x4大于x2,则x6等于x2,否则x6等于x4;
如果y3小于y1,则y5等于y1,否则y5等于y3;
如果y4大于y2,则y6等于y2,否则y6等于y4;
基于x5、x6、y5、y6得到裁切图目标检测框的标注映射坐标;其中,x5、 x6、y5、y6是中间计算结果,裁切图目标检测框的标注映射坐标包括左上角 坐标(xtop,ytop)及右下角坐标(xbot,ybot);其中,xtop=x5-x1,ytop=y5-y1,xbot=x6-x1,ybot=y5-y1。
进一步地,图像获取单元包括工业摄像头。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质内 存储有计算机指令集,计算机指令集被处理器执行时实现上述高分辨率图像 下水产养殖物的工厂化养殖计数方法。
本发明的优点和积极效果:
本发明提出了基于YOLOv5的高分辨率图像下水产养殖物的工厂化养殖 计数方法。针对工业摄像头输出图像的高分辨率特性,提出自适应裁片算法 进行数据预处理,增强高分辨率下虾的细节特征的学习效果,采用YOLOv5 深度学习模型对数据集进行训练,实现养殖池内水产养殖物精准识别与计数, 为科学喂养、定量投饵提供可靠信息。
本发明所提出的自适应裁切算法在模型训练过程中使用,主要解决高分 辨率图像直接压缩存在细节特征丢失严重问题,同时进行了数据增广,解决 样本量少问题。在模型推理过程中,只需输入原图即可,不需要进行裁切以 及其他处理,大幅度提高推理速度,减少模型运算量及推理时间。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实 施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然, 所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获 得的所有其他实施例,都应当属于本发明保护的范围。
YOLOv5是一种目标检测算法,其在小目标检测上较于前代算法有了一 定的提升,但是对于高分辨率图像的训练学习,YOLOv5算法有着不可避免 的缺陷,为了保证网络的检测速度,节省系统资源,YOLOv5算法需要在训 练集图片送入网络进行学习之前对训练集进行数据预处理,其中最为必要的 一步则为对图像尺寸的处理。由于卷积神经网络的特性,对于输入图像尺寸 有着很高的要求,YOLOv5中,图像预处理模块将输入的图像统一压缩成640×640像素的图片,空白部分使用灰色(114,114,114)进行填充。然而, 高分辨率图像压缩后,目标细节不可避免的出现大量的损失,如图1(a)所 示,图像经过压缩由原来的3000×4000像素到640×640像素,放大后发现虾 的轮廓已经模糊,虾足虾尾等特征几乎完全损失。
为此,本发明在YOLOv5图像预处理阶段加入了自适应图像裁切算法, 通过裁切后,将一张高分辨率图像分成若干低分辨率图像,如图1(b)所 示,随后合并送入网络进行训练学习,裁切后的图像保留了原始图像中的 大量细节特征,提高了网络的学习效果和检测准确率。同时,该算法作为 一种数据扩增算法,提升了数据集的数据量。模型训练结束后,YOLOv5 使用最终训练的权重参数,对图片进行目标检测,输出所有检测到的目标 之后,统计目标的数量,并最终输出计数结果。
参见图2,其示出了本发明实施例中一种高分辨率图像下水产养殖物的 工厂化养殖计数方法的流程图,本实施例中,水产养殖物为虾,该方法包括:
步骤1、获取虾养殖池的高分辨率图像数据集;
步骤2、对所述高分辨率图像数据集中的每幅高分辨率图像进行自适应 裁切,得到若干低分辨率图像;
本实施例中采用自适应图像裁切算法对每幅高分辨率图像进行自适 应裁切,算法流程如图3所示,具体包括:
步骤201、根据所述高分辨率图像的尺寸与YOLOv5模型图像预处理之 后的图像尺寸计算出裁切数量与裁切窗口滑动步长;其中,计算裁切数量与 裁切窗口滑动步长的公式如下:
其中,Nw代表水平方向最终生成的裁切窗口的数量;Nh代表竖直方向 最终生成的裁切窗口的数量;Iw代表原图的宽度;Ih代表原图的高度;Fw代 表YOLOv5模型图像预处理之后输入图的宽度;Fw代表YOLOv5模型图像 预处理之后输入图的宽度;Sw为裁切窗口沿横向滑动的步长;Sh为裁切窗 口沿纵向滑动的步长。
步骤202、按照滑动的裁切窗口依次对所述高分辨率图像进行裁切;所 述裁切窗口按照所述裁切窗口滑动步长滑动。
图4为经过自适应裁切之后的图像(右图)与压缩之后的图像(左图)的 对比。可以明显看到经过裁切之后的图像在裁切后仍然保持了较高的分辨 率和大量的细节特征。图4左图中虾头与虾尾的轮廓已经无法清晰分辨, 而图4右图中虾的头部特征,虾眼、虾线、尾部轮廓颜色等仍可以清晰的 分辨。可见高清图像在裁切后再进行训练可以更多的保留较为细小的特征, 为深度学习模型更好的调整各层权重提供支撑。
将裁切后的图像与原图保存在同一路径下,作为YOLOv5的训练数据 集。例如,原始图像分辨率为3000×4000,网络预处理输入图像尺寸为 640×640,则水平方向裁切框的数量为7,竖直方向裁切框数量为5,裁切 框沿横向滑动的步长为602,裁切框沿纵向滑动的步长为552。原始图像数 量为181,经过算法处理后,最终用于训练的图像数量为6516张。
按照训练集70%与验证集30%的比例输入YOLOv5网络进行训练并 得出训练模型,训练集与验证集的目标由Labelimg进行标注,标签文件格 式为YOLO_TXT格式,Labelimg为每张图像文件创建同名的文本文档, 文本文档中存储每张图的标签信息,文本文档中目标信息按行进行分割, 每行中第一位数为目标种类,从0开始排序,第二、三位数为物体标记框 左上角X、Y归一化之后的坐标位置,第四、五位数为物体标记框的归一 化之后的宽度和高度。
由于算法需要对图像进行裁切生成单独的图像,所以需要对标签文件 内的坐标信息进行重新计算,在裁切图像的同时计算裁切后新图像的坐标 信息,将原图的坐标映射到新生成的裁切图中。
参见表1,具体映射过程包括:
计算原图目标检测框与当前滑动裁切窗口两个矩形框的交集与并集比值; 其中,原图目标检测框为左上角坐标(x1,y1)及右下角坐标(x2,y2)形成的 矩形框;当前滑动裁切窗口为左上角坐标(x3,y3)及右下角坐标(x4,y4) 形成的矩形框;
当两个矩形框的交集与并集比值大于0时,
如果x3小于x1,则x5等于x1,否则x5=x3;
如果x4大于x2,则x6等于x2,否则x6等于x4;
如果y3小于y1,则y5等于y1,否则y5等于y3;
如果y4大于y2,则y6等于y2,否则y6等于y4;
基于x5、x6、y5、y6得到裁切图目标检测框的标注映射坐标;其中,x5、 x6、y5、y6是中间计算结果,裁切图目标检测框的标注映射坐标包括左上角 坐标(xtop,ytop)及右下角坐标(xbot,ybot);其中,xtop=x5-x1,ytop=y5-y1, xbot=x6-x1,ybot=y5-y1。
表1
其中,IoU函数用于计算两个矩形框的交集与并集的比值,计算公式 为
A为原图目标框面积,B为滑动裁切窗口面积。
对裁切图标注信息进行映射,能够保证标注信息的准确性。
步骤4、利用所述训练集对YOLOv5模型进行训练;
首次训练采用YOLOv5s模型在coco数据集上的预训练权重进行迁移 学习,算法运行在配置为CPU为Intel i7 7700k,GPU为Nvidia GeForce GTX 1070 Ti的计算机平台,采用Batch Size为16,训练集图片为4561 张,验证集图像为1955张,经过训练100轮(Epoch)之后对比算法最终 的训练参数与检测结果。
经过100轮的训练之后,得到自适应裁切算法生成图像与原图混合训 练集对应的模型,训练过程误差函数图像如图7模型1曲线所示。模型识 别效果如图5所示。
为对比展示自适应裁切算法在本实验数据集上的有效性,发明人设计 了两组对比实验,分别为使用原始图像与自适应裁切算法生成的图像混合 后作为训练集训练的模型1;使用原始图像作为训练集训练的模型2;仅 使用自适应裁切算法生成的图像作为训练集训练的模型3。具体流程如图 6所示。
实验中采用均值平均精度mAP(Mean average precision)、召回率 (Recall)、准确率(Precision)作为评价指标,对三个模型训练效果进行 评价。本文采用均值平均精度mAP(Mean average precision)、召回率 (Recall)、准确率(Precision)作为评价指标,对三个模型训练效果进行 评价,最终训练参数如表2所示。
表2
步骤5、获取待检测高分辨率图像,基于训练好的YOLOv5模型,对所 述待检测高分辨率图像中的虾进行检测;
步骤6、统计检测到的虾的数量,输出计数结果。
为了证实本发明中检测方法的有效性,发明人共设计三组对比实验, 分别为使用原图与裁切后的图像的训练集1进行训练得出模型1,使用原 图的训练集2进行训练得出模型2,仅使用裁切后的图像的训练集3进行 训练得出模型3。使用三个模型对验证集的图像进行预测,挑选出六组不 同干扰环境下的预测图像进行对比。
如图8所示,(a)组中模型1的检测与人工计数结果相同,相对于 模型2,模型1成功检测到了图像最底部有水面反光干扰的虾,模型2与 模型3均未检测到所有的虾,模型3效果最差,查全率仅有71%;(b) 组中模型1可以准确检测到被泡沫遮挡的虾。模型3出现了对重叠目标无 法分辨的情况;(c)组中模型1检测到了图中被遮挡仅露出虾尾的目标, 说明模型1对局部特征学习效果较好,模型2与模型3均未检出全部目标; (d)组中模型1准确分开了一组聚集目标,并正确标记数量,模型2与 模型3出现了漏检;(e)组中模型1同样准确检出了被泡沫遮挡和水面 反光干扰的目标;(f)中模型1对非正常体位的虾进行了精确识别,而模 型2与模型3因为训练过程中缺少此部分细节所以未能实现全部检出。由 此可见,经过自适应裁切算法生成训练数据集训练的模型1无论是在虾被 遮挡,或者是被水面反光干扰,或者是出现扭曲变形的情况下,均能准确 的检测出所有目标,并且能精确计数。
本发明实施例中根据工厂化养殖虾的图像数据作为训练集,通过自适 应裁切算法进行处理之后输入到YOLOv5目标检测网络进行训练,并得出 三个不同训练集训练后的模型。经过对比实验,原图与经过自适应裁切算 法混合之后的数据集2训练得出的模型1最终mAP@0.5达到0.975,大于 使用原图进行训练的模型2与仅适用自适应裁切算法得出的模型1的 mAP@0.5,证明了本文算法的可行性。使用深度学习算法对工厂化养殖过 程中虾的识别和计数具有较高的准确率,为养殖过程中的数据分析、定量 饵料投喂提供了数据支撑。本文仅对数据集处理方面进行了研究,后续可 对网络结构与算法运行效率等进行深入研究,提高工厂化养殖过程中信息 化,数字化的程度,为养殖业发展提供准确有效的参考。
对应本发明中的高分辨率图像下水产养殖物的工厂化养殖计数方法,本 发明还提供了高分辨率图像下水产养殖物的工厂化养殖计数装置。如图9所 示,其示出了本发明实施例中一种高分辨率图像下水产养殖物的工厂化养殖 计数装置的结构示意图,该装置包括:
图像获取单元901,用于获取水产养殖物养殖池的高分辨率图像数据集;
裁切单元902,用于根据所述高分辨率图像的尺寸与YOLOv5模型图像 预处理之后的图像尺寸计算出裁切数量与裁切窗口滑动步长;按照滑动的裁 切窗口依次对所述图像获取单元901获取的高分辨率图像数据集中的每幅高 分辨率图像进行裁切;所述裁切窗口按照所述裁切窗口滑动步长滑动;
训练集单元903,用于将所述裁切单元902得到的所述低分辨率图像并 入所述高分辨率图像数据集,形成训练集;
训练单元904,用于利用所述训练集单元903形成的训练集对YOLOv5 模型进行训练;
检测单元905,用于获取待检测高分辨率图像,基于所述训练单元904 训练好的YOLOv5模型,对所述待检测高分辨率图像中的水产养殖物进行检 测;
统计单元906,用于统计所述检测单元905检测到的各类水产养殖物的 数量,输出每类水产养殖物的计数结果。
进一步地,还包括标签映射单元907,所述标签映射单元用于在裁切图 像的同时对裁切后的图像进行标签映射。
进一步地,所述标签映射单元具体用于:
计算原图目标检测框与当前滑动裁切窗口两个矩形框的交集与并集比值; 其中,原图目标检测框为左上角坐标(x1,y1)及右下角坐标(x2,y2)形成的 矩形框;当前滑动裁切窗口为左上角坐标(x3,y3)及右下角坐标(x4,y4) 形成的矩形框;
当两个矩形框的交集与并集比值大于0时,
如果x3小于x1,则x5等于x1,否则x5=x3;
如果x4大于x2,则x6等于x2,否则x6等于x4;
如果y3小于y1,则y5等于y1,否则y5等于y3;
如果y4大于y2,则y6等于y2,否则y6等于y4;
基于x5、x6、y5、y6得到裁切图目标检测框的标注映射坐标;其中,x5、 x6、y5、y6是中间计算结果,裁切图目标检测框的标注映射坐标包括左上角 坐标(xtop,ytop)及右下角坐标(xbot,ybot);其中,xtop=x5-x1,ytop=y5-y1, xbot=x6-x1,ybot=y5-y1。
进一步地,图像获取单元包括工业摄像头。
对于本发明实施例的高分辨率图像下水产养殖物的工厂化养殖计数装置 而言,由于其与上面实施例中的高分辨率图像下水产养殖物的工厂化养殖计 数方法相对应,所以描述的比较简单,相关相似之处请参见上面实施例中部 分的说明即可,此处不再详述。
本发明实施例还公开了一种计算机可读存储介质,该计算机可读存储 介质内存储有计算机指令集,计算机指令集被处理器执行时实现如上文任 一实施例所提供的高分辨率图像下水产养殖物的工厂化养殖计数方法。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第 一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后 次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本 发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外, 术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含, 例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于 清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本发明所提供的几个实施例中,应该理解到,所揭露的技术内容,可 通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例 如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划 分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些 特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接 耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接, 可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全 部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单 元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单 元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售 或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本 发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个 存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服 务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。 而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、 随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光 盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对 其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通 技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并 不使相应技术方案的本质脱离本发明各实施例技术方案的范围。