基于卷积神经网络CNN设计的垃圾分类系统
作者:李佳洋(中国人民大学附属中学)
摘要:随着计算机技术的不断发展,其应用领域更加广泛。近年来,我国对垃圾分类、环境保护和资源再利用日益重视。与此同时,我国人口基数大,每日产生大量生活垃圾,若不进行分类回收与再利用,将造成极大的资源浪费和环境污染。如何更精准地进行垃圾分类,已成为当前面临的一个关键问题。因此开发一款基于不同垃圾的图片进行智能分类的系统具有一定的理论意义和实际意义。本文以基于不同垃圾的图片进行垃圾分类的系统为背景,严格按照软件开发要求,对系统开发中的相关计算机技术进行了系统地分析,并详细阐述了该系统采用的CNN模型系统地实现过程。关键词:垃圾分类系统;卷积神经网络;准确率
一、引言
(一)项目研究背景
随着现代信息技术和计算机科学的迅速发展,计算机相关技术已应用于环境资源保护与利用的各方面。中国人口众多,每日产生的生活垃圾数量庞大,如何实现生活垃圾资源的最大化再利用,推行垃圾分类并合理回收资源,已成为各级部门共同关心和面临的问题。在日常生活中,垃圾分类十分重要,从某种程度上讲,它会直接影响我国生态环境和资源利用率。因此,我们需要垃圾分类城市化、乡村化。但对于某种垃圾属于哪一类,如今有很多人不能完全分清楚。这时,将计算机技术应用于垃圾分类这一难点,已成为解决这一问题十分重要的策略。设计垃圾分类系统,使大家在垃圾分类过程中更加便捷,同时也能使科学技术与人类生产生活联系得更加密切。因此,垃圾分类的信息化、规范化、智能化已成为一种必然趋势。
(二)项目研究的意义
垃圾分类智能化能够对人类生产生活产生积极影响,能够促进科学技术的发展,并且对资源充分利用能减轻地球资源负荷,所以垃圾分类智能化是十分有意义的研究方向。如果仅仅依靠个体主观对垃圾进行分类效果甚微。首先,个体意识有高有低;其次,个体的知识储备也有多有少,让所有人都按规定主动且准确地完成垃圾分类是十分艰巨且困难的任务。所以,我们需要完备的垃圾分类技术,使用计算机相关技术实现垃圾分类智能化符合时代发展需求。
(三)项目设计的思想和目的
从项目设计的思想角度来说,本垃圾分类系统采用了以计算机视觉技术代替人类视觉进行垃圾分类的理念。这也体现了迁移学习的思想,即让计算机代替人类学习相关垃圾分类知识,将人类科学正确的分类规则让计算机清楚了解并且帮助人类进行分类。
从项目设计的目的角度来说,希望通过开发基于不同垃圾图片识别分类的垃圾分类系统,将计算机视觉、卷积神经网络这些理论知识应用于实践,提高自己的动手能力和分析能力,为今后从事计算机视觉相关的工作打下坚实基础。希望通过这个基于不同垃圾图片识别分类的垃圾分类系统能够使垃圾分类变得更加简单。选择这一方向“垃圾分类”具有极大的现实意义。如下为这次项目设计目的的总结:
第一,学会卷积神经网络CNN的相关知识。
第二,能够搭建不同类型的卷积神经网络模型,解决生活中遇到的问题。
第三,帮助个体进行更准确的垃圾分类。
第四,使计算机技术应用面更广,同时使垃圾分类更加智能。
第五,为从事智能化垃圾分类技术研究的科研工作者提供借鉴。
第六,促进科技研究的角度更广,助人类的生存发展。
第七,促进资源节约、环境友好、生态文明的可持续发展。
二、需求分析
(一)需求报告调查
开发系统前不能盲目去做,应知道产品用户需要一个什么样的产品。即使我们做了一个十分完美的产品,若不能满足用户的要求,那么将会使用户很难上手操作,既不能满足用户需求,也浪费了精力,得不偿失。所以需要主动调查对这一系统有需求的人员,询问他们需要一个什么样的、具体的系统。
因功能单一,所以调查过程相对简洁。在采访同学和老师的过程中,我了解到在垃圾分类时,用户想要完全的解放,只通过我们的系统就能区分不同垃圾,丢入不同垃圾桶。所以该系统越简单越好,功能专一。我这款基于不同垃圾的图片识别的垃圾分类系统能够实现这一过程,我们将用户放入的垃圾进行图片识别,进而知道属于哪类垃圾。
通过本次对同学和老师的调查采访,可初步明确垃圾分类是市民十分需要的功能,且随着城市及乡村对垃圾分类的要求越来越严格,垃圾分类系统的需求将会持续增大。接下来的系统开发也将围绕这一具体需求,进行更精准地设计和开发,使该系统具有操作便捷、准确率高、应用场景广泛等优点,以便于用户能更舒适、便捷的对该系统进行操作。
(二)系统设计分析
总体来说,我们要建立一个垃圾分类的CNN模型,然后将模型应用于前端界面以便用户进行操作来完成垃圾分类。
从过程角度来说,首先收集大量不同种类垃圾的图片,并对图片分类。然后构建该模型,通过大量图片数据训练模型,得到一个由准确的参数和较高准确率构成的模型,并保存该模型。最后通过pyqt5构建前端调用该模型,以供用户使用。
收集数据是本系统设计的一大难点,想要训练一个十分准确的模型就需要数量庞大的不同类垃圾的图片,而收集如此多的图片需要的时间几乎占了整个项目开发一半的时间。那么如何进行高效的图片收集,也可成为一个重要的研究方向,本论文只做说明,并不进行具体研究。感兴趣的研究者或同行可从这一角度进行研究。
其次是构建模型,一个层数越多的CNN模型,其准确率也会更高。但由于本身硬件资源的限制,设计一个庞大的该模型反而会导致实验不能进行。若相关同行有极其完备的硬件,可继续加大模型层数,增加参数数量。随层数增多也可扩展加入ResNet[1][2],使模型变得更好、更准确。
Pyqt5设计的前端界面本身并没有太多技术,仅涉及输入框、输出框、文本框等。
系统设计的目的就是通过深度学习中的卷积神经网络建立卷积模型,通过大量数据训练模型,最终得出一个较稳定的垃圾分类模型。
三、技术及工具介绍
(一)人工神经网络
人工神经网络(Artificial Neural Network 简称ANN)也称神经网络(NN),是一种模仿人神经网络学习的结构和功能的深度学习[3]计算模型,经典的人工神经网络包含三个层次的神经网络结构,分别为输入层、隐藏层和输出层。人工神经网络ANN是深度学习的重要算法之一,在图像处理、图像分类和自然语言处理上都有十分广泛的应用。图3-1为一个简单的ANN网络模型。

