当前位置:   article > 正文

基于深度学习算法的垃圾分类图像识别_机器学习图像识别垃圾分类项目

机器学习图像识别垃圾分类项目

中文摘要

□□
在科技发达、智能时代中,深度学习、机器学习以及人工智能成为了高频词。它们看似深不可测,但是又离不开我们的生活。深度学习和机器学习是一种技术、而人工智能一种是一种体现。使用深度学习和机器技术,使机器拥有人的某种大脑结构从而来实现人的某种行为,它不仅解决了很多即无聊又繁琐的工作,从而解放了很多工人每天反复并且厌倦的动作节,节省了大量的时间;而且它在每件工作当中,能够做到比人更加精确,并且不会像人类一样受感情甚至环境的影响导致工作的效率以及成品的达标率降低。正因为人工智能给人们带来了出乎意料的惊喜以及数不胜数的方便,并且人工智能能够满足人类的懒惰性,所以人类对深度学习、机器学习以及人工智能的需求也越来越多。在这种人工智能急剧膨胀的形势下,深度学习与机器学习成了垃圾分类的主要推力。众所周知,垃圾是人类既厌恶又无法摆脱的物体,而垃圾则是铺天盖地层出叠见地出现在我们地视野中,解决垃圾问题给全球带了巨大的挑战。想要有效处理垃圾,垃圾分类是必然的结果,然而垃圾分类过程又是一件既繁琐又耗时的事,而且使用人工进行垃圾分类它不仅需要耗费大量的人工而且它还会大大降低准确率。这时人工智能、深度学习就起了重要的作用。
本文正是研究深度学习算法的垃圾分类图像识别。论述多种深度学习算法及网络结构的图像识别处理原理,分析深度学习在图像识别中的突出优势,并且提出垃圾分类在现实社会中面临的问题与挑战。在综合了解研究后,深入探讨使用深度学习算法的卷积神经网络,在大量的有效图像数据集的训练过程中是如何增加一种全新的隐藏层,并且使用这种增加卷积层的方法来得出更高层次的特征提取从而让机器自动提取特征来实现图像的识别。

关键词: 深度学习 图像识别 垃圾分类 机器学习 人工智能

Abstract

With the heat of big data, the three words of Deep Learning、Machine Learning and Artificial Intelligence frequently appear in front of people. They may seem unpredictable, but they are inseparable from our lives. The same DL and ML are the technology and method used to implement AI. Combining DL and ML to allow machines to imitate the structure of human brains to achieve certain human behaviors, it not only solves many boring and tedious tasks, thereby liberating many workers from repetitive and tiresome action sections every day, saving a lot of time; It can be affected than humans in each job, and it will not be affected by emotions and the environment like humans, which will cause the work efficiency and the standard compliance rate of finished product to decrease. Because AI has brought people unexpected surprises and countless conveniences, and the AI can meet the laziness of human beings, so humans have more and more needs for DL, ML and AI. In this situation of rapid expansion of AI, DL and ML become the main thrusts of Garbage Classification. As we all know, garbage is an object that humans both hate and cannot get rid of, and garbage appears in our horizons in an overwhelming manner. How to solve the garbage problem is a global challenge. If you want to effectively deal with garbage, garbage classification is an inevitable result. However, the waste sorting process is cumbersome and time-consuming. Moreover, using manual labor to classify garbage not only requires a lot of labor but also greatly reduces the accuracy. At this time, AI and DL play an important role.
The subject of this article is the image classification of garbage classification based on deep learning algorithms. Discuss the image recognition processing principle of multiple DL algorithms and network structures, analyze the outstanding advantages of DL in image recognition, and put forward the problems and challenges that garbage classification faces in real society. After a comprehensive understanding of the research, a deeper discussion of how to use CNN with DL algorithms to add a new type of hidden layer during the training of a large number of effective image data sets, and use this method of adding CNN layers to a higher level of feature extraction is provided to allow the machine to automatically extract features to achieve image recognition.

Key words:Deep Learning Image Recognition Garbage Classification Machine Learning Artificial Intelligence

目 录

第一章 绪论 1
1.1研究背景、目的及意义 1
1.1.1研究背景 1
1.1.2研究目的 1
1.1.3研究意义 2
1.2研究现状 3
1.2.1国外研究现状 3
1.2.2国内研究现状 4
第二章 开发工具与关键技术的介绍 5
2.1开发工具 5
2.2深度学习 5
2.3人工智能 6
2.4图像识别 6
第三章 深度学习算法模型 7
3.1自动编码神经网络 7
3.1.1自动编码器 7
3.1.2变分自动编码器 8
3.1.3生成对抗网络 9
3.2受限波尔兹曼机 9
3.3卷积神经网络 11
3.3.1卷积神经网络结构概述 11
3.3.2卷积神经网络之AlexNet 12
第四章 系统设计与分析 17
4.1垃圾分类图像识别系统构成及原理 17
4.1.1图像处理基础知识 17
4.1.2垃圾分类图像识别系统构成 17
4.1.3图像识别系统功能分类模块设计 18
4.2垃圾分类图像识别系统设计 19
4.2.1垃圾图像数据来源 19
4.2.2图像预处理 22
4.2.3AlexNet卷积神经网络搭建 23
4.2.4模型训练 25
4.2.4模型测试 27
4.3GUI界面设计 28
4.3.1PYQT5简介 28
4.3.2PYQT5界面设计 28
4.4项目结果研究与分析 29
第五章 项目结论与展望 34
5.1项目结论 34
5.2未来展望 35
参考文献 36
致谢 37

第一章 绪论

1.1研究背景、目的及意义
1.1.1研究背景
在人类还没有意识到垃圾对我们的生活饮食、身体健康,社会环境等会造成极大影响的时候,人们把对自己没有使用价值的外包装、砖瓦陶瓷、剩菜剩饭、荧光灯管等垃圾都随意丢弃,甚至在各街道上的垃圾也是随眼可见。随着人们这种肆无忌惮随意扔垃圾的行为,大自然至今给我们带来惨痛的教训。根据数据显示,在一个人口密集的中国每年生产的垃圾总数量高达10亿吨,成为了一个垃圾成产的超级大国。然而在人类没有正确对待垃圾处理的问题中,导致了堆积成山的垃圾形成有剧毒的腐烂物,和有害的脏水渗透到地下造成严重的水资源污染,这些有害的腐蚀物品和水不仅侵蚀人类的身体,甚至某些地区因为这些有害垃圾导致很多村民得了癌症,形成了癌症村。
垃圾对人类造成如此大的危害,所以如何处理垃圾问题成了国家与人民刻不容缓的重要任务,也是我们义不容辞的责任。在数量如此庞大的垃圾里,实行垃圾分类是最有效的方法,只有让更多的垃圾有效的循环使用,变成有价值的垃圾,从而才能达到减少垃圾降低危害的目的。但垃圾分类是一项大工程,如果垃圾分类只有环保工人在实行,那只有微乎其微的作用,所以垃圾分类,人人有责。本课题就是为了让大家能够快速并准确的对垃圾进行分类做出的一个垃圾分类图像识别。设计采取六种不同的垃圾类型图片,通过使用深度学习算法的最火热的AlexNet卷积神经网络结构,该结构由5层卷积层和3层全连接层组成。其中卷积层用于提取图像特征,全连接层用于逻辑处理。通过网络训练从而使得机器得到一个能够自动识别垃圾的设计。本研究不仅能够提高垃圾分类的准确率与效率,并且可让人们能够简单方便地学习垃圾对应属于的类型。

