基于tensorflow的垃圾分类系统

news2024/11/28 12:49:24

项目描述

该项目基于PySide2和PyQt5设计界面UI,搭配QT Designer进行界面设计。
基于TensorFlow中的Keras模型,进行垃圾分类模型的训练。
项目包含功能有:使用者注册登录功能、管理员训练模型、用户使用模型进行分类。

功能介绍

一、注册登录

1、注册登录使用SQLite数据库进行账号数据的存储,注册过程中选择使用者性质(管理员 or 用户)作为后续系统登录的区分。主要存储的数据有用户名、密码以及用户性质,其中用户名作为主键,唯一标识。
2、注册过程填写用户名、密码、确认密码、选择用户性质后点击注册按钮,若注册成功则注册按钮下方出现“注册成功”的提示字样。

二、登录功能

在登录界面输入用户名与密码,系统搜索数据库中账号信息,根据用户标识选择进入相应的使用系统界面(管理员系统 or 用户系统)。

三、管理员系统功能

1、管理员的功能主要有打开摄像头,添加训练集(背景图片和要训练的垃圾图片),关闭摄像头,进行模型训练,模型训练结果呈现。
2、摄像头的打开与关闭主要通过注册一个定时器来进行控制,采集图像的原则一般是每个垃圾采集不同角度的15~30张图片。
3、模型训练过程采用监督学习方式,即将采集到的训练集打上标签,在进行训练,得到的训练模型保存在tmp本地文件夹下,以当前训练时间命名。
4、训练模型时的每一轮结果在控制台打印,而在UI界面呈现最终的训练时间。

四、用户系统功能

1、文字搜索:用户使用输入框输入需要确认的垃圾分类情况,点击搜索按钮,结果显示区域将会呈现搜索结果,如无搜索结果,则提示使用图像识别垃圾分类。
2、图像搜索:首先打开摄像头,点击选择模型按钮,将训练好的模型上传,点击运行检测按钮,进行垃圾分类的图像识别。图像识别的结果在左侧检测结果区域呈现(包括检测结果和确认度)。
3、语音播报:在文字搜索呈现搜索结果时,具有语音播报,将搜索结果以声音的方式呈现出来。

项目搭建

系统:windows10
编译器:VsCode
硬件:免驱USB摄像头
环境:python 3.7.0

一、项目使用到的库

库文件Version
PyQt55.15.4
PySide25.15.2
opencv-python(cv2)4.5.2.52
numpy1.18.5
tensorflow2.3.0
tensorflow_hub0.12.0
keras2.4.3
requests2.25.1
urllib31.26.4

二、项目目录结构

文件名作用或功能
dataset数据集(包含训练集和测试集)
img用于存放项目效果图
model训练依据模型
style存放QSS文件,几个UI界面的样式文件
tmp存储训练完成得到的模型
administrator.py实现管理员界面
administrator.ui利用QT设计师得到的管理员界面设计文件
projectMain.py项目程序的主入口
register.py实现注册界面
register.ui利用QT设计师得到的注册界面设计文件
resident.db使用者账户数据库
user.py实现用户界面
user.ui利用QT设计师得到的用户界面设计文件

三、项目搭建

1、建议使用vscode编辑器,配置插件有:Qt for Python 、SQLite。
如果电脑中无python环境,可参考该安装步骤Anaconda的下载与安装——Python环境搭建。
2、对于vscode配置python环境:ctrl + shift + P, 点击Python选择器,选择适用的python环境,这里建议使用conda搭建一个新的python环境,具体搭建过程可参考:创建conda虚拟环境,优雅地管理python环境。
3、当环境配置完成后,下面是运行项目阶段,运行项目入口文件projectMain.py即可。以下是项目最终的效果图:
【登录界面】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqPM5OBH-1675838566051)(./img/Login.jpg)]

【注册界面】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5rhU3P1D-1675838566053)(./img/register.jpg)]

【管理员界面】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-om5gAxnX-1675838566054)(./img/administrator.jpg)]

【用户界面】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HUlIptsM-1675838566054)(./img/user.jpg)]

四、注意事项

1、注意运行项目时需要连接外接USB摄像头。
2、同时项目中不含有训练集(需自己根据需要进行采集背景图片和垃圾图片)。
3、项目中更没有训练好的模型,故使用者需要自己训练模型(注册管理员账号,在管理员系统界面进行训练模型)。

项目地址

源代码下载

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

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

相关文章

JVM调优

JVM调优-VisualVmVisualVm/ Jconsule远程连接第一种方式第二种方式:java 11开启远程GC连接如果还连不上考虑防火墙拦截了端口firewall-cmd --list-all,查看一下并暴露对应端口连接配置VisualVm界面简介采集GC信息的一些命令垃圾回收器切换VisualVm/ Jconsule远程连接…

unity 框选目标

先制作选框: 创建一个Image,给Sourece Image随便添加一张方形图片,如果添加圆的出来就是圆,这个看情况而定,然后勾掉Fill Center这样就镂空了 这种框选一般都是作为组件存在所以代码要做成单例类,默认情况…

【Mysql第十期 数据类型】

文章目录1. MySQL中的数据类型2.类型介绍2.2 可选属性2.2.2 UNSIGNED2.2.3 ZEROFILL2.3 适用场景2.4 如何选择?3. 浮点类型3.2 数据精度说明3.3 精度误差说明4. 定点数类型4.1 类型介绍4.2 开发中经验5. 位类型:BIT6. 日期与时间类型6.1 YEAR类型6.2 DAT…

程序的编译与链接(C语言为例) #代码写好后到运行期间要经过怎样的过程呢?# 粗略版 #

