【深度学习目标检测】二十六、基于深度学习的垃圾检测系统-含数据集、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 分钟前
uv,下一代Python包管理工具
python
AIGC安琪9 分钟前
Transformer中的编码器和解码器是什么?
人工智能·深度学习·ai·语言模型·大模型·transformer·ai大模型
山烛30 分钟前
OpenCV 图像处理基础操作指南(二)
人工智能·python·opencv·计算机视觉
跟橙姐学代码1 小时前
学Python,先把这“三板斧”练到炉火纯青!(零基础也能看懂)
前端·python
CoovallyAIHub1 小时前
线性复杂度破局!Swin Transformer 移位窗口颠覆高分辨率视觉建模
深度学习·算法·计算机视觉
星期天要睡觉1 小时前
机器学习深度学习 所需数据的清洗实战案例 (结构清晰、万字解析、完整代码)包括机器学习方法预测缺失值的实践
人工智能·深度学习·机器学习·数据挖掘
让心淡泊1442 小时前
DAY 50 预训练模型+CBAM模块
python
renhongxia12 小时前
大模型微调RAG、LORA、强化学习
人工智能·深度学习·算法·语言模型
dundunmm2 小时前
【论文阅读】SIMBA: single-cell embedding along with features(1)
论文阅读·深度学习·神经网络·embedding·生物信息·单细胞·多组学
BYSJMG2 小时前
计算机大数据毕业设计推荐:基于Spark的气候疾病传播可视化分析系统【Hadoop、python、spark】
大数据·hadoop·python·信息可视化·spark·django·课程设计