1.1.2研究目的
实行垃圾分类是生态文明,保护环境的重要环节。简单粗暴的垃圾焚烧、垃圾填埋、垃圾堆放等等都不仅会导致严重的环境污染还会占用土地资源,甚至严重的影响人的身体健康,然而实行垃圾分类,它可以弃废为宝:把纸箱,塑料,金属,布料等可回收垃圾进行分拣、加工、打包等步骤就成为了新的衣服,窗帘,塑料箱等新的商品进行销售;把剩菜剩饭、腐烂水果等厨余垃圾经过预处理分成油脂、污水和残渣等,其中油脂运到油脂加工厂进一步加工,油脂加工生成的生物柴油可用来使用在汽车上做燃料。污水排到污水处理站经过处理后再排放,降低水资源的污染。而残渣可以进行发酵产出沼气可用来发电,发酵后的残渣还可以作为有机营养肥料,助于植物的生长;最终有害的电池、灯泡、水银、化妆品等有害垃圾,还会进一步分为有无作用垃圾,有用的垃圾要进行深度的加工,无用的垃圾才被拉到一个专门设置过的填埋场进行填埋。这一系列都是垃圾分类的重要处理过程,显而易见,垃圾分类的实施不仅达到资源的循环利用,还可以减轻资源紧缺的重要问题,进行垃圾分类还可以提高人类的的素质素养,以及价值观念,让社会上都养成勤俭节约的作风,学会节约资源,利用资源。
然而要全面推广垃圾分类,人类必须要了解垃圾所对应的类型。本课题的垃圾分类图像识别就是解决人类对垃圾分类的疑惑。人们可以通过垃圾图片及摄影可得出垃圾类型,从而学习分类垃圾以及对垃圾的正确投放。因此,此课题的设计研究对国家社会以及社会环境有着非常积极的作用。

1.1.3研究意义
通过这次课题的设计与研究,深深的认识到垃圾对我们人类带来的巨大的影响,为自己以前做过乱扔垃圾的行为感到十分的惭愧。在研究过程中,不断地改变了自己对垃圾的价值观,提高了自己的探究能力以及专业能力。本设计对垃圾图像或者用摄像头对垃圾进行识别,有助于使用者能够通过最简便的方法来得知垃圾的类型并且提高投放垃圾的准确率,可降低环卫工人的工作量,加快社会环境的环保。此研究还可对社会提供借鉴价值,推广实施垃圾分类,营造美好环保家园。由此可见,本次研究的深度学习算法垃圾分类图像识别不能进对个人,社会,国家都有着非常大的意义,是一个值得探究的课题。

1.2研究现状
1.2.1国外研究现状
不仅仅在中国处理垃圾问题是国家的一项重要的任务,垃圾在每个国家特别人口数量众多的大国里最让人头疼,又不得不重视的事情。由此在西方国家早已对混合性的垃圾实施了垃圾分类,从而来降低垃圾数量和危害化的程度,同时还提高了资源化的作用。在外国很多国家他们分类垃圾是做到非常细致的,但是在刚开始实行细致垃圾分类的时候,也存在着很多问题,比如效率低、居民友好度低、变通性低以及导致劳动密集等问题。这些问题都大大的拖延了实行垃圾分类的发展,为此它们做了很多垃圾分类的投放案例,在美国施行了单、双物流循环系统;在德国设立了“德国包装条例”,实施了分类投放方式,还构建了双规系统和押金系统。但这些方法还是有很多欠佳得地方,毕竟用人工来识别并进行垃圾分类投放,不得不说分类垃圾的准确率无法得到保障,其次耗费大量人工资源以及时间。然而能改变这种状态的最佳最有效的方法莫过于用机器来代替人工的这些工作,所以大数据智能时代又派上了用场,使用机器垃圾分类投放案例继而在国外展开实施。气动收集和光学识别是根据投放者将垃圾投入机器,系统对投放的垃圾袋的颜色自动称重,根据重量机器用气动系统对垃圾进行运输与分类;消费者使用摄像头将需要投放的垃圾进行识别,消费者还会得到奖励以及一个自己的消费习惯汇总,这就是国外的视频识别投放技术;MAX_A技术是回收厂最核心的一部分,它使用大数据人工智能的深度学习算法,模仿人的大脑结构在单物流系统中对垃圾进行分拣,这效率与准确率是人工的好几倍,成为回收工厂的核心大脑。
在2019年,Intuitive AI推出的OSCAR系统,系统使用弱人工智能算法通过显示屏和摄像头来进行垃圾分类。系统经过训练可识别处上千种垃圾。OSCAR还运用语音功能对消费者投放垃圾的正确与否做出相应的奖励与惩罚。
在日本FANUC的一款视觉分拣机器人它小巧玲珑,工作能力强,它不单单可以识别垃圾的类型,根据垃圾的材料来识别类型才是它的最大特点,这技术可用在垃圾回收,根据机器分出来的物品,直接拿去加工又成为一种原材料。达到了垃圾分类的资源化目的。
在美国的触觉分拣机器人,这种机器对即使外表相同但材质不同的垃圾,只要通过接触的方式,就能准且快速的抓取物体。由此可见,国外在垃圾分类上有着相当好的技术,在环境的改善与经济的效益同时都有着非常大的作用。

1.2.2国内研究现状
在2000年,在我国各大发展城市成为垃圾分类的集试点,但垃圾分类在当时似乎只是一个口号,城市的设施、宣传、监管都缺少全程布局。虽然实施了垃圾分类,但是没有得到真正的落实。城市的各类垃圾桶没有俱全、人们并没有按照要求进行垃圾投放、垃圾处理工厂不够完善最终还是被运输到同一个地方处理等等,这些问题都只是口头的垃圾分类,而最终垃圾还是按照混合性来处理,所以当时进行的垃圾分类并没有效的效果,垃圾的污染还是在继续日益恶化,因此国家更加注重垃圾分类快速并要按照严格要求来实施。在2019年,《生活垃圾分类制度实施方案》正式颁布。
为了垃圾分类得到大众的高度重视,在2019年7月,上海正式落实生活垃圾分类制度方案,称为历史上最严格的垃圾分类措施,对混合投放行为给予惨痛的惩罚,个人和单位最高罚款分别高达200元与5万元人民币。这令人抓狂并窒息的条例让上海居民犯了愁。一杯泡面吃完了也不敢扔,因为泡面杯、泡面叉、还有吃泡面剩下的泡面水这都怎么分?怎么放才正确?这些都成了大家的灵魂拷问,所以每天扔垃圾都要三思而后行。但是这些这么细致的事情用人力来监管,这诚然每个人都会存在有非标准答案的情况,因此,此时人工智能技术,智能垃圾分类就大有作为。“小黄狗”、“别扔了”等这些都是大数据技术的智能垃圾回收箱,根据扫码投放以及公众号预约回收大件物品,云计算还可以根据个人垃圾的投放做出每个人的数据分析,可得出日常人们的生活习惯以及购买的数量最多的商品是什么,这同时还可以促进商店的经济发展。在捡练工厂,我国引进了芬兰的ZenRobotics垃圾分类系统,它比人的大脑更快更准确,通过传感器与扫描仪,准确的识别并抓取所需垃圾并投放到正确的地方,每天的工作量达到人的40倍以上,是垃圾分类捡练工厂的一大活宝。
目前,虽然我国的垃圾分类得到很大的改善,但是在垃圾分类的技术上还有很多不足之处,这是我们人工智能,深度学习一大挑战与机遇。所以结合深度学习的算法,研究人工智能对垃圾图像进行识别并分类,这是一个非常值的探讨的技术。

第二章 开发工具与关键技术的介绍

2.1开发工具
Microsoft VS Code,通常被简称为VS Code或VSC。它是一个非常强大的工具并且可跨三大平台运行,Window、Linux和Mac。VS Code可以满足用户根据各自喜好编辑出心目中最完美的专属编译器。不仅JavaScript,TypeScript,Node.js都是VS Code所支持的,而且在各大语言里提供富裕的运行时与扩展库,如Python,C++,C#,PHP等语言。对于一个程序员来说,VS Code能达到他们心目中的免费,高效,开源,轻便,这是完全取胜于atom,webstorm和MyEclipse等开发工具。在2019年Jupyter增加在VS Code的功能里,再也不需要用插件而且可以直接运行调试,比PyCharm更简便,更轻捷,所以对于Python学者来说VS Code又比PyCharm更胜一筹。

