当前位置: 首页 > news >正文

基于YOLOv11的水面垃圾智能检测系统

📖 项目背景

随着环保意识的日益增强,水体污染治理成为社会关注的焦点。传统的人工巡检方式效率低下,成本高昂。本项目基于深度学习技术,开发了一套智能化的水面垃圾检测系统,能够自动识别水面上的瓶子和罐子等垃圾,为环保部门提供高效的监测手段。

🎯 技术亮点

🔥 核心技术栈

  • 深度学习框架: YOLOv11(最新版本)
  • 检测精度: mAP50达到97.09%,mAP50-95达到76.42%
  • 检测速度: 平均4.0 FPS,单张图片推理时间约0.25秒
  • 检测类别: Bottle(瓶子)、Can(罐子)
  • 数据集规模: 338张高质量标注图片

📊 性能表现

📈 模型性能指标:
✅ 精确率(Precision): 93.82%
✅ 召回率(Recall): 93.46%
✅ mAP50: 97.09%
✅ mAP50-95: 76.42%
✅ 检测成功率: 100%

🛠️ 核心代码解析

1. 数据预处理模块

def voc_to_yolo(xml_file, img_width, img_height, class_names):"""将VOC格式的标注转换为YOLO格式Args:xml_file: XML标注文件路径img_width: 图片宽度img_height: 图片高度class_names: 类别名称列表Returns:YOLO格式的标注列表"""tree = ET.parse(xml_file)root = tree.getroot()yolo_annotations = []for obj in root.findall('object'):class_name = obj.find('name').textif class_name not in class_names:continueclass_id = class_names.index(class_name)bbox = obj.find('bndbox')xmin = float(bbox.find('xmin').text)ymin = float(bbox.find('ymin').text)xmax = float(bbox.find('xmax').text)ymax = float(bbox.find('ymax').text)# 转换为YOLO格式 (中心点坐标 + 宽高比例)x_center = (xmin + xmax) / 2.0 / img_widthy_center = (ymin + ymax) / 2.0 / img_heightwidth = (xmax - xmin) / img_widthheight = (ymax - ymin) / img_heightyolo_annotations.append(f"{class_id} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}")return yolo_annotations

2. 模型训练核心代码

def main():"""水面垃圾检测模型训练主函数"""print("🗑️ 水面垃圾检测训练开始")print("=" * 50)# 加载YOLOv11模型model = YOLO('models/yolo11n.pt')# 训练参数配置results = model.train(data='data/data.yaml',          # 数据集配置文件epochs=100,                     # 训练轮数imgsz=640,                      # 输入图像尺寸batch=16,                       # 批次大小device='0',                     # GPU设备workers=4,                      # 数据加载线程数cache=True,                     # 缓存数据集amp=False,                      # 混合精度训练project='garbage_results',      # 项目目录name=f'yolo11n_garbage_{datetime.now().strftime("%Y%m%d_%H%M%S")}',patience=20,                    # 早停耐心值save=True,                      # 保存检查点verbose=True,                   # 详细输出val=True,                       # 验证plots=True,                     # 生成图表# 数据增强参数(针对水面垃圾图像优化)hsv_h=0.015,                    # 色调增强hsv_s=0.7,                      # 饱和度增强hsv_v=0.4,                      # 明度增强degrees=10.0,                   # 旋转角度translate=0.1,                  # 平移比例scale=0.5,                      # 缩放比例flipud=0.0,                     # 垂直翻转fliplr=0.5,                     # 水平翻转mosaic=1.0,                     # 马赛克增强mixup=0.1,                      # 混合增强)print("\n🎉 水面垃圾检测训练完成!")return results

3. 智能检测推理代码

    for i, image_path in enumerate(test_images, 1):image_name = os.path.basename(image_path)print(f"\n📷 处理图片 {i}/{len(test_images)}: {image_name}")start_time = time.time()# 执行检测results = model(image_path, verbose=True)inference_time = time.time() - start_timetotal_inference_time += inference_time# 处理检测结果result = results[0]if len(result.boxes) > 0:detection_count += 1print(f"  ✅ 检测到 {len(result.boxes)} 个目标")# 显示检测到的类别和置信度for box in result.boxes:class_id = int(box.cls[0])confidence = float(box.conf[0])class_name = model.names[class_id]print(f"    - {class_name}: {confidence:.2f}")else:print("  ❌ 未检测到目标")print(f"  ⏱️ 推理时间: {inference_time:.3f}s")# 保存结果图片output_path = os.path.join(output_dir, f'result_{image_name}')result.save(output_path)print(f"  💾 结果已保存: {output_path}")

📈 训练过程可视化

训练损失曲线

从训练结果可以看出,模型在94个epoch后达到最佳性能:
在这里插入图片描述

🏆 最终训练结果:
- 训练时长: 0.124小时
- 最佳epoch: 74
- 最佳mAP50: 97.09%
- 最佳mAP50-95: 76.42%
- 早停机制: 20个epoch无改善后自动停止

精确率-召回率曲线

在这里插入图片描述

F1分数曲线

在这里插入图片描述

混淆矩阵

在这里插入图片描述

数据集标签分布

在这里插入图片描述

类别检测性能

