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

news2024/12/23 4:31:59

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

  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

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

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代码可在下方链接下载):

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1673327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

江苏省人大财经委主任委员谢志成一行莅临聚合数据走访调研

4月18日&#xff0c;江苏省人大财经委主任委员谢志成莅临聚合数据展开考察调研。省人大财经委副主任委员&#xff08;正厅&#xff09;周毅、省人大常委会办公厅一级巡视员吕小鹏、外事委委员赵正驰、省数据局副局长王万军&#xff1b;苏州市人大常委会副秘书长毛元龙、数据局副…

快手二面:你有没有调用过第三方接口?碰到过哪些坑?

在我们的业务开发中&#xff0c;调用第三方接口已经成为常态&#xff0c;比如对接一些ERP系统、WMS系统、一些数据服务系统等&#xff0c;它极大地扩展了我们应用的功能和服务范围。然而&#xff0c;实际对接过程中&#xff0c;我们往往会在这一环节遇到各种意想不到的问题&…

【自动驾驶技术栈学习】1-硬件《大话自动驾驶》| 综述要点总结 by.Akaxi

----------------------------------------------------------------------------------------------------------------- 致谢&#xff1a;感谢十一号线人老师的《大话自动驾驶》书籍&#xff0c;收获颇丰 链接&#xff1a;大话自动驾驶 (豆瓣) (douban.com) -------------…

【科学研究】 女性主义:网络中的性别歧视现象

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

##20 实现图像风格迁移:使用PyTorch深入学习的艺术之旅

文章目录 前言项目概述准备阶段图像处理模型选择风格和内容特征提取风格迁移算法优化过程结果展示完整代码与实验项目结论参考文献 前言 图像风格迁移是一种使一幅图像呈现另一幅画作风格的技术&#xff0c;通过深度学习&#xff0c;我们能够捕捉到内容图像的结构信息和风格图…

函数memcpy的实现及详解

前言 今天我们来了解一下memcpy函数和它的作用吧&#xff0c;咋们之前已经熟悉了strcpy的使用&#xff0c;它的作用是字符串的拷贝&#xff0c;那么当我们要拷贝其他类型的数据时&#xff0c;应该使用什么函数呢&#xff0c;我们今天给大家介绍的就是memcpy函数&#xff0c;他可…

1960—2021年中国月日均温降水时间序列

基于均质级数&#xff08;MASH&#xff09;和气候多元分析方法&#xff0c;首先对1960—2021年中国366个站点的日均气温、最高气温、最低气温和降水量进行不均匀性检测、估计和调整&#xff0c;建立均质化日气温和降水数据集。所有数据集均由希腊&#xff08;帕特雷大学物理系大…

Quests system for Unity

一个简单而灵活的任务系统将帮助你实现所有的想法,而不需要事件和逻辑中的一堆额外代码! 我的资产是一个用于执行任务的独立系统。 特征: 任务逻辑不需要继承MonoBehaviour。 在一行中完成所需任务的激活/进度/完成。 易于理解的界面,包含项目中所有任务的列表。 不需要连接…

【kubeflow文档】kubeflow介绍与架构

1. kubeflow介绍 Kubeflow项目致力于使机器学习&#xff08;ML&#xff09;工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务&#xff0c;而是提供一种直接的方法&#xff0c;将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes&a…

Android PreferenceActivity可以自动设置的Activity

1、介绍 PreferenceActivity 是一个抽象类&#xff0c;继承自ListActivity ,该类封装了SharedPreferences. PreferenceActivity 提供了一些常用的设置项如,与普通组件一样&#xff0c;这些配置项既可以从XML文件创建&#xff0c;也可以从代码创建. 每一个设置项标签有一个andro…

在博弈中寻找机会:利用已知信息撬动更多有利信息

在人生的道路上&#xff0c;我们都在参与一场巨大的博弈&#xff0c;无论是职场竞争、商业战争还是人际关系&#xff0c;都需要我们利用已知信息去撬动更多有利的信息&#xff0c;以便在变数中寻找机会。这场博弈既充满挑战&#xff0c;又蕴含着无限可能。 博弈的本质是竞争和合…

IP跳变是什么,有什么作用?

IP跳变&#xff0c;简单来说&#xff0c;就是用户在使用网络时&#xff0c;不固定使用一个IP地址&#xff0c;而是定期或根据需求切换到另一个IP地址。这种技术为用户在网络环境中提供了一定的灵活性和安全性。 首先&#xff0c;我们来看看IP跳变的具体实现方式。当用户需要切…

齐护K210系列教程(十五)_联网控制

联网控制 1&#xff0c;软硬件的准备2&#xff0c;应用的理解3&#xff0c;远程点亮AIstart_Q1的灯4&#xff0c;远程控制AIstart_Q1拍照5&#xff0c;更多网络应用5&#xff0c;课程资源联系我们 1&#xff0c;软硬件的准备 在很多场合应用AIstart时&#xff0c;会要用到网络…

2024年一些值得关注的边缘计算招投标!中国移动、中国联通、中国铁塔大单来了!...

1.大单来了&#xff01;中国移动湖北公司算力设备采购(移动边缘云四期扩容)招标公告&#xff0c;3079万&#xff01; 项目名称&#xff1a;中国移动湖北公司算力设备采购(移动边缘云四期扩容)招标公告 本招标项目为(中国移动湖北公司算力设备采购(移动边缘云四期扩容)&#xff…

PCDN边缘计算小白入门指南

一、PCDN边缘计算简介 PCDN是一种基于P2P技术的边缘计算内容分发网络。它通过挖掘和利用边缘网络中的海量碎片化闲置资源&#xff0c;构建出低成本、高品质的内容分发网络服务。通过集成PCDN SDK&#xff08;软件开发工具包&#xff09;&#xff0c;可以获得与CDN&#xff08;…

记录:robot_localization传感器数据融合学习

一、参考资料 官方&#xff1a; http://wiki.ros.org/robot_localizationhttp://docs.ros.org/en/noetic/api/robot_localization/html/index.html2015 ROSCon 演讲官方网址&#xff08;youyube上也有这个视频&#xff09; 实践教程 https://kapernikov.com/the-ros-robot_…

【C++】再识构造函数:初始化列表新方式

欢迎来到CILMY23的博客 &#x1f3c6;本篇主题为&#xff1a; 再识构造函数&#xff1a;初始化列表新方式 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux &#x1f3c6;感…

【实践】使用vscode来debug go程序的尝鲜

配置 首先&#xff0c;当然得配置好vscode 的go环境&#xff0c; 装个go插件就基本满足了 配置 launch.json, 可以配置多个环境的程序启动参数&#xff08;很友好&#xff09; {"version": "0.2.0","configurations": [{"name": &…

C++深度解析教程笔记8

C深度解析教程笔记8 第17课 - 对象的构造&#xff08;上&#xff09;类定义中成员变量i和j的初始值&#xff1f;实验-成员变量的初始值对象初始化解决方案1实验-手动调用函数初始化对象对象初始化解决方案2&#xff1a;构造函数实验-构造函数小结 第18课 - 对象的构造&#xff…

乡村振兴的乡村人才振兴计划:培养乡村人才,吸引人才回流,激发乡村发展活力,为美丽乡村建设提供人才保障

目录 一、引言 二、乡村人才振兴计划的必要性 &#xff08;一&#xff09;乡村发展面临的人才困境 &#xff08;二&#xff09;人才振兴对乡村振兴的推动作用 三、乡村人才振兴计划的实施路径 &#xff08;一&#xff09;加强乡村教育体系建设 &#xff08;二&#xff0…