news 2026/10/22 2:27:13

垃圾数据集 建立python深度学习yolo实时垃圾分类系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
垃圾数据集 建立python深度学习yolo实时垃圾分类系统

使用深度学习目标检测算法YOLOv5进行物体检测 通过训练自己的垃圾数据集 建立实时垃圾分类系统

文章目录

  • 使用深度学习目标检测算法YOLOv5进行物体检测 通过训练自己的垃圾数据集 建立实时垃圾分类系统
      • 1. 数据准备
        • 标注工具
      • 2. 模型训练
        • 安装YOLOv5
        • 准备配置文件 来训练
        • 训练模型
      • 3. UI设计
        • 安装PyQt5
        • 创建主窗口
      • 4. 实时检测
      • 总结

以下文字及代码仅供参考
Python实时垃圾分类系统
1
构建一个实时垃圾分类系统,使用YOLOv5进行物体检测,并结合PyQt5来设计用户界面。以下是一个完整的示例代码,

从数据准备、模型训练、UI设计和实时检测,仅供参考。

1. 数据准备

首先,同学,你得有自己的垃圾数据集吧 。

需要一个包含不同类别垃圾的数据集。你可以从公开数据集中获取,或者自己采集并标注数据。对不对

标注工具
  • 使用LabelImg等工具进行数据标注。

2. 模型训练

从官网自己下载就是了。

安装YOLOv5
gitclone https://github.com/ultralytics/yolov5.gitcdyolov5 pipinstall-rrequirements.txt
准备配置文件 来训练

在yolov5目录下创建data.yaml:

train:./images/trainval:./images/valtest:./images/testnc:4# number of classesnames:['paper','plastic','glass','metal']
训练模型
python train.py--img640--batch16--epochs100--datadata.yaml--cfgcfg/training/yolov5s.yaml--weightsyolov5s.pt--nameyolov5s_results

3. UI设计

使用PyQt5设计用户界面。

安装PyQt5
pipinstallPyQt5
创建主窗口
importsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QVBoxLayout,QWidget,QFileDialog,QMessageBoxfromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQTimerimportcv2importnumpyasnpfromultralyticsimportYOLOclassGarbageClassification(QMainWindow):def__init__(self):super().__init__()self.initUI()self.model=YOLO('best.pt')# 加载训练好的模型definitUI(self):self.setWindowTitle("垃圾分类系统")self.setGeometry(100,100,800,600)self.label=QLabel(self)self.label.setText("请选择图片或打开摄像头")self.label.setAlignment(Qt.AlignCenter)self.button_load=QPushButton("选择图片",self)self.button_load.clicked.connect(self.load_image)self.button_camera=QPushButton("打开摄像头",self)self.button_camera.clicked.connect(self.open_camera)self.button_close_camera=QPushButton("关闭摄像头",self)self.button_close_camera.clicked.connect(self.close_camera)layout=QVBoxLayout()layout.addWidget(self.label)layout.addWidget(self.button_load)layout.addWidget(self.button_camera)layout.addWidget(self.button_close_camera)container=QWidget()container.setLayout(layout)self.setCentralWidget(container)self.cap=Noneself.timer=Nonedefload_image(self):options=QFileDialog.Options()file_name,_=QFileDialog.getOpenFileName(self,"选择图片文件","","Image Files (*.jpg *.png)",options=options)iffile_name:self.image_path=file_name self.detect_garbage()defdetect_garbage(self):image=cv2.imread(self.image_path)results=self.model(image)annotated_frame=results[0].plot()height,width,channel=annotated_frame.shape bytes_per_line=3*width q_img=QImage(annotated_frame.data,width,height,bytes_per_line,QImage.Format_RGB888).rgbSwapped()self.label.setPixmap(QPixmap.fromImage(q_img))defopen_camera(self):self.cap=cv2.VideoCapture(0)self.timer=QTimer(self)self.timer.timeout.connect(self.update_frame)self.timer.start(30)# 每秒更新30帧defclose_camera(self):ifself.capisnotNone:self.timer.stop()self.cap.release()self.cap=Nonedefupdate_frame(self):ret,frame=self.cap.read()ifnotret:returnresults=self.model(frame)annotated_frame=results[0].plot()height,width,channel=annotated_frame.shape bytes_per_line=3*width q_img=QImage(annotated_frame.data,width,height,bytes_per_line,QImage.Format_RGB888).rgbSwapped()self.label.setPixmap(QPixmap.fromImage(q_img))if__name__=="__main__":app=QApplication(sys.argv)window=GarbageClassification()window.show()sys.exit(app.exec_())

4. 实时检测

在上述代码中,同学 :实现了以下功能:

  • 选择图片文件。
  • 打开摄像头。
  • 关闭摄像头。
  • 实时显示检测结果。

总结

仅供参考。基于YOLOv5的实时垃圾分类系统。这个系统包括数据准备、模型训练、UI设计和实时检测等功能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 2:26:00

ORB-SLAM3 void Tracking::UpdateLocalPoints()

该函数是 TrackLocalMap() 中 UpdateLocalMap() 的第二步:在 UpdateLocalKeyFrames() 选出局部关键帧集合之后,收集这些关键帧观测到的地图点,构成局部地图点集合,供后续 SearchLocalPoints() 投影搜索和位姿优化使用。 但实际实现中需要: 跳过空指针; 跳过坏点; 去重…

作者头像 李华
网站建设 2026/10/22 2:25:57

【RAG开发】LangChain调用嵌入模型

Embedding Models(文本嵌入模型) Embedding Models嵌入模型的特点:将字符串作为输入,返回一个浮点数的列表(向量) 在NLP中,Embedding的作用就是将数据进行文本向量化。模型使用总结 目前所掌握的…

作者头像 李华
网站建设 2026/10/22 2:25:30

R 数据重塑:从长表到宽表的高效实践

1. 引言在数据分析工作中,数据重塑(Data Reshaping)是最常见也最基础的操作之一。无论是从数据库导出的原始记录,还是从 Excel 手工整理的数据,往往都需要经过长表(Long Format)与宽表&#xff…

作者头像 李华
网站建设 2026/10/22 2:25:23

MLK-FMC_VID005_MIPI(DSI改CSI)修改方案

一、修改概述本方案用于将 FMC 子卡原 DSI 输出接口改造为 MIPICSI 接收接口。通过调整 MIPI 差分信号匹配电阻,同时修改 AFH03 底板跳线电阻,完成信号网络切换,实现完整 CSI 相机通路。 变更分为三部分:FMC 子卡J2 CSI 接口电阻配…

作者头像 李华
网站建设 2026/10/22 2:24:31

FDE:月薪5万起步的前线部署工程师,你值得收藏这份深度解析!

本文深入探讨了FDE(前线部署工程师)这一新兴高薪岗位。文章介绍了不同行业FDE的具体工作内容,分析了FDE岗位因客户行业、公司定位及项目阶段不同而呈现出的多样性。同时,文章强调了FDE的高薪源于其复合型能力,包括技术…

作者头像 李华
网站建设 2026/10/22 2:24:23

7张图带你轻松入门RocketMQ!

RocketMQ 是阿里巴巴的分布式消息中间件,在 2012 年开源,在 2017 年成为 Apache 顶级项目。1 集群架构RocketMQ 的集群架构如下图:从上图可以看到,整个集群中有四个角色:Name Server集群、Broker主从集群、Producer、C…

作者头像 李华