2.2深度学习
众所周知,深度学习是人工智能的一门热技术,它来源于机器学习,是机器学习的新创作,新发展。深度学习参照人的大脑神经元结构,将数据的输入模仿成大脑神经元的树突接收外界信息,数据的加权求和过程仿照神经元的细胞核将收到的信息进行加工,深度学习的激活函数仿照神经元的轴突运输信息,再通过突触输出感知信息。数据从输入到输出相当于一个完整的神经元从感知信息到头脑获取信息。在深度学习中经常把多个单一的神经元组合在一起,上一个神经元的输出作为下一个神经元的输入,如此类推,最终达到只剩一头一尾的输入和输出点,这样构成的结构就成为神经网络结构,其中输入点和输出点中间层都叫做隐含层。与机器学习相比深度学习不同的特征是无监督学习,它不需要人给予学习的特征,只要有一批数据,深度学习能够自己根据数据通过多层神经网络结构反复处理找出最具有代表性的特征,继而来对新数据做出判断给出正确结果。在神经元的基础上增加深度,根据现状的大数据与云计算研究出来的一系列算法在现实生活的应用起到非常大的作用,如现今的自然语言处理,语音识别和图像处理等这些最为广泛的应用都离不开我们深度学习的神经网络。

2.3人工智能
人工智能可在中间分为两个词语,“人工”和“智能”,可译为人工制造,人工生产和知识,意识,能力。所以人工智能即是人工制造出有智慧有能力并且可以仿照人的思维过程的机器来解决现今较为复杂的事情。要实现高级人工智能,我们需要用海量优质并有效的数据,在优秀的算法中让机器自行反复强化印象就能让机器更有效率产出满意的结果,所以数据,算法和云计算环境是人工智能中心索要。但想要让机器构造出一定的人脑思维,那涉及的学课不单单是计算机,心理、推力等学课也是较为重要的一部分。在大数据急速发展的时代,智能机器替代人类完成复杂的任务,而且比人类更为准确,更为快速,这就是为什么人工智能在当代为何如此火爆的原因,这也是人工智能的研究价值所在。

2.4图像识别
图像识别通过大数据技术对图像预处理、特征提取,然后训练得出模型就可以对目标进行识别。在人类中的图像识别中,人们根据图像反应到我们感官的信息,然后大脑自动进行处理,帅选,认识,储存对图像进行认知和再认的过程就为人类的图像识别。在人工智能的图像识别中,它与人类的图像识别相似,参照人的大脑结果,用深度学习算法对新输入的数据进行特征处理,训练构成一个模板,当再有数据输入时候,数据图像与已存在的模板相符,那么机器就能把图像识别,这就称为机器的图像识别。

第三章 深度学习算法模型

深度学习算法结合数据的多个输入输出构成的隐藏层就是深度学习算法的模型。要想得到一个最有效的算法模型,海量的数据训练和多层的神经网络是数据特征提取的重要关键,只有拥有庞大完美的数据集再结合一个优秀的算法就可以得到一个准确率高、识别速度快的模型。深度学习仿照人脑通过多个神经元以层级的方式传递提取特征,所以深度学习算法也是通过多层的神经网络来学习传递并得出最有效的特征。本章节就是研究分析多种深度学习算法的网络结构的构建与图像识别的关联知识。
3.1自动编码神经网络
3.1.1自动编码器
自动编码器是无监督的神经网络模型。既然有无监督学习存在,那相对应的有监督学习同理也存在。所谓有监督学习,其实就是数据包括了数据特征与数据标签。一般而言,有监督学习就是给定机器数据以及数据标签,让机器自动把数据的特征与相对应的数据标签联合起来,最终达到机器能够从一个无标签的数据中反馈出一个正确的标签结果。而相对应的无监督学习数据是没有给定标签的,需要机器根据数据的内在特征把数据规划分类,找出规律。其无监督学习一般用在聚类、密度估计与异常检测应用中。实际构成自动编码器主要有两部分。第一部分根据无监督学习来训练网络去除噪声从而使得数据得以降维,此过程也叫做编码过程;第二部分将编码得出的数据重新构造成原始状态的数据,此过程叫做解码过程。如下图3.1所示:
v在这里插入图片描述

图3.1 自动编码器过程图
由上图的编码过程可知,若当把x1,x2,x3三个数据作为自动编码的输入数据,则三个数据经过编码器就可以得出一个整体数据的隐含特征,隐含特征指的是在原始数据中挑出最具有代表性的特征,其隐含特征的数据也称为压缩数据。然后压缩数据通过解码器就得到和原始数据相似并且与原始数据维度相同的重构数据x1’,x2’,x3’。
如今把原来数据经过编码解码得出的重构数据在自动编码器中较为少用。目前较为有用的是数据经过编码器得出的压缩数据。压缩数据主要用途在两个方面,一个用途是用自动编码器的方法把数据经过编码器得出的压缩数据,此数据的维度是比原来数据要低,起到去除噪声的作用。去除噪声的数据主要包含数据中最主要的特征。所以编码器可以用在有监督学习的应用中,因为在目前有监督学习需要的是带有标签的数据,而此类数据的数据量较为少数。自动编码器可以提取大量没标签数据的特征,然后将此数据与特征送到有监督学习中使用,这是体现自动编码器的特征提取的功能。另外,编码器还便于可视化的处理,类似于PCA和主成分分析法将数据降维得到压缩的数据图像。

3.1.2变分自动编码器
如何重构原始输入的数据是变分自动编码器研究所在。我们从3.1.1节得知在自动编码器中间层的隐含特征数据可以重构原始数据,在此我们定义隐含特征数据为Z,因此我们可以在隐含特征Z中加入满足某种分布的随机因素就可以重构出想要的数据,如下图3.2变分自动编码器模型所示,这种模型简称VAE。
在这里插入图片描述

图3.2 变分自动编码器模型图
这种模型一般作用于数据的自动生成。在自动编码器模型的训练结束后,我们可分别在经验分布和解码器中可得出潜在变量与新的样本数据。变分自动编码器的X由潜在并不可观测的隐含变量Z生成,若生成的数据X是图像,那么Z则是用于生成X图像的潜在属性。所以数据生成过程由Z的构成和Z变换成X的过程两大步骤组成。将给定的数据X传给编码器网络,就可以得到给定X情况下Z的分布,然后根据Z的分布进行采样得出演变量样本Z,然后将Z传递给解码器网络,通过解码器网络可以获得在给定Z的条件下X分布的两个参数,这样我们就可以从中采样得出最终的数据X。训练完毕变分自动编码器后我们只需要解码器进行生成数据。在生成数据中先对Z在标准正态分布进行采样来生成新的数据。这种变分自动编码器一般用于图像生成,可以使用训练数据通过变分自动编码器得出新的的数据而且比训练数据效果更为好看的图片。

3.1.3生成对抗网络
生成对抗网络现今一般用在辨别图像真假的应用中,它就像一个鉴定师鉴定图画的真迹与假迹。在这种对抗的形势下,仿制师和鉴定师的技术也就不断地相互促进,不断提高技术水平。那么仿制师和鉴定师是如何相辅相成的呢?
仿制师在生成对抗网络中对应的是生成器。显然,生成器的作用是创建伪造图像,其目标是让判别器无法鉴定真假。其生成器的模型一般是从均匀分布和高斯分布的随机噪声中生成图像。
鉴定师在生成对抗网络中对应的是判别器。显然,判别器的作用是确定给定的图像是否为真实,判别器用来辨别图片是生成于生成器还是从数据集中选取的真实图片。
一开始生成器模型与判别器模型都没有经过训练,然后两个模型在训练中竞争为了脱颖而出。生成模型将产出图像,其图片越为接近真实图片证明训练得越好,以成功欺骗判别模型为目标,而判别模型就对生成模型生成的图片进行判断是否为真。在这种对抗的环境下训练,两者模型水平达到越来越高,最终趋于一个稳定。这种就是生成图片的对抗网络过程,同时这种对抗网络也可以用在生成文本的应用中。在生成对抗网络的网络模型没有规定的限制,可以用多层感知机、卷积神经网络、自动编码器等网络结构。
3.2受限波尔兹曼机
受限波尔兹曼机简称RMB,在名字上来看波尔兹曼机就是一个马尔科夫随机场,也就是一个带条件的无向图模型。简单理解就是把隐藏状态的模型与马尔科夫随机场结合起来。如图3.3所示,把一个无向图形分为两类节点,阴影部分为可观测变量,另外一类叫隐藏变量,这样的结构模型就是受限波尔兹曼机模型。
在这里插入图片描述