图3-1
(二)卷积神经网络
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积提取特征的计算且具有深度结构的前反馈神经网络(Feedforward Neural Networks),是机器学习中深度学习(Deep learning)的重要代表算法之一。它能在较小的计算量下,对图像进行学习,为有稳定效果的深度学习算法。
(三)pyqt5
Pyqt5是由Digia公司开发的强大的图形程式框架Qt5[4],可在python中设计前端界面。我们将通过使用pyqt5设计一个简单的网页前端,有输入框、输出框、图片展示和相应文本框等。
(四)pycharn
Pycharm是一种python IDE,可方便用户进行python项目的搭建,是一款提高效率的编程工具,本项目将建立在这一编程工具上。
(五)Anaconda Anaconda是由anaconda公司开发的,能建立不同虚拟的python环境,使不同版本的python代码运行更加便捷、有效。减轻了编程过程中的环境不协同问题。
四、收集数据集
(一)数据总量
我们通过百度、搜狗等浏览器共收集9607张图片,将图片分为四大类(即可回收垃圾、不可回收垃圾、有害垃圾、其他垃圾[5]),四大类中共包含40个子类。下图4-1为部分展示:

图4-1
下表4-1为不同类图片数量的分布:

表4-1
(二)数据分类 1.餐厨垃圾包含2个子类:残渣剩饭类、水果类。
2.可回收垃圾包含20个子类:包类、保温杯类、玻璃壶类、玻璃球类、不锈钢制品类、布制品类、餐具类、插线板类、充电线类、吹风机类、磁铁类、搓衣板类、打包绳类、打气筒类、打印机类、袋子类、单车类、刀类、地球仪类、灯罩类。
3.其他垃圾包含9个子类:电影票类、果壳类、胶带类、口罩类、毛巾类、湿纸巾类、一次性棉签类、牙刷类、眼镜类。
4.有害垃圾包含9个子类:电池类、电池板类、纽扣电池类、杀虫剂类、温度计类、蓄电池类、药瓶包装类、药瓶类、指甲油类。
下图4-2为各类图片文件展示:

图4-2
五、垃圾图片分类模型 (一)模型结构
我们建立了一个三层卷积、三层池化和两层全连接的8层卷积神经网络模型。该模型对输入的一张224×224图片(该图片须属于我们训练采用数据集的一个子类)能判断它是什么(如一次性棉签、玻璃瓶等),同时区分它属于哪一类垃圾(可回收、不可回收等)。如图5-1:

图5-1
第一层:使用32个3×3的卷积核,使用RULU激活函数对与卷积核做乘积得到的新三维矩阵的每个权重求新的权重值。 第二层:对矩阵进行最大值池化。
第三层:3×3的卷积核,数量为原来的2倍,有64个卷积核。同时使用RELU激活函数。
第四层:对矩阵进行最大值池化。
第五层:同理,为128个3×3的卷积核和RELU激活函数。
第六层:同理,进行最大值池化。
第七层:对矩阵展开后,有128个神经元(128个节点)做全连接,再次使用RELU激活函数。
(二)softmax函数与损失函数
模型使用Softmax函数输出一张图片属于每一类别的概率预测值[6],使最后一层神经元输出的值缩放到(0,1)之间,然后进行分类。其中V代表一个属于每一类别的输出值的数组,Vi表示V中的第i个元素。Softmax函数如下:

损失函数为categorical_cross entropy(交叉熵)函数如下:
六、系统开发 (一)数据集分类
我们将9607张图片,按照比例8∶2划分为训练集和验证集[8],使用训练集训练卷积神经网络,在每轮训练结束后,使用验证集验证卷积神经网络。同时将9607张图片用作测试集。如图6-1所示:

图6-1
训练集的目录:D:/bishe/project/data/train 测试集的目录:D:/bishe/project/data/test
验证集的目录:D:/bishe/project/data/val
(二)CNN模型搭建
CNN模型使用tensortFlow构建了一个简单的卷积神经网络模型,该模型由3层卷积层和3层池化层构成,最后将特征值展开后将数据传入使用两层全连接层来完成图片的分类任务。 卷积模型的构建过程如下,此模型中我们使用adm优化器,并且使用交叉熵函数(categorical_cross entropy)作为我们的损失函数。代码展示如图6-2、图6-3:

图6-2

图6-3
(三)训练模型 如以下代码所示,我们指明训练模型所用的数据集的位置,训练完成后将模型保存位置以及指明要对模型进行30轮的训练。核心代码如图6-4:

图6-4
在此模型训练结束后,将会把此模型结构和模型中的参数保存在模型中,将模型保存在models目录下。训练过程折线图也将被保存。 (四)用户前端界面
建立一个前端界面,以供用户使用该模型。
前端供用户使用的界面采用了pyqt5,主要是进行图片上传、图片预测。具体代码如图6-5所示:
图6-5
如图6-6为代码展示:

图6-6
界面设计成果如图6-7:

图6-7
七、训练效果 我们会从三方面对卷积神经网络多分类模型进行全面评估。
①我们将在30轮训练过程中,分析训练集和测试机的准确率。
②我们将在30轮训练过程中,对训练集和验证集的损失率进行分析。
③我们会在测试过程中,判断该分类模型的准确率。
(一)训练过程中准确率分析
图7-1
图7-1所示,训练集中图片的数量占图片总数的80%,为7685张照片。随着训练轮数的增加,训练集下的准确率几乎接近于1。验证集中图片数占总图片数的20%,为1921张图片。随着训练轮数增加,验证集下模型的准确率为42%~43%。综合分析准确率,我们得出这款模型能够进行图片分类,并且达到近乎准确的结果。 (二)损失率分析

图7-2
图7-2所示,训练集下损失率较低,验证集下的损失率比训练集的损失率要高得多。模型存在一定的过拟合。 (三)测试下的准确率
图7-3显示,通过已有的训练模型,我们再次用这9607张图片对模型进行测试得出识别各类图片准确率的热力图。

图7-3
我们能从热力图看出,其中可回收垃圾识别准确率为95.5%、厨余垃圾识别准确率为88.8%、其他垃圾识别准确率85.3%,有害垃圾的识别准确率为91.8%。所以我们确定此模型能够进行简单的垃圾分类。 八、结论
经过一个多月的设计和开发,基于图像识别的垃圾分类系统基本开发完成,此系统能基本准确地分类不同垃圾的图像。此系统能应用于城市的智能垃圾箱上,通过市民所扔垃圾判断并分类减轻垃圾分类中遇到的困难。总结至此,系统有以下优点:
1.使用者易于操作,可直接对所扔垃圾拍照上传到此系统,判断所扔垃圾属于哪一类垃圾。
2.我们设计的这个卷积神经网络可进行再扩展,增加要分类垃圾的种类只需收集该种类垃圾的图片并对模型进行一个重新训练,得到新的参数。
3.随着收集照片的增加,垃圾种类不断丰富,该垃圾分类系统将变得更加准确。
4.该系统可装在智能垃圾箱上,也可作为软件装入手机。
在论文设计的这段时间,我主要的工作就是收集不同种类垃圾的图片用于模型的训练。由于时间限制,数据量(照片的数量)不够充分,模型的准确性有待提高,参数也有很多优化的空间,有待后续改进和开发。
在这一基于垃圾图片识别的垃圾分类系统的开发过程中,我学习到很多关于计算机视觉和卷积神经网络的知识。同时通过查找大量的资料、阅读、学习、分析和设计,使我对计算机视觉和深度学习相关方向产生了深厚兴趣,今后也将继续在这一方向深耕。
个人小结:通过这次项目实战,使我对计算机视觉、深度学习、人工神经网络、卷积神经网络等相关知识有了更深的认识。在这之前,我对这些知识仅停留在理论上的理解,并没有实际操作。这次论文不仅使我在动手能力上极大的提高,也巩固了所学的相关理论知识。我从论文指导老师身上学到很多东西,老师给予我很大的帮助,让我得到不少提高,这对我之后的工作和继续学习都十分重要,由衷感谢他的耐心辅导。
参考文献[1] 王健,刘雪花.基于深度可分离卷积的苹果叶病理识别[J]. 计算机系统应用,2020,29(11):190-195.
[2] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Deep Residual Learning for Image Recognition[J]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, pp. 770-778
[3] 孙志军,薛磊,许阳明,王正.深度学习研究综述[J].Application Research of Computers.2012,29(8).
[4] 唐明浩,李非凡,李清纯.一种基于深度学习的银行卡号识别方法[P]. CN201910868191.6.2022-02-11
[5] 住房和城乡建设部发布《生活垃圾分类标志》标准[J]. Real Estate Information of China.2019,(34)
[6] 郭树旭,马树志,李晶,等.基于全卷积神经网络的肝脏CT影像分割研究[J].计算机工程与应用,2017,53(18):126-131.
[7] 刘帅君,寇旭鹏.基于卷积神经网络的农作物病理图像分类算法研究[J].Hubei Agricultural Sciences.2021,60(9)
[8] 宋文浩.基于神经网络算法的新闻分类研究[J].Practical Electronics.2019,(2)