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

深度学习框架YOLOV8模型如何训练水面及河道漂浮物垃圾检测数据集 建立基于深度学习YOLOV8河道水面垃圾检测系统

水面垃圾检测数据集、垃圾检测、YOLO模型通用

以下是水面垃圾检测(塑料瓶)数据集的结构化信息表格:


📊 水面垃圾检测(塑料瓶)数据集概览表

项目描述
数据集名称水面垃圾检测数据集(聚焦塑料瓶)
总图像数量1,200 张
数据划分- 训练集(Train):960 张
- 验证集(Val):120 张
- 测试集(Test):120 张
类别数量(nc)1 类
目标类别bottle(塑料瓶)
标注框总数3,248 个
每类图片覆盖所有 1,200 张图像均包含bottle目标
应用场景河道/湖泊/海洋垃圾监测、智能环保船、无人机巡检、水体清洁机器人等
任务类型目标检测(Object Detection)

📈 模型在验证集上的性能对比(mAP@0.5)

模型mAP@0.5
YOLOv5m0.90641
YOLOv8m0.90834
YOLOv11m0.89696

最佳表现:YOLOv8m(mAP@0.5 = 90.83%),显示该数据集质量高、标注精准,适合训练高精度水面垃圾检测模型。


📁 推荐目录结构

water_bottle_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── dataset.yaml

📄dataset.yaml示例

train:./images/trainval:./images/valtest:./images/testnc:1names:['bottle']

该数据集可直接用于环保 AI 系统开发水域智能治理学术研究


水面垃圾检测(塑料瓶)数据集的完整 YOLOv8 检测系统实现方案,包含:

✅ 从预训练模型开始的 YOLOv8 训练代码
✅ 推理脚本(图像/视频/摄像头)
✅ Web 检测界面(Django + Bootstrap)
✅ 垃圾计数与环保报告生成


📁 一、项目目录结构

water_bottle_yolov8/ ├── data/ │ ├── images/ │ │ ├── train/ # 960 │ │ ├── val/ # 120 │ │ └── test/ # 120 │ ├── labels/ │ │ ├── train/ │ │ ├── val/ │ │ └── test/ │ └── dataset.yaml ├── models/ │ └── best.pt # 训练后模型 ├── train.py # YOLOv8 训练脚本 ├── infer.py # 推理脚本 ├── web_app/ │ ├── views.py │ ├── models.py │ ├── urls.py │ └── templates/ │ └── index.html └── requirements.txt

📦 二、requirements.txt

ultralytics==8.2.0 opencv-python==4.8.0 numpy==1.24.3 pillow==9.5.0 django==4.2.7 matplotlib==3.6.3

安装:

pipinstall-rrequirements.txt

📄 三、data/dataset.yaml

train:../data/images/trainval:../data/images/valtest:../data/images/testnc:1names:['bottle']

