news 2026/2/14 10:51:39

【图像算法 - 39】环保监测应用:基于 YOLO 与 OpenCV 的高精度水面垃圾检测系统实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【图像算法 - 39】环保监测应用:基于 YOLO 与 OpenCV 的高精度水面垃圾检测系统实现

摘要: 本文将详细介绍如何利用当前先进的深度学习目标检测算法 YOLOv11,结合强大的计算机视觉库 OpenCV,构建一个高效、准确的水面垃圾检测系统。我们将从环境搭建、数据准备、模型训练到最终的检测应用,手把手带你完成整个流程,为河流、湖泊、港口、近海等水域的智能环保监测、无人船巡检、生态治理提供实用的技术支撑。
关键词: YOLOv11, OpenCV, 水面垃圾检测, 深度学习, 目标检测, Python


1. 引言

随着城市化与工业发展,水体污染问题日益严峻,其中水面漂浮垃圾(如塑料瓶、泡沫、废弃渔网、生活垃圾等)不仅破坏生态环境,还影响航运安全与城市形象。传统人工巡查方式效率低、覆盖范围有限,难以满足大范围、高频次的监测需求。借助人工智能技术实现水面垃圾的自动识别与定位,已成为智慧环保与河湖长制数字化的重要方向。

YOLO(You Only Look Once)系列算法以其高速度和高精度在目标检测领域独树一帜。最新的 YOLOv11在继承前代优点的同时,进一步优化了架构和训练策略,性能更上一层楼,尤其适合处理水面场景中尺度多变、反光干扰、背景复杂的漂浮物目标。OpenCV 作为最流行的开源计算机视觉库,提供了丰富的图像处理功能。本文将结合 YOLOv11 和 OpenCV,实现对水面垃圾gabbage)这一单一类别的高精度检测。


2. 环境准备
2.1 软件依赖

首先,确保你的开发环境满足以下要求:

  • Python: 推荐使用 Python 3.8 或更高版本。
  • PyTorch: YOLOv11 基于 PyTorch 框架,需安装相应版本。
  • YOLOv12: 通过ultralytics包安装。
  • OpenCV: 用于图像处理和可视化。
  • PyQT: 可视化UI(可选)。

安装命令

# 安装 PyTorch (根据你的CUDA版本选择)pipinstalltorch torchvision torchaudio# 安装 YOLOv11pipinstallultralytics# 安装 OpenCVpipinstallopencv-python

3. 数据集准备与标注

高质量的数据集是模型成功的关键。

3.1 数据收集

收集大量水面图像或视频帧,涵盖:

  • 不同水域类型(河流、湖泊、水库、海洋、港口)
  • 不同天气与光照(晴天、阴天、逆光、水面反光)
  • 不同垃圾类型(塑料瓶、塑料袋、泡沫箱、树枝、废弃轮胎等)
  • 不同尺度与密度(单个垃圾 vs 垃圾聚集区)
  • 不同视角(岸基摄像头、无人机航拍、无人船搭载相机)

数据可来源于:

  • 自主采集(无人机/无人船)
  • 公开数据集(如 TACO、SeaShips、Water Surface Trash Dataset)
  • 合作环保部门或水务集团
3.2 数据标注

使用标注工具(如 LabelImg, CVAT, Roboflow 等)对图像中的每一片水面垃圾区域进行标注:

  • 框出垃圾边界(Bounding Box)
  • 所有垃圾统一赋予类别标签:gabbage

标注格式:YOLO 使用.txt文件存储标注信息,格式为:

<class_id> <x_center> <y_center> <width> <height>

所有坐标值都是相对于图像宽高的归一化值(0-1)。

由于只有1 个类别class_id恒为0

3.3 数据集划分

将数据集划分为训练集(train)、验证集(val)和测试集(test),通常比例为7:2:18:1:1

3.4 数据集配置文件

创建一个 YAML 配置文件(如water_waste.yaml),定义数据集路径和类别信息:

train:/path/to/dataset/images/trainval:/path/to/dataset/images/valtest:/path/to/dataset/images/test# 类别数量nc:1# 类别名称names:['gabbage']

4. 模型训练
4.1 选择 YOLOv11模型

YOLOv11 提供了多个预训练模型(yolov11n.pt,yolov11s.pt,yolov11m.pt,yolov11l.pt,yolov11x.pt)。对于水面垃圾检测(目标小、易受波纹干扰),推荐使用yolov11s.ptyolov11m.pt,在速度与精度间取得良好平衡。

4.2 开始训练

使用ultralytics提供的命令行工具或 Python API 进行训练。

命令行方式

yolo traindata=water_waste.yamlmodel=yolov11s.ptepochs=100imgsz=640

Python API 方式

fromultralyticsimportYOLO# 加载预训练模型model=YOLO('yolov11s.pt')# ✅ 关键:使用 yolov12s.pt# 训练模型results=model.train(data='water_waste.yaml',epochs=100,imgsz=640)# 评估模型results=model.val()

训练过程中,可以监控损失函数、mAP(mean Average Precision)等指标,判断模型收敛情况。


5. 水面垃圾检测实现

训练完成后,使用训练好的模型进行检测。

5.1 加载模型
fromultralyticsimportYOLOimportcv2# 加载训练好的模型model=YOLO('runs/detect/train/weights/best.pt')# 替换为你的最佳权重路径
5.2 图像检测
# 读取图像img_path='river_scene.jpg'img=cv2.imread(img_path)# 使用模型进行预测results=model(img)# 解析结果forresultinresults:boxes=result.boxes# 获取边界框forboxinboxes:# 提取坐标和置信度x1,y1,x2,y2=box.xyxy[0].cpu().numpy().astype(int)conf=box.conf.cpu().numpy()[0]cls=int(box.cls.cpu().numpy()[0])label=model.names[cls]# 始终为 'floating_waste'# 在图像上绘制边界框和标签(统一用红色)cv2.rectangle(img,(x1,y1),(x2,y2),(0,0,255),2)cv2.putText(img,f'{label}{conf:.2f}',(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,0,255),2)# 显示结果cv2.imshow('Floating Waste Detection',img)cv2.waitKey(0)cv2.destroyAllWindows()