编译与链接前言程序的环境程序的编译与链接写在最后前言 每当我们运行一段代码时,编译器都会自动的帮我们编译代码并将代码转换为一个二进制可执行文件(.exe), 有了这个可执行文件,便可以执行我们写的程序了。那么编译…

Linux-Ubuntu18.04安装anaconda及python解释器环境的配置

1.anaconda的下载anaconda官网搜索链接,点击下载注意:anaconda的下载位置2.anaconda的安装利用如下命令进行安装:$ bash /home/xiaowang/下载/Anaconda3-2022.10-Linux-x86_64.sh一直点击回车enter,阅读文件内容文件阅读完毕&…

canal五部曲-如何保证消息的顺序

分析CanalRocketMQProducer.send canal发送消息到RocketMQ使用到了partitionNum、partitionHash 通过partitionHash可以把消息发送到RocketMQ的不同分区上,因为同一个分区在消费时有序的 public void send(final MQDestination destination, String topicName, com.…

2020年因果推断综述《A Survey on Causal Inference》

最近阅读了TKDD2020年的《A Survey on Causal Inference》,传送门,自己对文章按照顺序做了整理,同时对优秀的内容进行融合,如有不当之处,请多多指教。 文章对因果推理方法进行了全面的回顾,根据传统因果框…

威胁情报是什么

文章目录前言一、威胁情报是什么?数据与情报IOC二、威胁情报的分类1.战略情报2.技术情报3.战术情报4.运营情报三、总结四、参考前言 只要有斗争冲突,就有那些研究、分析和努力去了解对手的人。一场战争的输赢,取决于你对对手的了解&#xff0…

springboot启动过程源码

概述版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.3.RELEASE</version><relativePath/></parent>启动入口代码package com.ybjdw.tool;i…

如何解决混合精度训练大模型的局限性问题

混合精度已经成为训练大型深度学习模型的必要条件&#xff0c;但也带来了许多挑战。将模型参数和梯度转换为较低精度数据类型&#xff08;如FP16&#xff09;可以加快训练速度&#xff0c;但也会带来数值稳定性的问题。使用进行FP16 训练梯度更容易溢出或不足&#xff0c;导致优…

【王道数据结构】第六章(下) | 图的应用

目录 一、最小生成树 二、最短路径 三、有向⽆环图描述表达式 四、拓扑排序 五、关键路径 一、最小生成树 1、最小生成树的概念 对于一个带权连通无向图G &#xff08;V,E)&#xff0c;生成树不&#xff0c;每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所…

【2023】Prometheus-接入Alertmanager并实现邮件告警通知

目录1.使用二进制方式安装Alertmanager2.Alertmanager配置3.alert接入prometheus4.创建告警配置文件&#xff08;在prometheus服务器&#xff09;5.测试告警1.使用二进制方式安装Alertmanager 下载安装包 wget https://github.com/prometheus/alertmanager/releases/download…

Python pip工具使用

一、pip工具 1、pip简介 pip 是一个通用的 Python包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能&#xff0c;便于我们对 Python的资源包进行管理。 在安装 Python时&#xff0c;会自动下载并且安装 pip。 &#xff08;1&#xff09;查看是否安装 pip 查看…

C/C++ :程序环境和预处理(上)

目录 程序的编译链接过程 1.编译过程中的预处理阶段 2.编译过程中的正式编译阶段 3.编译过程中的汇编阶段 4.链接过程 程序的编译链接过程 一个程序的源码文件要经过复杂的编译链接过程才能被转换为可执行的机器指令(二进制指令) 编译链接过程概述&#xff1a; 编译过程&…

java顺序存储二叉树应用实例

八大排序算法中的堆排序&#xff0c;就会使用到顺序存储二叉树。 1.线索化二叉树 1.1先看一个问题 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n17 问题分析: 当我们对上面的二叉树进行中序遍历时&#xff0c;数列为 {8, 3, 10, 1, 6, 14 } 但是 6, 8, 10, 14 这几个…

windows装双系统,添加ubuntu

1、查看分区 此电脑右键---管理----磁盘管理----选有空闲位置的硬盘右键----压缩卷 就会出现空闲的卷 2 制作U盘&#xff0c;U盘初始是空的 下载rufus win10系统怎么查看磁盘分区形式 【百科全说】 (bkqs.com.cn) 双击打开----如下配置 出现这个提示&#xff0c;照做 …

内存数据库Apache Derby、H2

概述 传统关系型数据库涉及大量的工作&#xff0c;如果想在Java应用程序里使用MySQL数据库&#xff0c;至少需要如下步骤&#xff1a; 安装&#xff08;可选&#xff1a;配置用户名密码&#xff09;建表&#xff08;要么从命令行进入&#xff0c;要么安装一个可视化工具&…

Java基础-网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统…

Springboot扩展点之InstantiationAwareBeanPostProcessor

前言前面介绍了Springboot的扩展点之BeanPostProcessor&#xff0c;再来介绍另一个扩展点InstantiationAwareBeanPostProcessor就容易多了。因为InstantiationAwareBeanPostProcessor也属于Bean级的后置处理器&#xff0c;还继于BeanPostProcessor&#xff0c;因此Instantiatio…

vue-cli3创建Vue项目

文章目录前言一、使用vue-cli3创建项目1.检查当前vue的版本2.下载并安装Vue-cli33.使用命令行创建项目二、关于配置前言 本文讲解了如何使用vue-cli3创建属于自己的Vue项目&#xff0c;如果本文对你有所帮助请三连支持博主&#xff0c;你的支持是我更新的动力。 下面案例可供…