✅ 确保images/trainlabels/train中文件名一一对应(如001.jpg001.txt


🚀 四、train.py—— YOLOv8 训练代码(从预训练模型微调)

# train.pyfromultralyticsimportYOLOif__name__=="__main__":# 加载官方预训练模型(YOLOv8m)model=YOLO("yolov8m.pt")# 可替换为 yolov8n/s/l/x# 开始训练results=model.train(data="data/dataset.yaml",epochs=100,imgsz=640,# 水面目标通常较小,640 足够batch=16,# 根据 GPU 调整(RTX 3060 可用 16)device=0,# 使用 GPU;无 GPU 改为 "cpu"name="water_bottle_yolov8m",project="runs/train",patience=20,# 早停机制save=True,exist_ok=True)print(f"✅ 训练完成!最佳模型路径:{results.save_dir}/weights/best.pt")

运行训练:

python train.py

💡 预期 mAP@0.5 ≈ 0.908(与你提供的验证结果一致)


🔍 五、infer.py—— 推理与塑料瓶计数

# infer.pyfromultralyticsimportYOLOimportcv2importos# 加载训练好的模型model=YOLO("runs/train/water_bottle_yolov8m/weights/best.pt")defdetect_bottles(image_path,conf=0.4):results=model(image_path,conf=conf)annotated_img=results[0].plot()# 统计塑料瓶数量bottle_count=len(results[0].boxes)# 保存结果output_path=f"output_{os.path.basename(image_path)}"cv2.imwrite(output_path,annotated_img)print(f"✅ 检测到{bottle_count}个塑料瓶,结果保存至:{output_path}")returnbottle_count,output_path# 示例:单张图像detect_bottles("river_scene.jpg")# 视频推理(可选)# model.predict("lake_video.mp4", save=True, conf=0.4)# 摄像头实时检测# model.predict(source=0, show=True, conf=0.4)

🌐 六、Django Web 检测系统

1.web_app/models.py

fromdjango.dbimportmodelsclassBottleDetection(models.Model):image=models.ImageField(upload_to='uploads/')result_image=models.ImageField(upload_to='results/',null=True)bottle_count=models.IntegerField(default=0)timestamp=models.DateTimeField(auto_now_add=True)location=models.CharField(max_length=100,default="河道A段")

2.web_app/views.py

fromdjango.shortcutsimportrenderfromdjango.httpimportJsonResponsefromdjango.core.files.storageimportFileSystemStoragefrom.modelsimportBottleDetectionfromultralyticsimportYOLOimportcv2importos# 全局加载模型(仅加载一次)model=YOLO("runs/train/water_bottle_yolov8m/weights/best.pt")defindex(request):returnrender(request,'index.html')defdetect_bottle_web(request):ifrequest.method=="POST"andrequest.FILES.get('image'):uploaded_file=request.FILES['image']fs=FileSystemStorage()filename=fs.save(uploaded_file.name,uploaded_file)input_path=fs.path(filename)output_dir=os.path.join(fs.location,'results')os.makedirs(output_dir,exist_ok=True)output_path=os.path.join(output_dir,f"result_{filename}")# 推理results=model(input_path,conf=0.4)annotated_img=results[0].plot()cv2.imwrite(output_path,annotated_img)bottle_count=len(results[0].boxes)# 保存记录record=BottleDetection.objects.create(image=uploaded_file,result_image=f'results/result_{filename}',bottle_count=bottle_count)returnJsonResponse({'result_url':fs.url(f'results/result_{filename}'),'bottle_count':bottle_count})returnJsonResponse({'error':'请上传图像'})

3.templates/index.html

<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>🌊 水面塑料瓶智能检测系统</title><scriptsrc="https://cdn.tailwindcss.com"></script></head><bodyclass="bg-blue-50"><divclass="max-w-4xl mx-auto p-6"><h1class="text-2xl font-bold text-center mb-6">🌊 水面垃圾(塑料瓶)AI检测系统</h1><formid="uploadForm"enctype="multipart/form-data"class="mb-6"><inputtype="file"name="image"accept=".jpg,.png"class="block w-full mb-4"><buttontype="submit"class="bg-blue-600 text-white px-4 py-2 rounded">上传并检测</button></form><divid="result"class="hidden"><imgid="resultImg"class="max-w-full border rounded shadow"><divclass="mt-4 p-4 bg-white rounded"><pclass="text-lg">检测到塑料瓶数量:<spanid="count"class="font-bold text-red-600"></span></p><pclass="text-sm text-gray-500">可用于环保评估与清洁任务调度</p></div></div></div><script>document.getElementById('uploadForm').onsubmit=async(e)=>{e.preventDefault();constformData=newFormData(e.target);constres=awaitfetch('/detect/',{method:'POST',body:formData});constdata=awaitres.json();if(data.result_url){document.getElementById('resultImg').src=data.result_url;document.getElementById('count').textContent=data.bottle_count;document.getElementById('result').classList.remove('hidden');}};</script></body></html>

4. 启动 Web 系统

python manage.py makemigrations python manage.py migrate python manage.py runserver

访问:http://127.0.0.1:8000


🌍 七、应用场景

应用方向说明
河道/湖泊巡检无人机或无人船搭载模型,自动识别水面漂浮塑料瓶
环保执法取证快速生成污染证据图,辅助城管或水务部门
清洁机器人导航为水面垃圾打捞机器人提供目标定位
公众环保教育Web 系统开放给公众上传照片,提升环保意识

http://www.rkmt.cn/news/188468.html

相关文章:

  • R语言GPT代码修复全解析,掌握这6种模式轻松应对报错
  • YOLOv8内置数据增强组合:Mosaic与Copy-Paste详解
  • R语言绘图陷阱揭秘(90%新手都踩过的坑)
  • 在玩转51单片机的世界里,直流电机的调速仿真绝对是一个经典实验。今天我们就来聊聊如何通过滑动变阻器控制电机的转速,顺便分析一下代码和仿真过程
  • YOLOv8 Discord服务器邀请链接公布
  • 还在手动分析用户行为?Dify对接Amplitude实现自动化洞察,效率提升80%
  • YOLOv8智慧园区安防一体化平台
  • YOLOv8第三方依赖许可合规检查
  • YOLOv8文档翻译计划:支持多语言阅读
  • Git下载YOLOv8源码后如何配置?推荐使用官方预装镜像
  • 【R语言生态环境建模】:5大模型诊断技巧揭秘,提升科研效率的必备指南
  • YOLOv8官方文档中文翻译:models/yolov8使用示例
  • 2025 MBA必看!10个AI论文软件深度测评与推荐
  • YOLOv8图文匹配潜力评估
  • 树和森林的遍历及其与二叉树的转换是数据结构中的重要内容,理解其原理有助于将多叉树问题转化为更易处理的二叉树结构
  • YOLOv8在Jetson设备上的运行优化建议
  • YOLOv8镜像站点加速访问:国内外源切换指南
  • 源码阅读:类加载器 BaseDexClassLoader
  • 【稀缺技术揭秘】:资深统计学家私藏的R语言零膨胀建模技巧
  • YOLOv8论坛板块上线:长期话题讨论区
  • YOLOv8周边产品上新:T恤/帽子/笔记本发售
  • R语言变量重要性分析完全指南(20年专家压箱底技巧)
  • 【机器学习模型优化必读】:基于R语言的交叉验证最佳实践
  • YOLOv8笔记本电脑运行可行性分析
  • YOLOv8 WASI实验性支持进展
  • java11.28
  • YOLOv8手机端运行效果评测(Android/iOS)
  • YOLOv8 FP16与BF16精度对比实测结果
  • 【R语言变量重要性评估实战】:掌握5大工具提升模型解释力
  • YOLOv8中间层特征提取与聚类分析