【深度学习目标检测】二十六、基于深度学习的垃圾检测系统-含数据集、GUI和源码(python,yolov8)

设计垃圾检测系统的意义在于多个方面,这些方面不仅关乎环境保护和城市管理,还涉及到技术进步和社会效益。以下是设计垃圾检测系统的主要意义:

  1. 环境保护与资源回收:
    • 垃圾检测系统能够有效地识别不同种类的垃圾,帮助人们进行准确的分类投放。这有助于减少污染,降低对环境的负面影响。
    • 通过智能识别技术,系统能够自动筛选出可回收物,提高资源回收率,减少资源浪费。
  2. 城市管理与卫生改善:
    • 垃圾检测系统有助于城市管理部门更好地监控和管理城市垃圾,提高城市清洁度和卫生水平。
    • 通过实时监控和数据分析,系统能够及时发现并解决垃圾处理过程中的问题,提高城市管理的效率和水平。
  3. 提高公众环保意识:
    • 垃圾检测系统可以作为一种教育工具,提高公众对垃圾分类和环保的认识和重视程度。
    • 通过直观的展示和反馈,系统能够引导公众形成正确的垃圾分类习惯,推动环保理念的普及和实践。
  4. 技术创新与应用:
    • 垃圾检测系统的设计和实现涉及多个技术领域,如计算机视觉、传感器技术、人工智能等。这有助于推动相关技术的创新和发展。
    • 系统的应用可以为其他领域提供借鉴和参考,推动技术进步和应用拓展。
  5. 经济效益与社会效益:
    • 垃圾检测系统的应用可以降低垃圾处理成本,提高资源回收效率,从而产生经济效益。
    • 同时,系统还能够改善城市环境,提高居民生活质量,产生显著的社会效益。
  6. 应对垃圾处理挑战:
    • 随着城市化进程的加速和人口的增长,垃圾处理面临着越来越大的挑战。垃圾检测系统作为一种有效的解决方案,能够帮助我们更好地应对这些挑战。
  7. 政策支持与法规推动:
    • 越来越多的国家和地区开始重视垃圾分类和环保问题,并出台相关政策和法规来推动垃圾处理工作的改进。垃圾检测系统的设计和应用符合这些政策和法规的要求,有助于推动相关工作的顺利进行。

综上所述,设计垃圾检测系统具有重要意义,不仅有助于环境保护和资源回收,还能提高城市管理和卫生水平,推动技术创新和应用拓展,产生经济效益和社会效益。同时,系统还能够应对垃圾处理挑战并符合政策和法规的要求。

本文介绍了基于深度学习yolov8的行人检测计数系统,包括训练过程和数据准备过程,同时提供了推理的代码和GUI。

模型在线体验: 模型乐园

检测结果如下图:

一、安装YoloV8

yolov8官方文档:主页 - Ultralytics YOLOv8 文档

安装部分参考:官方安装教程

1、安装pytorch

根据本机是否有GPU,安装适合自己的pytorch,如果需要训练自己的模型,建议使用GPU版本。

①GPU版本的pytorch安装

对于GPU用户,安装GPU版本的pytorch,首先在cmd命令行输入nvidia-smi,查看本机的cuda版本,如下图,我的cuda版本是12.4(如果版本过低,建议升级nvidia驱动):

打开pytorch官网,选择合适的版本安装pytorch,如下图,建议使用conda安装防止cuda版本问题出现报错:

②CPU版本pytorch安装

打开pytorch官网,选择CPU版本安装pytorch,如下图:

2、安装yolov8

在命令行使用如下命令安装:

bash 复制代码
pip install ultralytics

二、数据集准备

本文数据集来自https://aistudio.baidu.com/datasetdetail/101886/0,垃圾类别为5类:paper、cup、citrus、bottle、battery,经过处理后的数据集包含:训练集1191个数据,验证集298个数据。

示例图片如下:

本文提供转换好的数据集,可以直接用于训练yolo模型:5类垃圾分类yolov8格式数据集,该数据集包含五个类别:paper、cup、citrus、bottle、battery

三、模型配置及训练

1、数据集配置文件

创建数据集配置文件rubbish.yaml,内容如下(将path路径替换为自己的数据集路径):

bash 复制代码
 
# 数据集来源;https://tianchi.aliyun.com/dataset/93609
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:\DeepLearning\datasets\csdn\rubish_det\rubbish_yolov8 # 替换为自己的数据集路径
train: images/train 
val: images/val 
test: images/val  
 
# Classes
names:
  # 0: normal
  0: paper
  1: cup
  2: citrus
  3: bottle
  4: battery

2、训练模型

使用如下命令训练模型,数据配置文件路径更改为自己的路径,model根据自己的需要使用yolov8n/s/l/x版本,其他参数根据自己的需要进行设置:

bash 复制代码
yolo detect train project=rubbish name=train exist_ok data=rubbish.yaml model=yolov8n.yaml epochs=100 imgsz=640

3、验证模型

使用如下命令验证模型,相关路径根据需要修改:

bash 复制代码
yolo detect val project=rubbish name=val imgsz=640 model=rubbish/train/weights/best.pt data=rubbish.yaml
bash 复制代码
# Ultralytics YOLOv8.1.20 🚀 Python-3.9.18 torch-2.2.0 CUDA:0 (NVIDIA GeForce RTX 3060, 12288MiB)
# YOLOv8n summary (fused): 168 layers, 3006623 parameters, 0 gradients, 8.1 GFLOPs
# val: Scanning D:\DeepLearning\datasets\csdn\rubish_det\rubbish_yolov8\labels\val.cache... 298 images, 0 backgrounds, 0 corrupt: 100%|██████████| 298/298 [00:00<?, ?it/s]
#                  Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 19/19 [00:02<00:00,  7.50it/s]
#                    all        298        638      0.951      0.934      0.967      0.762
#                  paper        298         74      0.976      0.973      0.993      0.853
#                    cup        298        107       0.96      0.916      0.968        0.8
#                 citrus        298        119      0.975      0.972      0.994      0.799
#                 bottle        298        107      0.883      0.847      0.894      0.586
#                battery        298        231       0.96      0.961      0.988      0.774
# Speed: 1.3ms preprocess, 3.9ms inference, 0.0ms loss, 0.9ms postprocess per image
# Results saved to rubbish\val2
# 💡 Learn more at https://docs.ultralytics.com/modes/val

四、推理

训练好了模型,可以使用如下代码实现推理,权重路径修改为自己的路径:

bash 复制代码
from PIL import Image
from ultralytics import YOLO
 
# 加载预训练的YOLOv8n模型
model = YOLO('best.pt')
 
image_path = 'test.jpg'
results = model(image_path)  # 结果列表
 
# 展示结果
for r in results:
    im_array = r.plot()  # 绘制包含预测结果的BGR numpy数组
    im = Image.fromarray(im_array[..., ::-1])  # RGB PIL图像
    im.show()  # 显示图像
    im.save('results.jpg')  # 保存图像

五、界面开发

使用pyqt5开发gui界面,支持图片、视频、摄像头输入,支持导出到指定路径,其GUI如下图(完整GUI代码可在下方链接下载):

代码下载连接:基于yolov8的垃圾检测系统,包含训练好的权重和推理代码,GUI界面,支持图片、视频、摄像头输入,可检测5类垃圾

相关推荐
好看资源平台1 小时前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
余生H1 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
进击的六角龙1 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂1 小时前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
罗小罗同学1 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
湫ccc1 小时前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤1 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭2 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~2 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang2 小时前
python如何使用spark操作hive
hive·python·spark