基于PP-YOLO的水下鱼群检测方法研究
作者: 毛雷 张孟思 周湘超
关键词:目标检测;样本扩充;水面波动
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2024)21-0018-03
0 引言
随着经济的持续增长,人们对水产品的需求也不断增长,使得水产养殖业快速发展。为了满足这一需求,并应对市场竞争,水产养殖行业正朝着规模化、自动化和智能化的方向迈进。在这一进程中,计算机视觉技术开始在水产养殖业中发挥作用。
监测养殖环境和管理养殖过程是水产品养殖中的重要内容。以往都是使用人工的方式来进行的,随着养殖规模的扩大和市场竞争的加剧,需要一种大规模、低成本的方式来监测养殖环境、管理养殖过程。
计算机视觉技术通过图像处理、模式识别等算法,实现监测养殖环境并辅助管理养殖过程[1]。借助特定的算法和系统,养殖者可以实时获取养殖池中的关键信息,从而帮助养殖者及时发现问题[2]。
1 相关技术
YOLO(You Only Look Once) 是一种深度学习算法,用于目标检测任务[3]。相比于传统的对象检测方法,YOLO具有更高的速度和效率[4]。它将对象检测任务视为一个端到端的回归问题,通过单个神经网络模型同时预测图像中所有对象的边界框和类别。这与传统的滑动窗口或区域建议方法不同,后者需要多次运行分类器来检测对象。YOLO将图像分成一个固定大小的网格。每个网格负责预测固定数量的边界框和类别置信度分数。置信度分数反映了该边界框包含对象的概率,以及边界框的预测准确度。每个网格预测固定数量的边界框,每个边界框由中心坐标、边界框的宽度和高度以及置信度分数几个参数构成。每个网格还会预测每个边界框中对象的类别。这些类别预测与置信度分数一起形成了最终的对象检测结果[5]。
飞桨(Paddle-Paddle,PP) 是百度公司推出的源于产业实践的开源深度学习平台。在平台上集成了多个深度学习模型和相关项目供相关从业人员进行学习和研究。PP-YOLO是飞桨中内置的一系列YOLO 模型,它有更高的检测精度且部署友好[6]。
SSM框架是Spring、SpringMVC和MyBatis三个开源框架的集成,常用于Web项目。其中,Spring作为黏合剂,负责管理项目的bean;SpringMVC基于Java实现了MVC设计模式,负责请求的转发和视图的管理;My⁃ Batis是半ORM框架,封装了JDBC,使数据库操作变得透明。SSM框架通过明确组件接口、依赖注入和职责解耦等思想,简化了Web应用的开发,提高了开发效率。
2 数据集处理与模型训练
2.1 数据集处理
数据集是一组在特定环境下采集的俯视视角图片,涵盖了多个时间段,养殖物为观赏鱼类。数据集中还包括了与每张图片相对应的详细标注信息。整个原始数据集约1 000张图片。数据集的例如图1所示。
在机器学习中,数据集的质量对模型的性能起着至关重要的作用。然而,在实际场景中,会遇到数据集体量不足和缺乏真实场景干扰的问题。这不仅限制了模型的泛化能力,还可能导致模型在生产环境中表现不佳。
水面波纹是一种自然界中常见的现象,当风吹过水面时,会产生一系列的涟漪,这些涟漪以正弦波的形式在水面上传播。可以通过模拟正弦波在图片中的扰动来生产图像。在模拟水面波纹时,我们可以将每个像素点视为一个质点,并计算其与周围关联点的像素值之间的偏移系数。这个偏移系数可以通过一定的公式计算得到,以便在生成图片时能够准确地模拟出正弦波的传播效果。
水面波纹作为一种常见的自然干扰现象,对于图像识别等任务具有重要的影响。通过在引入水面波纹的干扰来模拟真实场景中的复杂条件,使模型更好地适应各种情况。增加水面波纹的具体代码如图2所示。
具体而言,我们可以采用以下步骤来生成水面波纹图片:
首先,需要确定每个像素点的位置坐标,例如(x, y)。接着,需要计算每个像素点与其关联点的偏移系数。这个偏移系数可以使用公式1来计算。然后,根据偏移系数来计算每个像素点处理后的像素值。最后,我们将处理后的像素值应用到原始图片上,从而生成出水面波纹的效果。这个过程中,我们可以根据需要对参数进行调整,以便得到更加逼真的效果。
水面波纹在客观上是按照正弦波的形式传播的,通过模拟正弦波在图片中的扰动来生产对应的图片。对于每个像素点来说,处理后的像素值需要与关联点的像素值进行一些计算才能得到。其中这个像素点与关联点的偏移系数由公式(1)计算得到。
a = A × sin(d/λ × 2 × π - φ) × (λ/d ) (1)
式中:A 为振幅,λ为波长、φ为相位,d 为像素点到水波中心点的距离。得到偏移系数后,可以得到点(x,y)的关联点坐标。
在图1的基础上,我们增加了水面波纹效果,得到了如图3所示的图像。这一变化使得鱼的轮廓特征发生了显著的变化。为了更加逼真地模仿真实场景中的水面波纹,我们可以通过调整振幅、波长、相位和水波中心点等参数来生成更多的数据集。这些参数的变化将直接影响水波的形状,从而进一步影响鱼的轮廓特征。例如,当振幅增大时,水波会变得更加剧烈,导致鱼轮廓的外形变化程度增加。
通过图3可以看出,增加波纹后的鱼的位置并没有明显变化。因此,新生成的图片可以直接沿用原始图片中的标签信息。
2.2 模型训练
在目标检测领域,PP-YOLO模型在飞浆平台上的便捷使用与部署特性使其成为水产养殖行业的理想选择。水产养殖环境多变,要求目标检测算法既要准确又要快速。PP-YOLO模型恰好满足这些需求,其实时性和高精度使其成为监测鱼类数量、种类和状态的理想工具。此外,飞浆平台提供的丰富API和工具使得模型训练与部署变得简单高效,无需深厚深度学习背景也能轻松上手。因此,PP-YOLO模型在水产养殖行业的智能化发展中具有广阔的应用前景,有望助力行业实现更高效、安全的养殖管理。
本次实验使用扩充的数据集和PP-YOLO模型。将原有的数据集扩充到10 000张图片,80%作为训练集,20%作为测试集。使用飞浆Ai Studio平台进行具体操作。设置学习率为0.01,设置epoch 为500,设置batch_size为12。通过对mAP的观察,发现在训练初期能快速提高准确率,后续保持相对稳定。在55个批次时开始进入稳定状态,第82个批次时各项指标达到最佳状态。此时的统计指标如下:准确率95.1%、召回率93.8%、F1值为93.9%、mAP为94.8%。检测效果如图4。
根据实验结果,我们可以清晰地观察到那些受到水面波纹影响的鱼群能够被准确地检测出来。同时,即便是在平静的水面环境下,该检测方法的识别性能也不受影响。这一结果验证了该检测方法的稳定性和可靠性。
3 系统设计
在水产养殖业中,需要通过水面检测到的鱼群数量,当数据出现异常时发出告警。系统整体分为三大部分:应用层、模型层和数据层。应用层主要为业务应用,包括实时查看和异常告警等功能。模型层主要由数据模型和统计模型组成,负责目标的检测、识别和计数。数据层则由各个摄像头和相关网关组成。系统架构图如图5所示。
应用层采用SSM框架进行开发,包括用户管理、视频预览、告警策略管理等模块。为养殖场的自动化、智能化管理提供支持。通过用户管理完成用户的注册、登录、权限控制等功能,充分保证信息安全。通过视频预览,使得用户可以实时查看养殖场现场情况,从而完成在线巡检等工作。告警策略需要用户根据以往经验,对水面鱼群的绝对数量和变化趋势进行自动监测,当相关数据产生异常时,根据用户配置的告警方式进行相应处理。
模型层的逻辑是系统的核心部分。应用系统根据模型层得出的结果,结合用户的告警配置及时为用户发送告警信息。通过将AI Studio导出的模型部署在服务器上,实现本地化计算,然后根据目标检测的结果对鱼群数量进行监测和采样。模型层上报给应用层的数据为每小时的检测结果,采样方式为区间最大值。
数据层是整个系统的数据来源,主要包含摄像头和网关设备。每个摄像头每分钟进行一次采样,为了避免同时上传图像导致下游服务宕机,各个摄像头上报的延时并不相同。相关网络交换和路由设备主要用于完成摄像头的组网,连接摄像头和图片服务器,然后通过图片服务器将图像信息传输给模型层。
根据以上的系统架构设计出了系统整体框架。系统主要包括摄像头、检测模型、统计计数、告警策略、实时查看、发送告警、策略管理等几个部分。系统的输入主要包括摄像头的实时视频流、用户自定义的检测规则和告警策略等。摄像头实时视频流作为系统的原始数据源,为检测模型提供了丰富的图像信息。用户自定义的检测规则允许根据自身需求调整检测模型的参数和阈值,以实现更精准的异常检测。告警策略则允许用户根据事件的重要性和紧急程度设定不同的告警级别和通知方式。这些输入信息共同构成了系统的基础,为后续的图像分析、异常检测、告警生成等环节提供了重要支持。系统整体框架如图6所示。
在该架构逻辑系统的整体框架下,实现了智能化的养殖管理。这一系统通过业务层与检测模型的紧密连接,为用户提供了实时查看功能,使他们能够随时掌握养殖场所的最新情况。同时,告警策略相关功能依赖于模型层的统计计数模块,为用户提供基于数据分析和处理的有价值信息。用户可以根据鱼群数量、数量变化趋势等多个维度进行监测,从而及时调整养殖策略。这一智能化管理方式不仅提高了养殖效率,还降低了成本,为用户带来了显著的经济效益。通过这一系统,我们推动了养殖业向更加智能化、高效化的方向发展,为行业的可持续发展做出了贡献。
4 总结
本文通过增加水面波纹的方式扩充数据集,使用PP-YOLO模型实现了对水下鱼群的检测。这种方式使得训练得到的模型在实际应用场景中取得了良好的效果。基于这个模型,设计了一个告警系统,支持实时预览、智能告警等功能,为养殖场的自动化、智能化提供了有力的支撑。
不过,仍然还存在一些值得改进的地方,例如少量水面反光导致模型出现漏判的情况。这可以在今后的工作中进一步改进,进一步提高模型在复杂水面环境下的检测准确性。总的来说,本文提出的基于PP-YOLO的智能养殖管理系统,为水产养殖行业的智能化发展提供了有益的实践探索。