一、项目概述

简介:该垃圾分类项目主要在于对各种垃圾进行所属归类,本次项目采用keras深度学习框架搭建卷积神经网络模型实现图像分类,最终移植在树莓派上进行实时视频流的垃圾识别。

前期:主要考虑PC端性能,并尽可能优化模型大小,训练可采用GPU,但调用模型测试的时候用CPU运行,测试帧率和准确性(测试10张左右图像的运行时间取平均值或实时视频流的帧率)。

后期:部署在树莓派端,在本地进行USB摄像头实时视频流的垃圾分类(归类)。

框架语言: keras+python。

PC端:

Keras: 2.2.0

Opencv: 3.4

Python: 3.6

Numpy:1.16

二、数据集

data1: https://www.kaggle.com/asdasdasasdas/garbage-classification

数据集包含6个分类:cardboard (393), glass (491), metal (400), paper(584), plastic (472) andtrash(127).

data2: https://www.kesci.com/home/dataset/5d133d11708b90002c570588

该数据集是图片数据,分为训练集85%(Train)和测试集15%(Test)。其中O代表Organic(有机垃圾),R代表Recycle(可回收)。

data3 : https://copyfuture.com/blogs-details/2020083113423317484akwfwu4mzs89w

一共 56528 张图片,214 类,总共 7.13 GB。

三、leNet5 模型搭建

本次项目采用深度学习来进行图像识别,如今深度学习中最流行的无疑是卷积神经网络,因此,我们搭建了包含5层卷积层的神经网络来进行垃圾分类。

由于本次项目包含三个数据集,对应三个类别(6分类,2分类,214分类),但是设计的模型都是一样的,因此,下面就以data1进行网络搭建、训练、测试讲解。


卷积神经网络实例

在正式训练之前我们还使用了数据增广技术(ImageDataGenerator)来对我们的小数据集进行数据增强(对数据集图像进行随机旋转、移动、翻转、剪切等),以加强模型的泛化能力。

1、模型构建

其中conv2d表示执行卷积,maxpooling2d表示执行最大池化,Activation表示特定的激活函数类型,Flatten层用来将输入“压平”,用于卷积层到全连接层的过渡,Dense表示全连接层(128-128-6,最后一位表示分类数目)。

参数设置:为训练设置一些参数,比如训练的epoches,batch_szie,learning rate等

在这里我们使用了SGD优化器,由于这个任务是一个多分类问题,可以使用类别交叉熵(categorical_crossentropy)。但如果执行的分类任务仅有两类,那损失函数应更换为二进制交叉熵损失函数(binary cross-entropy)

2、模型保存

将神经网络在data1数据集上训练的结果(参数,权重文件)进行保存,方便后期调用训练好的模型进行预测。

模型保存文件名为:trash_data1_AlexNet3.h5, 我们设置为保存模型效果最好的一次。

四、训练并测试

首先是观察数据,看看我们要识别的垃圾种类有多少,以及每一类的图片有多少。

1、训练结果

训练代码已经写好了,接下来开始训练(图片归一化尺寸为128,batch_size为32,epoches为5000,一般5k就已经算比较多的啦,效果好的话可以提前结束)。

进行训练

训练过程中的打印结果:

2、模型保存

3、预测单张图片

现在我们已经得到了我们训练好的模型trash_data1_AlexNet3.h5,然后我们编写一个专门用于预测的脚本predict.py

预测脚本中的代码编写思路是:载入训练好的模型-》读入图片信息-》预测-》展示预测效果

我们这里写了一个循环测试,方便计算单张图像的预测时间

4、测试结果

data1:

model size: 178M

acc accuracy(test) :86%

硬件:AMD R5 3600 内存:16G

测试100张图像耗时:2.37s

单张图像耗时:0.0237s

data2:

model size: 128M

acc accuracy(test) :94%

硬件:AMD R5 3600 内存:16G

测试1112张图像耗时:90.52s

单张图像耗时:0.0814

data3

model size: 128M

acc accuracy(test) :72%

硬件:AMD R5 3600 内存:16G

测试1112张图像耗时:8.69s

单张图像耗时:0.077

五、树莓派端部署/配置深度学习环境

系统环境:2020-08-20-raspios-buster-armhf-full

**工程要求:Tensorflow 1.14.0+ Keras 2.2.4 + Python 3.7 **

1、配置好ssh和vnc之后,换源:

第一步,先备份源文件

sudo cp/etc/apt/sources.list /etc/apt/sources.list.baksudo cp/etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak

第二步,编辑系统源文件

sudo nano/etc/apt/sources.list

第三步,将初始的源使用#注释掉,添加如下两行清华的镜像源。Ctrl+O ++ Ctrl+X

【注意】这里的树莓派系统是Raspbian-buster系统,在写系统源链接时要注意是buster,网上很多教程都是之前stretch版本,容易出错!

debhttp://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contribnon-free rpideb-srchttp://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contribnon-free rpi

第四步,保存执行如下命令sudo apt-get update,完成源的更新软件包索引。

sudo apt-get update&&upgrade

第五步,还需要更改系统源

sudo nano/etc/apt/sources.list.d/raspi.list

用#注释掉原文件内容,用以下内容取代:用#注释掉原文件内容,用以下内容取代:

debhttp://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main uideb-srchttp://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

第六步,配置换源脚本,更改pip源

新建文件夹:

mkdir ~/.pipsudo nano~/.pip/pip.conf

在pip.conf文件中输入以下内容:

[global]timeout=100index-url=https://pypi.tuna.tsinghua.edu.cn/simple/extra-index-url=http://mirrors.aliyun.com/pypi/simple/[install]trusted-host=pypi.tuna.tsinghua.edu.cnmirrors.aliyun.com

2、python虚拟环境配置

首先进行系统软件包更新

sudo apt-getupdate sudo apt-getupgradesudorpi-update

然后更新自带的pip,由于Raspbian自带的pip3为9.0.1版本,较为老旧,我们使用以下命令来更新pip3:

python3 -mpip install --upgrade pip

尝试在更新完pip3后,键入命令:

pip3 list

新建个文件夹(虚拟环境用)

cd Desktopmkdir tf_picd tf_pi

安装虚拟环境这个好东西

python3 -mpip install virtualenv

增加环境变量,使得该好东西可以用起来

sudo chmod -R777 /root/.bashrcsudo nano ~/.bashrc

把exportPATH=/home/pi/.local/bin/:$PATH 放到最后,添加环境变量

source ~/.bashrc

成功了之后:整一个虚拟环境

virtualenvenvsourceenv/bin/activate

3、安装tensorflow1.14.0

用电脑下载:(链接)python3.7版本只能安装1.14.0-Buster版本的TensorFlow

https://github.com/lhelontra/tensorflow-on-arm/releases/tag/v1.14.0-buster

用U盘将这个文件拷到树莓派上,建一个bag文件夹存放

安装依赖包:

sudo aptinstall libatlas-base-dev

安装一些环境

sudo apt-getinstall -y libhdf5-dev libc-ares-dev libeigen3-devpython3 -mpip install keras_applications==1.0.8 --no-depspython3 -mpip install keras_preprocessing==1.1.0 --no-depspython3 -mpip install h5py==2.9.0sudo apt-getinstall -y openmpi-bin libopenmpi-devsudo apt-getinstall -y libatlas-base-devpython3 -mpip install -U six wheel mock

安装tensorflow

cd envcd bagpip3 install tensorflow-1.14.0-cp37-none-linux_armv7l.whl

这里要安装二十分钟。。。出错了再来一遍就好了。。

测试是否成功并查看版本:

pythonimport tensorflow as tftf.version

4、安装keras

安装一些依赖

sudo apt-getinstall libhdf5-serial-devpip3 installh5pysudo apt-getinstall gfortransudo aptinstall libopenblas-devpip3 install-i https://pypi.tuna.tsinghua.edu.cn/simple/ pillowsudo pip3install pybind11

第一个下载numpy:第一次的时候发现安装成功但调用失败了,我觉得是numpy版本过高导致出错了

下载keras还是tensorflow的时候会自动下载numpy(之前已存在,它会先卸载再安装高版本的numpy,之前不存在,它会直接安装高版本的numpy),所以要先下载keras,再卸载numpy,然后再安装低版本的numpy

看一下子numpy版本,太高了

重新安装

pip3uninstall numpypip3 installnumpy==1.16.0

第二个下载scipy【直接pip安装百分之九十九的可能都会失败。所以先下载再安装。。。先下载这个链接复制到树莓派上,然后解压到指定文件夹/home/pi/Desktop/tf_pi/env/lib/python3.7/site-packages下】

