设计垃圾检测系统的意义在于多个方面,这些方面不仅关乎环境保护和城市管理,还涉及到技术进步和社会效益。以下是设计垃圾检测系统的主要意义:
- 环境保护与资源回收:
- 垃圾检测系统能够有效地识别不同种类的垃圾,帮助人们进行准确的分类投放。这有助于减少污染,降低对环境的负面影响。
- 通过智能识别技术,系统能够自动筛选出可回收物,提高资源回收率,减少资源浪费。
- 城市管理与卫生改善:
- 垃圾检测系统有助于城市管理部门更好地监控和管理城市垃圾,提高城市清洁度和卫生水平。
- 通过实时监控和数据分析,系统能够及时发现并解决垃圾处理过程中的问题,提高城市管理的效率和水平。
- 提高公众环保意识:
- 垃圾检测系统可以作为一种教育工具,提高公众对垃圾分类和环保的认识和重视程度。
- 通过直观的展示和反馈,系统能够引导公众形成正确的垃圾分类习惯,推动环保理念的普及和实践。
- 技术创新与应用:
- 垃圾检测系统的设计和实现涉及多个技术领域,如计算机视觉、传感器技术、人工智能等。这有助于推动相关技术的创新和发展。
- 系统的应用可以为其他领域提供借鉴和参考,推动技术进步和应用拓展。
- 经济效益与社会效益:
- 垃圾检测系统的应用可以降低垃圾处理成本,提高资源回收效率,从而产生经济效益。
- 同时,系统还能够改善城市环境,提高居民生活质量,产生显著的社会效益。
- 应对垃圾处理挑战:
- 随着城市化进程的加速和人口的增长,垃圾处理面临着越来越大的挑战。垃圾检测系统作为一种有效的解决方案,能够帮助我们更好地应对这些挑战。
- 政策支持与法规推动:
- 越来越多的国家和地区开始重视垃圾分类和环保问题,并出台相关政策和法规来推动垃圾处理工作的改进。垃圾检测系统的设计和应用符合这些政策和法规的要求,有助于推动相关工作的顺利进行。
综上所述,设计垃圾检测系统具有重要意义,不仅有助于环境保护和资源回收,还能提高城市管理和卫生水平,推动技术创新和应用拓展,产生经济效益和社会效益。同时,系统还能够应对垃圾处理挑战并符合政策和法规的要求。
本文介绍了基于深度学习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
在命令行使用如下命令安装:
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路径替换为自己的数据集路径):
# 数据集来源;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版本,其他参数根据自己的需要进行设置:
yolo detect train project=rubbish name=train exist_ok data=rubbish.yaml model=yolov8n.yaml epochs=100 imgsz=640
3、验证模型
使用如下命令验证模型,相关路径根据需要修改:
yolo detect val project=rubbish name=val imgsz=640 model=rubbish/train/weights/best.pt data=rubbish.yaml
# 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
四、推理
训练好了模型,可以使用如下代码实现推理,权重路径修改为自己的路径:
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代码可在下方链接下载):