图3.3 受限波尔兹曼机模型
与波尔兹曼机和受限波尔兹曼机不同的地方在于后者在同层之间是没有任何连接的,只有在显层和隐层之间关系才是全连接的关系,因为在RMB中去除同层之间的连接可以简便训练过程,这样更方便于实际应用模型训练。在受限波尔兹曼机的训练过程里,通常使用的是对比散度的方法。例如当我们假设显层与隐层的神经元个数分别为d和q,v是显层的状态向量,h是隐层的状态向量。那么在所有的隐层状态向量下求显层状态向量的概率,我们可以使用显层在隐层条件下的每一位概率连乘得出显层状态的概率;同样对于在所有的显层状态向量下求隐层状态向量的概率可以使用隐层在显层条件下的每一位概率连乘就可得出隐层状态的概率。
在这里插入图片描述

图3.4 对比散度训练过程图
如上图3.4所示,在使用对比散度训练过程里,我们通常使用批量处理的方法,选取10到100之间的数作为实践经验。在训练前先把数据进行随机打乱处理,先初始化权重和显隐层的节点数,通过显层的输入乘上对应的权重得出激活值就可以调用sigmoid函数来算出隐层的概率,用隐层概率与一组0到1之间的随机值进行比较,如果隐层概率比随机值大则隐层状态就为1,反之则为0。然后在正向关联里使用显层输入的数据和隐层算出来的概率进行转置运算。与得出隐层概率同样的方法得到显层概率后再使用显层概率作为输入来计算隐层的概率。再用显隐层概率进行转置得出反向关联,正反关联之差乘以学习率再除以批量的大小来更新权重。在整个过程里我们可以设定一个变量来记录误差。最后检验训练是否结束,若没有结束则重复一遍整个训练过程。上述就是受限波尔兹曼机对比散度的训练过程,这种受限波尔兹曼机通常使用在深信度网络里,通过搭建多层的受限波尔曼机进行训练。

3.3卷积神经网络
在图像识别领域里特征学习是必不可少的技术操作;在神经网络领域里特征学习是永恒的主题。提取特征可以使用有监督学习、无监督学习、自动编码器等等方法,但在神经网络里,卷积是目前最热门,相对又简便的一门特征提取技术。人工智能飞速发展使得卷积神经网络技术越来越先进。例如现今超级火热的抖音尬舞机、美图秀秀等这些都是用计算机视觉卷积神经网络技术实现的。
卷积神经网络最广泛应用于图像识别,它就相当于一个被遮盖住的箱子,接收二维像素阵列作为图像数据,经过卷积神经网络箱子的处理,输出得到的是图像是什么的信息。所以最重要的是要清楚卷积神经网络的处理过程,了解它是如何从图片上得知它的信息的。

3.3.1卷积神经网络结构概述
全连接神经网络拥有多层结果虽然提高了学习能力,但是它的复杂程度与参数的个数也同时增加会导致梯度爆炸的现象。整个模型的复杂度变大就会极容易出现过拟合问题。所以全连接神经网络就不适合构建多层的网络结构,而卷积神经网络就是全连接神经网络的创新,它在建立多层网络结构的时候可以有效地避免梯度下降的问题出现,降低了全连接神经网络的复杂程度。
卷积神经网络可以构建多层次的网络结构,最常见的网络结构有LeNet5,它一般可以搭建5到7层的网络结构;AlexNet可搭建10层左右的网络结构;而ResNet是网络结构层次之最,可搭建的网络结构高达100多层。这些所有的网络结构都是由卷积神经网络结构变化而来的,他们的目的都是为了能够增加搭建网络结构的层数,这样可以使得网络结构模型的学习能力大大的提升,所以卷积神经网络是提高模型的学习能力同时要避免网络的过拟合现象的一种优化技术。
卷积神经网络应用在图像识别里,它保持了全连接的层级结构,数据传入在卷积神经网络里同样是需要一层一层的进行处理,但是在每一层的运算处理形式却有所不同,它可以根据自己所需的情况来制定每一层的功能实现。它的主要层次由数据输入层、卷积计算层、ReLU激励层、池化层、全连接层和输出层构成。如下图3.5所示:
在这里插入图片描述

图3.5 卷积神经网络架构图
图片数据输入层(Input Layer):顾名思义就是样本数据的输入,在此前我们需要对原始数据进行降维,归一化等处理后才把数据传入输入层中。因为经过预处理后的数据可以加快训练时间更利于神经网络的收敛。在图3.5图片输入在一个三维矩阵里面,其中它的长宽深代表着输入图像的长、宽和色彩通道RGB。
卷积计算层(CONV Layer):卷积计算层在名字上看就知道识卷积神经网络最重要的一部分。它通过卷积核在样本数据进行每一小块每一小块的扫描计算,同时卷积层将神经网络中分成的所有小块进行加深处理,提取更为具体的特征,所以其深度也会同时增加。
激励层(ReLU Incentive Layer):这里的激励层使用的是ReLU激活函数。其根据卷积运算层的输出结果进行非线性映射操作。
池化层(Pooling Layer):池化层对数据进行压缩,降低模型的复杂度的。
全连接层(FC Layer):传统的和卷积的神经网络都有全连接层,在卷积神经网络的全连接层反映在不同层级之间的所有神经元相互连接。

3.3.2卷积神经网络之AlexNet
AlexNet技术远远超出CNN;它采用双通道双GPU的结构使得训练的速度大大得以提升了;以小换大,以多换少的方式,用多层小卷积堆加一起,用来替换一个大卷积层,使其深度甚比LeNet的要深,而且AlexNet打破了LeNet5黑白图片识别,以识别三个通道的彩色图片为主,准确率足足提升了10个百分比。在卷积神经网络里,最让人头痛的训练速度也是让AlexNet的GPU双通道训练得以解决的,使用一块GPU进行网络训练,可提升20倍以上的速度;将sigmoid函数换成ReLU激活函数,不仅简便了求导过程,而且在多层神经网络训练时避免了梯度消失的问题出现;Dropout结构的操作使用在最后的全连接层中,减少过度拟合现象。有了AlexNet模型的训练与速度问题就迎刃而解,从而成为业界最为火爆的结构之一。
当输入到AlexNet网络结构中的数据尺寸大小是256×256×3的彩色图片,要经过图像的随机剪切处理后使得图像的尺寸大小为224×224×3,然后图片再经过的旋转、位置的变换,把尺寸扩大为227×227×3。在AlexNet中输入的图像尺寸大小为227×227×3可以使得在后面的计算就不需要添加填充值,这有利于计算简便。
在这里插入图片描述