https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/aa/d5/dd06fe0e274e579e1dff21aa021219c039df40e39709fabe559faed072a5/scipy-1.5.4.tar.gz

cd/home/pi/Desktop/tf_pi/env/bag

tar -zxvf scipy-1.5.4.tar.gz-C /home/pi/Desktop/tf_pi/env/lib/python3.7/site-packages

然后进到这个文件夹里开启安装:【花里胡哨的各种代码配置呀啥的,会安装三十分钟左右】

cd /home/pi/Desktop/tf_pi/env/lib/python3.7/site-packages/scipy-1.5.4pythonsetup.py install

pip3 list看一看:【太六了,终于成功了】

再使用这个命令安装keras:

pip3 install keras==2.2.4

请注意;由于在virtualenv里面,一定一定要避免sudo pip3 install,否则会安装到默认路径下!发现keras安装到默认环境了,所以调用不成功,pip list没有

解决办法重新安装

pip3install keras==2.2.4

安装好了之后记得reboot重启一下子。

5、开始测试;import keras前面加import os就能忽略提示

因为keras可以配合很多框架,我们用的tf所以会有backend的提示

进入虚拟环境:

cd ~/Desktop/tf_pisourceenv/bin/activate
pythonimport tensorflowas tftf.__version__import kerasprint(keras.__version__)

六、用树莓派跑分类识别的代码

系统环境:2020-08-20-raspios-buster-armhf-full

**工程要求:Tensorflow 1.14.0+ Keras 2.2.4 + Python 3.7 **

1、把代码还有图片集,拷到树莓派上

其实Filezilla这个FTP传输就很方便

2、激活虚拟环境

cd ~/Desktop/tf_pisourceenv/bin/activate

3、克隆代码并进入代码目录

克隆代码

cd ~/Desktop/tf_pi/envgit clone https://gitee.com/yangkun_monster/raspberrypi-Garbage-classification.git

若提示git命令未找到:

sudo apt-get install git

进入代码目录:

cd ~/Desktop/tf_pi/env/Garbage-Classification/code1

这里更改test.py的测试集路径

pythontest.py

发现有个文件解码有问题,于是根据错误的消息的路径,去这里:

/home/pi/Desktop/tf_pi/env/lib/python3.7/site-packages/keras/engine

在.decode(‘utf-8’)前面加.encode(‘utf8’)

再次到测试这里运行python test.py,解决了!

测试AlexNet需要把test.py文件里的权重文件路径改了,把输入图片维度由(150,150) 改为(128,128)

Code1测试结果:test100张玻璃

网络 VGG16 AlexNet
精度 89% 87%
时间 307 80

Code2测试结果:test100张窗帘(两种,R可回收,O不可回收)

网络 VGG16 AlexNet
精度 98% 98%
时间 309 46

七、树莓派安装opencv并测试视频接口

系统环境:2020-08-20-raspios-buster-armhf-full

工程要求:opencv 3.4.6.27

cd ~/Desktop/tf_pisource env/bin/activate
cd ~/Desktop/tf_pi/env/laji/code1python data1_video_test.py

1、安装必要的库

pip3 install numpysudo apt-get install libhdf5-dev -y build-dep libhdf5-devsudo apt-get install libatlas-base-dev -ysudo apt-get install libjasper-dev -ysudo apt-get install libqt4-test -ysudo apt-get install libqtgui4 -ysudo apt install libqt4-testpip3 install libqtgui4sudo apt-get install cmakesudo apt  installcmake-qt-guisudo apt-get install libgtk2.0-devsudo apt-get install pkg-configpip3 install boostpip3 install dlib

2、电脑浏览器下载以下两个文件

https://www.piwheels.org/simple/opencv-contrib-python/opencv_contrib_python-3.4.6.27-cp37-cp37m-linux_armv7l.whl

https://www.piwheels.org/simple/opencv-python/opencv_python-3.4.6.27-cp37-cp37m-linux_armv7l.whl

3、将两个文件拷贝到树莓派上去

4、安装这两个文件,先更新pip

pip install --upgrade pippip3 install 文件位置

注意,由于是虚拟环境,就不能做sudo,会安装到默认路径

cd env/bagpip3 installopencv_contrib_python-3.4.6.27-cp37-cp37m-linux_armv7l.whlpip3 install opencv_python-3.4.6.27-cp37-cp37m-linux_armv7l.whl

