1 Star 4 Fork 0

Antus / GarbageClassification

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

垃圾分类识别

介绍

基于tensorflow,opencv及量化模型权重训练实现的机器视觉智能垃圾分类,适用于低算力移动端设备如树莓派。 模型可识别的垃圾有['电池', '烟蒂', '塑料瓶', '砖瓦', '水果', '瓜子'(3代没有), '易拉罐', '废纸', '陶瓷', '菜叶']

由于需要备战考研没有时间继续,留下的多线程实现动态检测控制视频播放的功能仍未去完善

版本v1.0:

这是最原始的一个版本,由于项目需要有可视化界面,首先想到的是python下的几个图形界面开发库,比较主流的像Tkinter,PyQt和wxpython。 他们的大致区别可见https://blog.csdn.net/weixin_43870400/article/details/115076429 我选择的是wxpython(因为据说文档完善,案例丰富,现在想想其实不如用官方的tkinter,wxpython在树莓派上的安装是相当的漫长且坑多)

版本v2.0:

由于版本1具有一些问题(见下文)无法运行在设备上,第二个版本放弃了使用图形界面开发库的做法,本着简洁化的思想,直接使用opencv自带的窗口 进行图形界面的编写,且保留了上一代的所有功能。opencv的窗口显示摄像头捕捉到的画面,且所有的绘制操作无法在显示帧的范围以外进行,考虑到 美观性和尽可能的避免画面被文字遮挡,采用了拼接的方法,即在显示相机捕捉的帧前,使用opencv的函数将帧与一张空白图片拼接,并将空白部分作为 画板输出文字信息,然后显示在屏幕上。另外由于opencv无法显示中文(缺少字体库),需要在程序中导入字体库,项目中使用的是simhei字体。

版本v3.0(onRasp版):

版本3是最后采用的版本,这一代更换了模型训练的方法,把简洁化的思想进一步落实,并且更规范化。

版本说明:

1代 优点:使用图形界面开发库,具有较多的组件如按钮组件可使用,开发度丰富,更容易做用户交互。 缺点:在pc上环境部署正常进行,但树莓派上配置时,wxpython的安装需要本地编译后才能安装,这个编译的过程长达一个小时左右,且可能出错。部署 完成后发现运行时会卡在视频播放界面,无法调出窗口,猜测是cpu算力不足以支撑wxpython和cv的同时画面渲染。

2代 优点:使用opencv自带的库进行图形界面开发,能较容易实现简易的界面。 缺点:无法做用户交互,模型训练方法对没有独显的电脑来说速度太慢,代码量较臃肿;与1代具有相同问题,即视频播放无声音。

3代 优点:简洁易读,模型训练方法容易且速度快;视频播放具有音频(上传版本不含视频播放功能)。 缺点:仍未解决使用多线程实现动态检测控制视频播放的问题,因此未添加动态检测函数部分;1和2代在pc上运行可实现动态检测控制视频播放,在树莓派上 无法实现。

程序流程:

程序如果识别不到物品会显示“正在检测”(或“无”),几秒之后会自动播放视频(onRasp版本使用oxmplayer),程序中有动态检测的功能,播放 视频期间如果检测到摄像头前有物品移动,则退出视频播放,继续垃圾识别分类,如此循环;识别出垃圾且分类完成后,则开始运转舵机(由于设备中 的sd卡不幸损坏,上传的v1.0和v2.0版本中不包含硬件运转的程序模块),进行垃圾投放;在识别期间如果移动待分类垃圾,则不会运转。当超声波检测到 某种垃圾满载时,蜂鸣器会发出警报声,并在屏幕上显示满载的垃圾种类。

环境依赖

python3 需要的环境依赖在各个版本的文件夹里,不做赘述

安装教程

  1. 项目克隆到本地
  2. 终端进入某个版本项目目录
  3. 执行pip3 install -r requirements.txt

使用方法

python3 xxxx.py

联系方式

邮箱:944649374@qq.com

QQ:944649374

备注

1,2代的模型训练方法可参考 https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10/blob/master/translate/README_Chinese.md https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi

3代可以使用微软的lobe平台,但具有一定局限性,如不能实现多目标识别、训练集只能是图片格式,不能使用可标注的voc格式数据集(不标注意味着不能显示 识别轮廓)、要求数据集图片中物品需尽量保证在图片中心等。

如果运行出现 error: (-215:Assertion failed) !_src.empty() in function 'cvtColor',再运行一次即可,出现这种错误的原因可能是摄像头比 识别程序启动慢了,可尝试在主函数的videocapture()后用sleep函数解决

tips

都看到这了可以给个star吗?

MIT License Copyright (c) 2021 Antus Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于tensorflow量化模型训练,opencv实现的机器视觉智能垃圾分类,适用于低算力移动端设备如树莓派。 展开 收起
Python
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/Cairsimod/garbage-classification.git
git@gitee.com:Cairsimod/garbage-classification.git
Cairsimod
garbage-classification
GarbageClassification
master

搜索帮助