图3.6 AlexNet训练模型结构图
如上图3.5AlexNet的训练模型结构图所示,图片经过预处理后进入第一层,也称卷积池化层,以彩色图像为卷积层的输入数据,数据大小是预处理后的图像大小W×W:227×227,这时我们需要设定一个过滤器F×F:11×11,过滤器可以卷积运算进入卷积层中的图像,每一次卷积后都会得出一个新像素图像,卷积计算完成一次就会按照设定的步长S:4的频率从上到下,从左到右的移动。此外卷积还需要的值有填充值设为P:0,在AlexNet中采用双GPU训练,所以一共有96个核,但双通道结构,因此其深度依据卷积核的数量为为48×2。而卷积完成后形成图像的像素矩阵大小的可根据公式:N=(W-F+2P)/S+1来计算,因此图像经过第一层的卷积激励层后的尺寸大小为(227-11)/4+1=55,所以过滤器的神经元的个数为55×55×48×2。而参数个数相当于线性函数的w与b的参数,其个数计算为(11×11×3+1)×48×2=34944个参数。第一个卷积结束后进出第一个池化层,它的输入数据是卷积后输出的数据,其尺寸大小为55×55×48×2。池化核的尺寸大小为F×F:3×3、填充值为P:0、步长为S:2。同第一层卷积层计算公式一样可得出在此层的最大池化层的数据输出尺寸大小为27×27×48×2。在最大池化里参数个数为0。
第二层卷积池化层,以第一层输出27×27×48×2大小的数据传进第二层的卷积层中,使用F×F:5×5的过滤器。为了卷积核在数据图像是扫描运算时候能够相对应,所以增加填充值P:2。每次卷积核在数据图像从上到下,从左到右扫描的移动步长为S:1,深度为128×2。得出输出数据的尺寸大小为(27-5+2×2)/1+1=27,即27×27×128×2。第二层的最大池化所输入的数据尺寸大小是第二层卷积层的输出数据的尺寸大小,即27×27×128×2,其池化核的尺寸大小为F×F:3×3、填充值为P:0、步长为S:2,得出输出数据的尺寸大小为(27-3)/2+1=13,即13×13×128×2。
第三层只有卷积层,同上一层以第二层池化层所输出的13×13×128×2大小的数据传进第三层卷积层中,使用F×F:3×3的过滤器,过滤器根据步长为S:1的速度在输入的图像中从上到下,从左往右扫描。同样为了卷积核在数据图像是扫描运算时候能够相对应,所以增加填充值为P:1。深度为192×2,得出输出数据的尺寸大小为(13-3+2×1)/1+1=13,即13×13×192×2。
第四层还是只有卷积层,以第三层卷积层输出的13×13×192×2大小的数据传进第四层的卷积层中,使用F×F:3×3的过滤器,过滤器根据步长为S:1的速度在输入的图像中从上到下,从左往右扫描。同样为了卷积核在数据图像是扫描运算时候能够相对应,所以增加填充值为P:1。深度为192×2,得出输出数据的尺寸大小为(13-3+2×1)/1+1=13,即13×13×192×2。
第五层又一个卷积池化层,以第四层卷积层输出13×13×192×2大小的数据传进第五层的卷积层,使用F×F:3×3的过滤器,过滤器根据步长为S:1的速度在输入的图像中从上到下,从左往右扫描。同样为了卷积核在数据图像是扫描运算时候能够相对应,所以增加填充值为P:1。深度为128×2,得出输出数据的尺寸大小为(13-3+2×1)/1+1=13,即13×13×128×2。第五层的最大池化所输入的数据尺寸大小是第五层卷积层的输出数据13×13×128×2,其池化核的尺寸大小为F×F:3×3、填充值为P:0、步长为S:2,得出输出数据的尺寸大小为(13-3)/1+1=6,即6×6×128×2。
第六层开始就是三个全连接层,由第五层池化层的输出计算可得6×6×128×2=9216,所以第一个全连接层的输入的神经元个数为9216。神经元进入第一个全连接层被滤波器卷积运算,再通过ReLU激活函数的映射以及Dropout结构的运算,得到2048×2=4096个神经元输出值;同样这4096个神经元作为第二个全连接的输入神经元数据,输入层和自身层全连接后再通过ReLU激活函数的映射以及Dropout结构的运算4096个输出数据;接着用次4096个输出数据与第三层的1000个神经元进行全连接,经过训练得出最终的训练结果值。
由图3.6和上述描述总结得出下表3-1AlexNet卷积神经网络结构表:
表3-1 AlexNet卷积神经网络结构表:

卷积层1
227×227×3 卷积核尺寸11×11;卷积核数量48;步长4;填充值0 输出特征图像大小:
(227-11)/4+1;
即55×55×48×2
ReLU激活函数
池化:池化核3×3;池化核数48;步长2;填充值0 输出特征图像大小:
(55-3)/2+1;
即27×27×48×2

卷积层2
27×27×96 卷积核尺寸5×5;卷积核数量128;步长1;填充值0 输出特征图像大小:
(27-5+2×2)/1+1;
即27×27×128×2
ReLU激活函数
池化:池化核3×3;池化核数128;步长2;填充值0 输出特征图像大小:
(27-3)/2+1;
即13×13×128×2

卷积层3
13×13×256 卷积核尺寸3×3;卷积核数量192;步长1;填充值0 输出特征图像大小:
(13-3+2×1)/1+1;
即13×13×192×2
ReLU激活函数

卷积层4
13×13×384 卷积核尺寸3×3;卷积核数量192;步长1;填充值1 输出特征图像大小:
(13-3+2×1)/1+1;
即13×13×192×2
ReLU激活函数

卷积层5
13×13×384 卷积核尺寸3×3;卷积核数量128;步长1;填充值1 输出特征图像大小:
(13-3+2×1)/1+1;
即13×13×128×2
ReLU激活函数
池化:池化核3×3;池化核数128;步长2;填充值0 输出特征图像大小:
(13-3)/1+1;
即6×6×128×2
全连接6
6×6×256 2048个神经元 共4096个神经元
Dropout 输出4096×1的向量
全连接7
4096×1 2048个神经元 共4096个神经元
Dropout 输出4096×1的向量
全连接8
4096×1 1000个神经元 输出1000×1的向量

通过上述总结出在AlexNet神经网络结构的训练过程里,ReLU激活函数解决了原始神经网络使用Sigmoid函数梯度下降的问题;在最后的全连接层里使用Dropout结构有效的忽略一些无关紧要的神经元,使得神经网络不会出现过拟合的现象;在AlexNet中训练过程中创新使用了最大池化,有效的避免像普通的卷积神经网络里使用的平均池化带来的模糊化麻烦,缩小池化核输出值重叠并且可以覆盖,让提取的特征更具有丰富性;在具有大量数据与参数的模型训练中,使用强大的GPU实行并行训练,降低了计算机很多性能的损耗。

第四章 系统设计与分析

4.1垃圾分类图像识别系统构成及原理
4.1.1图像处理基础知识
使机器能够模仿人的大脑对外界图像进行识别分类,图像学习的好坏直接影响机器识别的准确率结果。通过图像进行学习,我们需要大量的图像数据,不管我们的数据图像来自网上下载、网上爬取还是自行拍照,其图像的格式、尺寸大小、光暗程度都是参差不齐,各有不同。如果把形态各异的图片传给机器会增加机器学习得复杂性,导致最终机器训练出来得模型可靠性降低,甚至难以达到目标需求。那么图像预处理有多种方法:直方图均衡、中间滤波、归一化和图像增强等等技术。
直方图均衡技术主要使用直方图对比方法更改图片的灰度值,在图像中逐个点进行更改灰度值,使得所有像素点得灰度级别在同一层级上。这种通过直方图均衡技术后可以得出一个比较平缓得直方图,这多数用于医护人员X射线的操作,让黑暗无法识别的区域使用灰度图展现在适合眼睛亮度的地方。
中间滤波主要技术是去除噪音,中间滤波把图像周围灰度值反差较大的像素点用周围相似的像素点替代,这样可以去除另类孤立的噪声点。中间滤波处理图像更加清晰而且在处理彩色图像中不会破环彩色像素。
归一化对图像预处理中有几何归一化和灰度归一化两种普遍技术,其最终结果是让环境不相同的的图片尽可能地使其具有一致性,让图片有某些固定的不变特性。
图像增强技术不考虑降质缺陷,展现图像最具有代表性,也就是最感兴趣的特征区域,遮掩无关紧要的特征区域。
总的来说,图像处理的目的都是尽可能地除去让机器无法识别的干扰。简化图像数据,使图像地主要特征更为突出,更便于学习训练。

4.1.2垃圾分类图像识别系统构成
本设计的垃圾分类图像识别搭建在TensorFlow的环境下实现的。整个项目大体分为图像的收集、图像的处理、卷积神经网络的搭建、模型训练、模型测试、最后用一个GUI界面对项目进行封装。设计完成了一个可识别垃圾图像类别以及可调用摄像头识别垃圾物体的系统。如下图4.1垃圾分类图像识别的系统构成步骤所示:
在这里插入图片描述

图4.1 垃圾分类图像识别的系统构成步骤

4.1.3图像识别系统功能分类模块设计
分类是图像识别系统的中心环节,系统的最终目标是根据已训练好的模型反馈对应图像的分类类型,然后以一个直观的的图标展现给用户。系统从分类模块中可分为有六个分类模块,分别为Cardboard、Glass、Metal、Paper、Plastic和Trash,而从功能模块中可划分为两大模块,图像识别功能模块与摄像头识别功能模块。其中六大类分类模块是根据机器传入的图片进入功能模块调用训练模型才可得出结果,所以六类分类模块也可看作是功能模块的子模块。如下图4.2系统的模块示意图所示:
在这里插入图片描述