5、测试

先打开摄像头设置

sudo raspi-config

然后运行摄像头程序

采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码相关推荐

  1. Windows+Anaconda+tensorflow+keras深度学习框架搭建--reproduced

    转载于网络,已备查用. 现在把windows下的Anaconda+tensorflow+keras深度学习框架搭建过程记录如下 1.下载安装Anaconda记住支持版本一定是python3以上的版本 ...

  2. Keras 深度学习框架中文文档

    2019独角兽企业重金招聘Python工程师标准>>> Keras深度学习框架中文文档 Keras官网:http://keras.io/ Github项目:https://githu ...

  3. DL之Keras: Keras深度学习框架的注意事项(默认下载存放路径等)、使用方法之详细攻略

    DL之Keras: Keras深度学习框架的注意事项(自动下载存放路径等).使用方法之详细攻略 目录 Keras深度学习框架的注意事项 1.Keras自动下载默认数据集/模型存放位置 Windows系 ...

  4. 在Ubuntu上安装Keras深度学习框架

    目录 1)安装pip 2)安装Python科学套件 3)安装TensorFlow 4)安装keras 5)安装Jupyter Notebook 6)运行Keras 本文介绍如何在Ubuntu上安装Ke ...

  5. 微信正在用的深度学习框架开源!支持稀疏张量,基于C++开发

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微信正用 ...

  6. Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别

    Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 # -*- codin ...

  7. Keras深度学习框架配置

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共7349个字,49张图,预计阅读时间19分钟. 作者:周纵苇 微博:@MrGiovanni 邮箱 ...

  8. Keras 深度学习框架方法及参数

    Keras是python中基于Theano.CNTK等为计算后台的深度学习建模环境,相对于其他的深度学习框架,如tensorflow,theano,Caffe等,Keras具有其显著的优点,如,支持C ...

  9. 第一节:Keras深度学习框架之环境搭建

    请在学习本节前阅读我们之前的预热课程: 卷积神经网络的框架解读(上)_BBM的开源HUB的博客-CSDN博客 卷积神经网络的框架解读(下)_BBM的开源HUB的博客-CSDN博客 从本节开始,我们将进 ...

最新文章

  1. Linux命令screen—终端切换,工作环境保存,画面同步,防断网
  2. NHibernate Step by Step:序篇 (转)
  3. C# Note34: 异常机制相关小点
  4. webpack项目上传云服务器,webpack项目上传云服务器
  5. basis--IMG后台如何显示事务码(How to display IMG's Tcode)
  6. why-use-getters-and-setters
  7. rac一节点时间比另一个节点快_数据库数据那么多为什么可以检索这么快?
  8. 洛谷P3648 [APIO2014]序列分割(斜率优化)
  9. JDK源码——源码学习总结与分析
  10. 2022年合肥及合肥市各地稳岗补贴申请条件及补贴标准申请流程实施细则
  11. 2020.12.28Excel(数字到BZZ)
  12. 怎么把录音导入库乐队_怎么往库乐队里导入音乐
  13. win10截图快捷键是什么|win10截屏按键是哪个
  14. 计算机网络语音传输杂音回音,QQ语音时,怎么消除麦克风回音、噪音、杂音
  15. 经典按键算法使用心得
  16. RT-Thread Studio中ST-LINK下载报错“Old ST-LINK firmware version“解决
  17. Teamwork(The first day of the team)
  18. 计算机复制操作的方法,怎么用键盘复制粘贴?电脑使用键盘复制粘贴的方法
  19. 【基金学习】基金的相关计算题目
  20. 屯特大学计算机排名,荷兰屯特大学世界排名2021

热门文章

  1. 赛尔号桌面版_赛尔号电脑版下载 赛尔号电脑版下载
  2. 我做的游戏终于上线了----三国Q传!!!
  3. 腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程
  4. 汽车之家和易车该如何走下去?
  5. 【技术分享】Windows10下安装深度学习常用软件教程分享
  6. 键盘输入 kbhit()
  7. 苹果手机软件升级密码_安卓系统用久了会卡,苹果系统就能一直流畅?
  8. spark streamming + kafka + Redis 实践
  9. 在win7 上安装 Visual Studio 2019 步骤 及 vs2019离线安装包
  10. 阿里云ACP认证之云服务器ECS知识整理(考题占比 31%)