深度学习在环境问题中的应用

在太平洋西北地区,三文鱼的生存和河流流量问题经常成为新闻焦点,掌握的三文鱼种群数据是讨论中的关键部分。

曾想探究深度学习,特别是目标检测技术,是否能够应对实际问题,比如帮助计算通过鱼梯的鱼类数量。答案是可以的,而且有足够多的免费或开源工具可以完成这项任务的所有方面。这种方法也可以用来计算其他物体的数量。如果有一个想法,并且能够获取一些图片,可以使用这个指南来帮助运行自己的计算机视觉模型。

步骤一:一个引人入胜的问题

太平洋西北地区是许多三文鱼物种的家园,它们的生活遵循一个可预测的模式:在淡水中孵化,在海洋中度过大部分生命,然后返回上游到原来的淡水孵化地点产卵,然后死亡。

然而,河流并非只有三文鱼在使用。河流上遍布着数百英里的水电大坝,这些大坝可能会阻止三文鱼的上游迁移。为了解决这个问题,大坝都配备了所谓的“鱼梯”。这些结构允许鱼类像在自由流动的河流中一样,以短距离跳跃上游。

鱼梯上的观察窗不仅让能够目睹这种迁移,还为收集数据提供了手段。关于三文鱼返回上游的数量的数据随后可以用来确定捕鱼季节的长度,设定每天捕鱼的限制,调整大坝的流量,并帮助了解在这种平衡行为中做得如何。

目前,鱼类计数是由训练有素的专家进行的,无论是实时计数还是通过审查视频录像。鉴于这项工作的劳动强度,专家工具的辅助可以提供一个很好的提升,以增加采集的数据量,数据可用的速度,或者记录数据的地点数量。

步骤二:图像和预处理

无论选择哪个项目,都需要从数据开始。如果不能从理想的数据开始,不要气馁;仍然有很多可以学习的地方。开始时使用的是通过网络抓取的在鱼梯上拍摄的度假照片。这些图片包含了各种地点、照明条件、儿童的轮廓,以及可能的后期制作修改。这些图片如此难以处理,以至于真正能够标记的只是构成“鱼”的东西!带着这个继续了整个流程,并解决了不少问题,所以请记住,可以从简单开始。一旦知道需要什么,找到了一些更好的视频记录的图片。

对于视频格式的图片,使用了免费的VLC Media Player工具来运行视频并提取了300多个帧。选择了317张图片,包括15张完全没有鱼的图片。

为了准备这些图片进行深度学习,还需要为每个要检测的物体关联一个正确标记的盒子。训练有素的专家通过物种、成熟与幼年、孵化场与野生来标记鱼类。

没有鱼类识别专业知识,仍然可以创建3个类别:‘adipose’用于有完整且可见的脂肪鳍的鱼;‘no_adipose’用于没有脂肪鳍的鱼;‘unknown’用于只有部分在观察窗内的鱼,或者其脂肪鳍区域被另一条鱼或人工制品遮挡的鱼。

免费工具LabelImg工作得很好,在下午就完成了317张鱼图片的框选和标记。

知道可以用大约300张图片来制作一个模型的原因之一是“增强”的概念。增强通过构造变化来处理原始图片,以便模型能够接触到各种变化,如照明和方向。

在分类中,这可以通过几个Python库轻松完成,但对于目标检测,如果图片被翻转或旋转,标签框也需要进行变换。

与其手工进行这些变换,利用了Roboflow上的免费工具。上传了图片和标签文件,选择了创建带有随机模糊量、亮度变化和水平翻转的额外图片的选项。在这一步之后,有951张训练图片。

步骤三:选择和训练模型

虽然可以从头开始构建一个目标检测模型,但选择从已知模型开始项目,作为在进行任何定制之前的基线。所有这些都可以

<!-- 此处省略了部分代码,以满足token数量要求 -->