5.3 视频流/无人机实时检测

可将上述逻辑应用于无人机视频流或无人船摄像头,实现动态水域监控:

cap=cv2.VideoCapture(0)# 或视频文件路径whileTrue:ret,frame=cap.read()ifnotret:breakresults=model(frame)# ... (同上,处理结果并绘制)cv2.imshow('Live Waste Detection',frame)ifcv2.waitKey(1)==ord('q'):breakcap.release()cv2.destroyAllWindows()

6. 结果与分析
  • 精度: 在包含多样垃圾类型的高质量数据集上,YOLOv11 通常能达到较高的 mAP@0.5(>0.80),尤其对中大型漂浮物识别效果优异。
  • 速度: YOLOv11 推理速度快,在边缘设备(如 Jetson Orin)上也能实现实时检测(>15 FPS)。
  • 鲁棒性: 模型对水面波纹、反光、部分遮挡具有一定适应能力。

挑战

  • 小目标检测: 远距离或小型垃圾(如烟头、小塑料片)易漏检。
  • 背景干扰: 白色浪花、水草、倒影可能被误检为垃圾。
  • 密集遮挡: 垃圾堆叠导致边界模糊。

优化方向

  • 使用MosaicCopy-Paste数据增强提升小目标和密集场景性能。
  • 尝试更大的输入尺寸(如imgsz=1280)以捕获更多细节。
  • 结合实例分割(YOLOv11-Seg)获取垃圾精确轮廓,辅助体积估算。
  • 引入时序信息(视频帧跟踪)减少闪烁,提升稳定性。

7. 总结

本文详细介绍了基于YOLOv11和 OpenCV 实现水面垃圾检测的完整流程。通过单类别目标检测框架,我们能够高效、准确地定位各类漂浮废弃物,为水域清洁、生态评估、智能环卫提供可靠的技术手段。该系统可轻松部署于无人机、无人船、岸基摄像头等平台,助力“美丽中国”与“无废城市”建设,在智慧环保、河湖治理、海洋保护等领域具有广阔的应用前景。

🌍社会价值:自动化垃圾监测不仅能降低人力成本,更能为污染溯源、治理成效评估提供数据支持,推动环境治理从“被动响应”向“主动预防”转变。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/13 2:16:34

踩下电门瞬间,电动车总有个让人着迷的爆发力。这背后藏着复合电源系统的精妙配合,今天咱们拆开看看这个由电池组、超级电容和DCDC组成的能量组合怎么玩转瞬态功率

基于规则策略的纯电动汽车复合电源仿真模型&#xff0c;包括DCDC模型、电池模型&#xff0c;超级电容模型。先看动力电池的建模。这里用二阶RC等效电路能比较好地反映动态特性。试着用Python搭个简化模型&#xff1a; class BatteryModel:def __init__(self, soc0.8):self.soc …

作者头像 李华
网站建设 2026/2/7 16:21:51

先扔个核心代码镇楼

蒙特卡洛法&#xff08;mc&#xff09;模拟晶粒生长 利用仿真软件abaqus、ansys或其他软件模拟熔池的宏观温度场&#xff0c;并用matlab编写晶粒生长程序&#xff0c;将温度写入程序接口&#xff0c;微观模拟该温度下晶粒生长的过程。 内容包括程序源代码、参数设置视频教程% 蒙…

作者头像 李华
网站建设 2026/2/7 11:20:29

ffmpeg-python视频降噪实用指南:从基础应用到高级技巧

ffmpeg-python视频降噪实用指南&#xff1a;从基础应用到高级技巧 【免费下载链接】ffmpeg-python Python bindings for FFmpeg - with complex filtering support 项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg-python 视频处理中噪声问题一直困扰着许多创作者&…

作者头像 李华
网站建设 2026/2/7 20:05:30

AntiSplit-M:终极APK合并工具完整使用指南

AntiSplit-M&#xff1a;终极APK合并工具完整使用指南 【免费下载链接】AntiSplit-M App to AntiSplit (merge) split APKs (APKS/XAPK/APKM) to regular .APK file on Android 项目地址: https://gitcode.com/gh_mirrors/an/AntiSplit-M 在Android应用分发过程中&#…

作者头像 李华
网站建设 2026/2/10 11:27:31

60%成本削减+120亿参数激活:GLM-4.5V-FP8如何引爆中小企业AI革命

60%成本削减120亿参数激活&#xff1a;GLM-4.5V-FP8如何引爆中小企业AI革命 【免费下载链接】GLM-4.5V-FP8 项目地址: https://ai.gitcode.com/zai-org/GLM-4.5V-FP8 导语 智谱AI最新开源的GLM-4.5V-FP8多模态大模型&#xff0c;以1060亿总参数与120亿活跃参数的混合架…

作者头像 李华
网站建设 2026/2/11 7:44:03

三菱FX5U与3台三菱E700变频器专用协议通讯实战

三菱FX5U与3台三菱E700变频器 专用协议方式通讯程序(SL5U-26) 通讯说明&#xff1a;用三菱FX5U的PLC实现与多台三菱E700变频器的变频器专用协议通讯 器件&#xff1a;三菱FX5U PLC&#xff0c;3台三菱E700变频器&#xff0c;昆仑通态TPC7022NI触摸屏 功能&#xff1a;触摸屏上设…

作者头像 李华