基于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,满足实时监控需求
✅ 易部署: 模块化设计,支持多种硬件平台
✅ 可扩展: 支持更多垃圾类别的扩展训练