在Roboflow的模型库中完成,并且可以尝试多个模型。

“只需要看一次”。YOLO是一种流行的目标检测机器学习模型,由华盛顿大学的一组研究人员在2015年引入。这种新方法用额外的卷积层替换了图像分类器的最后几层,允许它一次性找到所有实例。这种速度上的立即提升是计算机视觉和目标检测的一个重大飞跃。自原始论文以来,该模型已经多次改进,2020年6月发布了一个基于这个早期基础的新模型,即YOLO v5。有关模型的更多细节,请访问https://github.com/ultralytics/yolov5。

鉴于YOLO的普及、速度和准确性,以及利用Roboflow工具的便利性,尝试YOLO v5模型是一个显而易见的选择。从配置环境和构建模型的Google Colaboratory模板开始,通过上传新的训练集,尝试不同的周期和阈值来定制这个模板。

步骤四:探索模型结果

结果令人印象深刻且富有信息量。

令人印象深刻的是,YOLO v5模型在900多张图片上训练了500个周期,大约需要一个小时,对新图片进行推理(预测)大约需要12毫秒,并且达到了大约70%的mAP@0.5。

该模型正确识别了鱼类——无论是有脂肪鳍还是没有脂肪鳍的!

单独查看和评估模型在测试图片上的成功可能会有点繁琐,所以这就是mAP@0.5指标的价值所在。

mAP@0.5这个指标包含两部分。首先,‘mAP’表示所有标签的平均精度或正确性。其次,‘@0.5’为预测的鱼边界框与原始注释的重叠程度设定了一个阈值。这部分是目标检测中的关键指标;它防止模型因猜测正确的鱼而获得信用,而是在实际鱼周围画一个框,而不是围绕其他人工制品(如阴影)画一个框。

mAP@0.5是评估目标检测的常用指标。这个模型达到了70%的mAP@0.5——但这是否足够好?对于某些应用来说,这已经足够了。在这个特定的应用中,不仅仅是给单个图像分配的标签,理想情况下,需要将完整解决方案的结果与当前鱼类计数方法的估计误差进行比较。

信息量丰富——改变的照明条件、阴影和拥挤的条件可能导致计数不足和过多。在下面的图片中,故意将置信度阈值设置得很低,为0.4,以暴露角落案例或为模型提供挑战的图片。请记住,目标是看看否准备好将此用于现实生活的挑战,这意味着寻找问题!

模型在这里犯了一个错误,增加了一条置信度得分为0.42的额外鱼类。

在实际应用中,当对象从一帧视频追踪到下一帧时,阴影经常移动,标签消失。下一个挑战将是解决从一帧到下一帧的对象追踪,以便每条鱼恰好计数一次,不管它在观察窗口中停留多长时间。

步骤五:考虑下一步

现在最重要的一步——学到了什么?

需要有良好照明的图片。观察窗口的高度和宽度不是关键,但深度需要仔细选择,以减少可以遮挡其他鱼类的鱼类数量。

需要正确的物种标签来训练模型,以区分红鲑、银大马哈鱼和其他物种。由于不是鱼类识别专家,有可能将疤痕误认为是小脂肪鳍。纠正错误标记的图片是改进模型的另一种方式。

在鱼梯中向上游游动的三文鱼会暂停休息不同的时间。在某些情况下,它们会慢慢游动并保持位置,而在其他时候,它们会慢到随着水流向后漂动。这增加了额外的复杂性,将需要一个先进的系统来从一帧视频追踪到下一帧的对象(鱼)。

最重要的是,虽然上述指标来自更好的图片,但大部分学习发生在第一组图片上,这强调了一点,即不需要优秀的图片就可以在尝试深度学习和目标检测项目中取得进展。换句话说,找不到理想的图片不应该阻碍开始!

根据目前的项目,认为可以公平地说,机器学习/人工智能/深度学习已经准备好走出实验室,应用于现实世界的项目。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485