📊 各类别检测精度:
🍼 Bottle(瓶子):- Precision: 98.9%- Recall: 97.5%- mAP50: 99.1%- mAP50-95: 80.3%🥤 Can(罐子):- Precision: 88.7%- Recall: 89.5%- mAP50: 95.0%- mAP50-95: 72.5%

训练样本展示

在这里插入图片描述

验证集预测对比

在这里插入图片描述
在这里插入图片描述

🎯 实际检测效果

检测示例

在实际测试中,系统对10张测试图片进行了检测:

📷 检测结果展示:
✅ 图片1: 检测到1个Bottle,置信度87%
✅ 图片2: 检测到1个Bottle,置信度89%
✅ 图片3: 检测到1个Bottle,置信度89%
✅ 图片4: 检测到1个Bottle,置信度88%
✅ 图片5: 检测到1个Bottle,置信度89%
...
📊 总体检测率: 100%
⚡ 平均推理速度: 4.0 FPS

检测结果图片展示

检测样例1-5

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从上述检测结果可以看出:

  • 检测精度高: 所有目标都被准确识别并标注
  • 边界框精准: 检测框紧贴目标边界,定位准确
  • 置信度稳定: 大部分检测置信度在85%-90%之间
  • 适应性强: 能够适应不同光照、角度和背景环境

🚀 项目部署与应用

系统要求

# 环境配置
Python >= 3.8
PyTorch >= 1.8.0
CUDA >= 11.0 (GPU加速)
Ultralytics >= 8.0.0# 安装依赖
pip install ultralytics torch torchvision opencv-python

快速使用

# 1. 数据预处理
python prepare_dataset.py# 2. 模型训练
python train_garbage_detection.py# 3. 模型测试
python test_saved_model.py

🌟 技术创新点

1. 数据增强策略

针对水面环境的特殊性,采用了定制化的数据增强策略:

  • 色彩增强: 适应不同光照条件下的水面环境
  • 几何变换: 模拟不同角度的拍摄视角
  • 马赛克增强: 提高小目标检测能力

2. 模型优化

  • 轻量化设计: 使用YOLOv11n模型,参数量仅258万
  • 实时检测: 平均推理时间0.25秒,满足实时监控需求
  • 高精度: mAP50达到97.09%,确保检测准确性

3. 工程化实现

  • 模块化设计: 数据处理、训练、测试模块独立
  • 可视化输出: 提供丰富的训练过程可视化
  • 易于部署: 支持GPU/CPU推理,适应不同硬件环境

🔮 应用前景

环保监测

  • 河流湖泊监测: 实时监控水体垃圾污染情况
  • 海洋保护: 海面垃圾自动识别与定位
  • 城市水系: 城市河道垃圾智能巡检

智慧城市

  • 无人机巡检: 结合无人机进行大范围水域监测
  • 监控系统: 集成到现有视频监控系统
  • 数据分析: 提供垃圾分布热力图和趋势分析

💡 总结与展望

本项目成功实现了基于YOLOv11的水面垃圾智能检测系统,具有以下优势:

高精度: mAP50达到97.09%,检测准确率高
高效率: 平均4.0 FPS,满足实时监控需求
易部署: 模块化设计,支持多种硬件平台
可扩展: 支持更多垃圾类别的扩展训练

http://www.lryc.cn/news/591239.html

相关文章:

  • halcon 模板匹配
  • 高精度加法模版介绍
  • 阿里云-通义灵码:隐私保护机制—为数据安全筑起铜墙铁壁
  • USRP中心频率与采样率联合设置
  • MyBatis 之配置与映射核心要点解析
  • CPU架构、三级缓存以及内存优化屏障
  • 指针数组和数组指针的应用案例
  • 「Trae IDE 全流程实战」——从 0 下载安装,到在本地跑起一个可玩的 2048 小游戏
  • SpringBoot使用ThreadLocal共享数据
  • 永磁同步电机MTPA与MTPV曲线具体仿真实现
  • 大语言模型Gemini Deep Research 全流程解读+使用攻略
  • 杨耀东老师在ICML2025上对齐教程:《语言模型的对齐方法:一种机器学习视角》
  • 死信队列:springboot+RabbitMQ实现死信队列
  • GitHub Jekyll博客本地Win开发环境搭建
  • NumPy 数组存储字符串的方法
  • 算法提升之字符串练习-02(字符串哈希)
  • 【leetcode】852. 山脉数组的封顶索引
  • React 18 vs Vue3:状态管理方案深度对比
  • 深入理解Map.Entry.comparingByValue()和Map.Entry.comparingByKey()
  • 我爱学算法之—— 前缀和(下)
  • 第十四章 gin基础
  • 深入理解React Hooks:从使用到原理
  • Qt CMake 学习文档
  • 【安卓按键精灵辅助工具】adb调试工具连接安卓模拟器异常处理
  • QT之openGL使用(二)
  • 端到端神经网络视频编解码器介绍
  • 电脑截图软件排行榜 Windows和mac电脑截图软件TOP10
  • 基于Rust游戏引擎实践(Game)
  • ZKmall开源商城架构助力增长:多端流量聚合与用户体验
  • Web3智能合约技术论述