目录
简述
毕业设计需要做一个垃圾分类系统,要求使用tensorflow和Mobilenet模型,准确率达到90%。个人认为对于一个成熟的预训练模型,需要最重要的并不是修改模型的层数,也不是魔改超参,最需要注重的是清洗自己的数据。网上的开源数据集质量参差不齐,令人头疼,但是没得选,所以最终我采用了多个开源数据集,在数以万计的图片中人工筛查坏图,差图......不说了都是泪。
以下是本项目配置
操作系统:Windows 10
编程语言:Python 3.8
深度学习框架:TensorFlow 2.6 gpu
图形界面库:PyQt5
需要注意如果使用tensorflow-gpu,务必使cudnn,cuda和你的tensorflow版本匹配。网上有众多安装指导过于麻烦,甚至大部分都是复制粘贴,狗皮膏药;实际上为了避免麻烦,最简单的方法就是使用conda安装,在官网查询框架对应版本,直接conda install tensorflow-gpu,conda会自动安装相关依赖项。这还不是最好的办法,当conda所使用的镜像源没有正确的相关依赖,可能会自动安装错误的依赖,所以我们最好就是将对应的版本pip install即可。本文主要用于介绍垃圾分类系统,tensorflow-gpu的实装,等有机会在写一篇介绍。
以下是项目文件目录结构,如图:
以下是本系统的设计流程图:
数据集介绍
本系统的训练数据集共13100张,采用多个开源数据集,使用软件,人工等方法筛查合并而成,做了4分类,30小类,数据格式全为jpg,如下图:
部分数据集展示
类别一览
--fast food box
--soiled plastic
--tea
--Vegetable
--eggshell
--fish bone
--powerbank
--bag
--cosmetic bottles
--plastic hanger
--cigarette
--plug wire
--can
--plush toys
--shoes
--anvil
--toothpick
--cardboard
--pot
--edible oil barrel
--dry battery
--ointment
--expired drugs
--flowerpot
--bamboo chopsticks
--meal
--bone
--fruit peel
--pulp
--rotten food
还有一个二分类的数据集(可回收垃圾,有机垃圾),也可达90%的准确率,相对简单,在3轮epoch左右就会过拟合。
根据训练需要,使用PythonOS模块和shutil模块将数据以8:2的比例划分为训练集和测试集。划分代码在utils文档内。
代码操作介绍
使用代码时,只需要更改训练集,测试集的目录即可开始训练(前提是配置好开发环境),如图:
需要注意根据自己的需求更改模型的保存路径(默认models目录)和准确率及损失函数曲线的路径,如图:
简要介绍本模型采用随机亮度,对比度,饱和度,裁剪,色调变换和高斯模糊来增强数据,提高模型的泛化能力;在预训练模型mobilenetV2的基础上,添加了两层全链接层和两层批量归一化层创建顺序模型;同时使用三个学习率调度组合形成学习率调度方法创建模型。详情见代码
图形化界面介绍
图形化界面就不用多介绍了,CSDN大佬(肆十二)那借鉴的(抄的hhhhh)
需要注意更改自己的模型地址!
总结
该训练模型的准确率曲线如图:
可见模型准确率约92%,且有效收敛。
完整项目下载见垃圾分类识别:tensorflow实现垃圾分类识别