图4.2 垃圾图像识别功能分类模块图
由上图在项目系统中从功能模块中可分为两模块,图像识别模块与摄像头识别模块。从分类模块中可分为cardboard、glass、metal、paper、plastic、trash六种类型。
图像识别:在项目系统中用户可以使用手机拍照的垃圾图片或网上下载的垃圾图片,但凡是.jpeg、.jpg、.png格式的图片都可以传如系统对该图片进行预测得到垃圾的分类结果。
摄像头识别:若用户觉得拍照再传进系统比较麻烦,那么还可以采用直接摄像头的方法。用户可以打开摄像头,把要分类的垃圾放进摄像头拍摄区域,同样也可以得出垃圾的分类结果。注意使用摄像头进行分类预测时,最好不要让多种垃圾同时出现在摄像头中,因为系统目前还只可以在同一时间只识别一种垃圾。
Cardboard:主要以相对比较厚硬的纸皮箱为主的类型垃圾,系统根据传入的图片或影像识别Cardboard类型垃圾,此类型垃圾可进行回收,处理后可再次使用。
Glass:主要是玻璃类型的垃圾,系统根据传入的图片或影像识别Glass类型垃圾,此类型垃圾特点反光、坚硬、并以透明为主。玻璃类型的垃圾经过加工厂加工处理,还可以循环利用。
Metal:主要是金属垃圾类型,系统根据传入的图片或影像识别Metal类型垃圾,此类型垃圾可进行回收,加工处理后可再次使用。
Paper:主要以比较薄的纸张类型垃圾,系统根据传入的图片或影像识别Paper类型垃圾,此类型垃圾可进行回收,处理后可作为原材料作用于很多地方。
Plastic:主要塑料类型垃圾,系统根据传入的图片或影像识别Plastic类型垃圾,此类型垃圾绝不可以燃烧或者随便扔,因为燃烧会放出大量的有害物质危害人类健康。若随便乱扔塑料垃圾是无法分解,对环境会有很大的危害,此类垃圾也可以拿去收费站,专业人员会根据具体情况进行加工处理循环利用。
Trash:是不可回收垃圾,系统根据传入的图片或影像识别Trash类型垃圾,此类型垃圾投入不可回收垃圾桶里,专业人员会根据具体的垃圾又分为是否可用垃圾,有用垃圾进行加工处理再次使用,无用垃圾最后才放到经过处理的填埋场进行填埋。

4.2垃圾分类图像识别系统设计
4.2.1垃圾图像数据来源
本设计的主题是基于深度学习算法的垃圾分类图像识别,所以需要准备的原始数据是各个类型的垃圾图片,根据网上随机下载的垃圾图片,还有小部分垃圾图片数据是收集于自行拍照。把所有收集的数据集合在一起进行分类,主要分为六大类型,其中包括有:cardboard、glass、metal、paper、plastic、trash,并且在本地建立以这六种类型为名的文件夹,如下图4.3垃圾图片数据文件夹分类类型所示。把所有的图片数据上标签,然后归类存放到对应类型的文件夹里,如图4.4cardboard类型的数据图片,图4.5glass类型的数据图片,图4.6metal类型的数据图片,图4.7paper类型的数据图片,图4.8plastic类型的数据图片,图4.9trash类型的数据图片,如下所示:
在这里插入图片描述

图4.3 垃圾图片数据文件夹分类类型
在这里插入图片描述

图4.4 cardboard类型的图片数据

在这里插入图片描述

图4.5 glass类型的图片数据

在这里插入图片描述

图4.6 metal类型的图片数据
在这里插入图片描述

图4.7 paper类型的图片数据
在这里插入图片描述

图4.8 plastic类型的图片数据
在这里插入图片描述

图4.9 trash类型的图片数据
4.2.2图像预处理
在模型训练之前我们需要对数据进行裁剪,使得数据输入到神经网络的时候所有图像的尺寸大小都是一致的。本设计使用了Python语言和TensorFlow的环境,我们可以把数据图像转化为一种二进制的tfrecords文件。这种文件正是使用tensorflow来运行,python来制作代码的。而且tfrecords在tensorflow中,无论是在拷贝、转移、读取还是存储都是有着非常大的优势。
TFRecords文件训练对计算机资源的需求大大的减少了,训练时只需要将已保存好的TFRecords文件的特定格式简单的取出训练即可;如果图像预处理单单使用tensorflow来操作,那么当遇到图像预处理操作复杂时则对训练模型会带来干扰,但是TFRecords他可以不被限制于tensorflow,灵活处理图片数据,逻辑复杂的数据处理也能够完胜;TFRecords在训练占用内存少,训练结束却要比原始数据大,这也就是TFRecords可以快速训练大量数据的原因。
在本项目图片数据预处理,首先使用tf.python_io.TFRecordWriter创建一个TFRecords文件夹,遍历自己已经分类好并且已经打上标签的图片,把所有图片的大小使用resize裁剪图片使得图片尺寸大小为227×227,使得尺寸匹配上后面在卷积神经网络输入数据的尺寸。然后把图片类型转为原生的Bytes,进入真正的将图片转化为二进制,使用tf.train.Example和tf.python_io.TFRecordWriter分别对图片格式进行输入和写入,当所有的数据已经输入转化后,然后example对图像和对应的标签进行封装,把序列化为字符串那么图片转为二进制的TFRecords文件就完美结束了。把图片制定为二进制文件,当我们需要读取的时候我们可以使用队列的方法或者直接使用循环然后用ParseFromString进行解析就可。下图4.10是图片预处理与转为TFRecords文件的核心代码:
在这里插入图片描述

图4.10 垃圾图片数据转为TFRecords核心代码图
4.2.3AlexNet卷积神经网络搭建
得到数据后就到了本设计最为重要的步骤,搭建卷积神经网络了。实验中我选用了AlexNet作为这次的神经网络结构,因为AlexNet在图像识别的领域里有着很大的优势,并且实现起来相对比较简便。在整个AlexNet的神经网络结构里,它可以搭建多层的结构并且参数个数庞大却不会出现过拟合情况而且可以通过GPU双通道的方法来降低机器训练的性能损耗,大大的减少了训练时间的耗费。如下表4-1是本次实验搭建的网络模型结构:
表4-1 AlexNet卷积神经网络结构搭建表
种类 输入 核 步长 填充值 输出
卷积层1 227×227×3 11×11 4 0 55×55×48×2
池化层1 55×55×48×2 3×3 2 0 27×27×48×2
卷积层2 27×27×48×2 5×5 1 0 27×27×128×2
池化层2 27×27×128×2 3×3 2 0 13×13×128×2
卷积层3 13×13×128×2 3×3 1 0 13×13×192×2
卷积层4 13×13×192×2 3×3 1 1 13×13×192×2
卷积层5 13×13×192×2 3×3 2 0 13×13×128×2
池化层3 13×13×128×2 3×3 2 0 6×6×128×2
全连接6 6×6×256 4096×1
全连接7 4096×1 4096×1
全连接8 4096×1 1000×1
如上表AlexNet卷积神经网络结构搭建表看出本次模型的AlexNet共搭建了八层,其中前两层和第五层由卷积层和池化层组合构成,并且还执行数据标准化处理。而第三和四层只有一个卷积层。在第六层往后是三个全连接层,在第一个全连接层中的输入数据是取最后一层的卷积层的输出结果,在第六层的全连接层中经过平滑处理随机删除得到4096个神经元输出结果。全连接层嵌入dropout函数,防止数据过拟合。而处在第八层后面的softmax函数,用来输出最终的分类标签。如下图4.11AlexNet的主要代码所示:
在这里插入图片描述

图4.11 AlexNet卷积搭建主要代码
由上图代码可见类和函数的不同分类问题可使用self.NUM_CLASSES在最后全连接层里解决。其实在搭建卷积层前我们许需要定义一些辅助函数,辅助函数可以用于在搭建卷积时创建网络层。还有全连接函数中我们可以使用Tensorboard来监督整个网络结构的激活值、Dropout层以及最大池化层,用tf.summary()来进行添加并且在tensorboard中显示。在Tensorboard中我们可以查看训练过程的细微变化情况,此网页可记录训练过程的准确率、损失值等数据情况。
搭建完卷积网络,还要写一个函数用来加载准备训练的数据。本设计在网上下载bvlc_alexnet.npy文件,调用此文件能够省去自己训练参数的时间,同时电脑硬件标准需求也降低了。该文件主要是别人已经训练好的imageNet参数数据,我们只要根据自己所需调用接口即可,而且使用此文件的参数往往比你自己训练的参数要准确的多。其bvlc_alexnet.npy下载地址和加载预训练参数的函数主要代码如下图4.12所示:
在这里插入图片描述

图4.12 bvlc_alexnet.npy下载连接与加载预训练参数主要代码

4.2.4模型训练
万事俱备,接下来我们就开始训练模型了。首先我们需要读取已准备好的tfrecords文件,因为tfrecords是二进制文件,所以里面的数据我们需要使用队列的方式进行读取。而tf.train.string_input_producer生成的解析队列数据我们可以使用tf.parse_single_example解析器进行读取,读取出来的数据返回的是一个文件和文件名称,然后把返回的值存放在对象serialized_example中。最后还需要进行协议缓冲,使用tf.parse_single_example把Example解析为张量的形式就可以真正的用于训练操作了。如下4.13是使tfrecords文件解析成队列形式的主要代码图:
在这里插入图片描述

图4.13 tfrecords文件解析成队列的主要代码
数据准备好后就要把图片和标签传进已搭建的AlexNet卷积网络中,然后我们还需定义一些dropout和全连接层的变量列表,然后就可以执行整个AlexNet卷积网络结构图了。在卷积神经网络训练过程里,我们还需要设定损失值和优化器,同事使用tensorboard把模型显示出来,这样训练的损失值的收敛情况和与准确率就一目了然。下图4.14数据训练的主要代码:
在这里插入图片描述

图4.14 数据训练的主要代码图

网络训练的损失函数与准确率的变化情况我们可以在训练结束后tensorboard网页中查看到,如图4.15所示。图4.16是训练后所保存模型。
在这里插入图片描述

图4.15 AlexNet训练模型的损失值与准确率的变化图
在这里插入图片描述

图4.16 训练模型
由上图可得在10000次的迭代训练中,准确率在训练次数达到四千五后开始趋于平稳,达到98%以上。损失函数在训练次数达到七千五后开始趋向平缓,损失值降低到0.05以下。

4.2.4模型测试
训练结束得到高准确的模型我们就可以开始进行模型测试了,模型测试主要代码把抽样测试的图片传进训练好的模型看测试结果是否正确即可,如下图4.17模型测试的主要代码:
在这里插入图片描述

图4.17 模型测试主要代码

在先前的模型训练我们使用了saver.save()的方法来保存训练的模型,模型在训练时候已经存放好参数,我们可以使用tf.train.Saver()来载入模型进行模型测试,就不需要每测试一遍又要进行训练,从而达到了节省时间的效果。

4.3GUI界面设计
项目完成了垃圾图像数据集的准备、图像数据预处理、AlexNet卷积神经网络的搭建、模型训练与模型测试。然后就可以使用PYQT5对整个项目进行封装,设计可视化界面。

4.3.1PYQT5简介
PYQT5是使用Python模块拼接来实现各种功能,这时一款非常强大的GUI支持库里面有六百多个类,方法与函数,它支持python2.x和python3.x两个版本。Pyqt5不仅可以使用在Window系统中,Mac与Unix等主流的操作系统也可以运行。

4.3.2PYQT5界面设计
本设计使用PYQT5对基于深度学习算法的垃圾分类图像识别项目进行界面化设计,其界面设计主要包含有主界面、三个按钮以及六个分类图标与准确率柱状图。主界面用来展示打开的图片与摄像头的摄入;按钮分别为Open Image用来打开本地图片、Open Camera用来打开摄像头、Recognize对打开的图片或摄像头前的物品进行识别;主界面下方是六种垃圾类型的图片,用来反馈识别结果;在图标的右方是识别物体在各种类型的准确率柱状图的展示。其界面展示图如下图4.18所示:
在这里插入图片描述

图4.18 GUI界面展示图
pyqt5-tools中包含有工具QtDesigner、pyuic和pyrcc等。在界面实现首先我们可以使用QtDesigner工具根据自己的需求以拖动的形式画出一个大概的界面,如上图4.18GUI界面展示图,使用pyuic命令把界面.ui文件转换为python文件,此时文件拥有界面设计的主要代码框架,我们在其可以根据自己的需求进行优化改进。
使用pyuic的命令把.ui文件转换为python文件中主要有Ui_MainWindow类和retranslateUI(self,MainWindow)函数,其中Ui_MainWindow它继承空类object,相当于一个空容器,要来装MainWindow的对象,还有一个子对象centralwidget,主要用在后面在主窗口中运行;而各个控件的属性就要使用retranslateUI(self,MainWindow)函数来设置。然后使用button.clicked.connect(clicked_function)来设置触发按钮Open Image和Open Camera和label.setPixmap用来显示分类的图标。

4.4项目结果研究与分析
项目的实现最终是作用于垃圾分类,本系统只可识别垃圾的六种类型,分别为Cardboard、Glass、Metal、Paper、Plastic和Trash。因为数据的有限性与局限性所以没能与社会上的垃圾分类达到统一的分类类型标准。但项目的实现最终的思想概念是能用于提高人们进行垃圾投放分类的准确率,以及可提供一个方便的平台给人们进行认识并且学习垃圾分类的所属类型。当系统用户需要对垃圾进行投放但对垃圾投放分类类型有疑惑时,此系统就起到了很重要的作用,用户可以对将要投放的垃圾进行拍照,把所拍的图片传进系统中,那么就可以得到此垃圾的所属类型,并把他准确的放入正确类型的垃圾桶里。除了传送图片以外,用户还可以直接打开摄像头,把将要投放的垃圾放进摄像头区域,同样可以得出结果。这样投放垃圾者每天就再也不用被垃圾弄得焦头烂额,并且再也不会因为垃圾投放错误导致被罚款了。而对于系统还未完善达到与社会垃圾分类类型的标准,这在于数据难于收集,所以该系统在数据的收集方面往后得有待改善,让系统早一步与社会的垃圾分类标准达成统一。
整个系统设计从数据收集、数据预处理、卷积神经网络的搭建、模型的训练、模型的测试、到界面的设计就完成了一个简单的垃圾分类图像识别的系统。其系统中的垃圾分类识别结果如下列图所示:
Carboard垃圾类型主要是相对比较厚硬的纸皮箱类型垃圾,此类垃圾可以回收加工再循环使用。
在这里插入图片描述

图4.19 Carboard类型识别界面图

Glass垃圾类型主要以玻璃为主的类型垃圾,此类垃圾特点反光、坚硬,并以透明为主。玻璃类型的垃圾经过加工厂加工处理还可以循环利用。
在这里插入图片描述

图4.20 Glass类型识别界面图

Metal垃圾类型主要以金属为主的类型垃圾,此类垃圾可以回收加工再循环使用。
在这里插入图片描述

图4.21 Metal类型识别界面图

Paper垃圾类型主要以相对比较薄的纸张为主的类型垃圾,此类垃圾可以回收经过加工处理可作为原材料使用在各方面。
在这里插入图片描述

图4.22 Paper类型识别界面图
Plastic主要以塑料为主的类型垃圾,此类型垃圾很难分解,并且燃烧会放出大量的有害物质危害人类健康。对环境会有很大的危害,所以此类垃圾也可以拿去收费站,专业人员会根据具体情况进行加工处理循环利用。
在这里插入图片描述

图4.23 Plastic类型识别界面图

Trash是不可回收的类型垃圾,专业人员根据不可回收垃圾又分为是否可用垃圾,有用的进行加工处理再次使用,无用的最后才放到经过处理的填埋场进行填埋。
在这里插入图片描述

图4.24 Trash类型识别界面图
下图是摄像头识别垃圾的效果图
在这里插入图片描述

图4.25 摄像头摄入物体识别界面图

以上系统中识别垃圾图片与摄像头识别垃圾的效果图可看出在数据不足够庞大的情况下,识别的准确率不是特别的稳定,例如塑料瓶和玻璃瓶具有相似的透明与反光性,在机器没有充足的学习量下,机器就会对此识别具有一定的困难,会导致准确率不高,在这方面中,系统还需有待提高。

第五章 项目结论与展望

5.1项目结论
铺天盖地的垃圾让我们不敢想象未来的生活环境,恶臭的垃圾严重危害人类生活饮食,处理垃圾问题是人类现阶段刻不容缓的任务。垃圾分类是目前最为有效的处理垃圾行为。随着现阶段大数据的火爆发展,人工智能完成人类的任务行之有效。有了人工智能垃圾分类处理就事半功倍了。本文就垃圾分类和人工智能思想展开对垃圾分类和人工智能的研究,探讨其中的紧密联系,以及如何在垃圾分类问题上恰当的使用人工智能技术,并且设计了一款垃圾分类图像识别的小应用。
本论文课题以基于深度学习算法的垃圾分类图像识别为题。详细的讲述垃圾在国外与国内的现状问题。展开分析多种深度学习算法在图像识别领域的技术,并以其中的卷积神经网络深度学习算法技术设计了一个垃圾图像识别的分类模型应用。论文在项目设计部分详细的阐述整个项目数据的来源、数据的预处理、卷积神经网络的搭建、模型的训练、模型的测试以及最终项目的封装。最后在一个简单的GUI界面成功的识别垃圾图片与摄像头摄入的垃圾物体。
在课题研究与项目设计中,还有很多不足的地方。深度学习本是大数据的一个相对较难的知识点,所以在课题的研究中我查阅了很多的书籍与学习了很多的视频,然后再根据自己的看法与认知对深度学习算法的中的自动编码、受限波尔兹曼机、卷积神经网络等三种算法进行分析研究,记录其中的知识理论与技术要点,所以讲述的知识在于个人的理解会导致有所偏差。在项目的设计里,图片数据是项目的重要因素,但是在项目中数据难求,经过多种途径收集的图片数据量还是不足以充分,而在卷积神经网络训练中,机器仿照人的大脑进行学习,学习量越大,知识的掌握程度就越熟练。相对应在机器中,图片就是他的学习量,图片不够充足,从而导致训练出来的模型识别率相对于比较低。同样在人类学习中,如果一份试卷重复的练习,那么他对这份试卷的熟练程度会达到非常高,但是当遇到不同题目的试卷他就很难做出全队的答案。所以在机器学习图片数据不够充分的时候,当机器识别本身库存已有的图片准确率就相对较高,而识别外界的图片或者摄像头新摄入的物体识别程度就会大大降低。在摄像头模块部分,因为项目没有识别多个物体的功能,所以在项目进行垃圾识别中,如果摄像头摄影区域有多个物体这样会影响系统的识别效果。这就是本项目的最没有完善的部分,还需要往后加入大量的垃圾数据集进一步的研究并完善系统。
本课题虽然有不足之处,但是这次项目从项目选题、开题报告的撰写、项目设计的过程、论文内容编写都是自己独立完成的,这不仅使我加深了对深度学习算法的理解,而且还提高了我的动手能力。虽然这是毕业前学校的最后一个作品,但是学习的机会并不仅剩此次,学无止境,不管以后去到哪,都要抱着一颗好学之心。

5.2未来展望
系统通过深度学习算法设计的一款小型的图片识别应用,其启蒙是人们对政府下达的垃圾分类政策感到有压力。大家都希望社会环境变得更好,但是了解垃圾分类知识的却寥寥无几。在这种形式下,这款垃圾分类的图像识别就相当有用。人们可以通过垃圾图片或者垃圾实物在系统中进行识别得出分类结果,这不仅可以认识垃圾的正确分类类型,而且对于投放垃圾的准确率更高,从而减轻社会的环保工作,达到减少环境污染的目的。
深度学习算法不仅仅可实现图像识别,当今的语音识别,自动驾驶等人工智能技术都是深度学习的一部分知识。希望深度学习技术不断地被发掘完善,对垃圾分类更加的精确,减少人工分类。更希望深度学习在社会各个领域上都有伟大的贡献,从而促进国家社会与经济的发展,让社会人们的生活过的越来越美好。

参考文献

[1]王改华,李涛,吕朦,采用无监督学习算法与卷积的图像分类模型[J],华侨大学学报(自然科学版),2018(01)
[2]陈检,肖思隽,孙秋梅,基于迁移学习算法的糖网病自动筛选系统研究[J],信息技术与信息化,2018(07)
[3]丁昱,李灵巧,杨辉华,针对复杂背景的城管案件图像分类方法[J],计算机仿真,2019(05)
[4]温超,屈健,李展,融合深度特征的多示例学习陶俑图像分类[J],西北大学学报(自然科学版),2019(06)
[5]王晓权,郑绍华,潘林,基于迁移学习核SVM的糖网图像分类[J],信息通信,2018(04)
[6]林泽文,深度学习及其在图像分类识别中的运用探讨[J],信息与电脑(理论版),2018(12)
[7]陶筱娇,王鑫,基于深度学习算法的图像分类方法[J],微型电脑应用,2019(03)
[8]李会民,马桂英,王延仓,基于深度学习网络的水质图像分类[J],北华航天工业学院学报,2018(04)
[9]佟国香,田飞翔,基于CNNS的两次训练融合的分类方法[J],电子科技大学学报,2019(05)
[10]彭娟,特征选择和聚类分析的图像分类模型[J],现代电子技术,2017(19)
[11]周玉松,基于深度学习算法的图像识别技术应用研究[D],北京邮电大学,2017
[12]许可,卷积神经网络在图像识别上的应用的研究[D],浙江大学,2016
[13]陈真,夏靖波,柏骏,徐敏,基于进化深度学习的特征提取算法[J],计算机科学,2015(11)
[14]胡正平,陈俊岭,网蒙,赵淑欢,卷积神经网络分类模型在模式识别中的进展[J],燕山大学学报,2015(04)
[15]黄凯奇,任伟强,谭铁牛,图像物体分类与检测算法综述[J],计算机学报,2014(06)
[16]李卫,深度学习在图像识别中的研究及应用[D],武汉理工大学,2014

致谢

大学四年犹如昙花一现,即短暂又艳丽。但在短暂的时间了,我学到了很多专业的理论知识与技术操作,在这还要感谢我大学中的遇到的每一位老师与同学,是你们对我谆谆教导才让我在社会中如此快的成长。是你们在我有困难有需要的时候给予我鼓励与帮助,又让我在困难中学会独立解决。大学四年将成为我刻苦铭心的旅程,我会把它装在记忆底层,久久拿出来翻阅。
在此我还要特意感谢我的指导老师吴瑞然老师,他从我项目的选题、开题报告的撰写、项目设计的过程、论文内容的编写等过程都非常有耐心并且非常有责任心的指导我。在2020年突如其来的新冠病毒让我们无法面对面的受老师的指导,这使我们与老师的沟通又增加了一个难度,并且老师指导的学生不止我一个,除了指导毕业生还要完成学校的教学工作,全程以网络的形式教导与沟通,而老师每次对我们的问题都能够及时的给与回复。从来没有因为病毒无法聚集讨论而降低了指导的质量,反而不仅是在毕业设计还是毕业实习都给了我们更加多的关心与问候。感谢你对我的支持,鼓励与帮助,让我的毕业论文如期如质的完成。
同时还要感谢大学中每一位科任老师,是你们把专业知识与做人道理传授给我们,让我在现在的实习工作中少了一份艰难;感谢我的同班同学与舍友们,是你们在大学里给了我无限的快乐、鼓励与支持;最后感谢在坐的同学与老师,谢谢你们能在百忙之中抽时间听我的答辩!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/690885
推荐阅读
相关标签
  

闽ICP备14008679号