基于图像识别的垃圾分类

基于机器学习的垃圾分类

摘要:2019年垃圾分类由上海开始实施,继而向全国推行,主要将垃圾种类进行划分,其分类包括可回收、厨余、有害和其他。本文以垃圾分类为核心展开系列探究,使用机器学习对垃圾进行分类,主要对白色污染物和有害垃圾进行识别。利用了机器学习的卷积神经网络等功能,借助于深度学习和图像识别将垃圾作出系列研究处理,最终通过Jupyter显示出这个图片的垃圾是哪个类型的垃圾。
本文使用Xception模型做出卷积神经网络对有害垃圾和白色污染物的识别,Xception仅支持 TensorFlow 作为后端。故而使用Jupyter进行展示。Xception主要为卷积神经网络当中所具有的特征图所存在的跨通道相关新能够与空间相关性消除联系。是一个非常好用的卷积神经网络,它对提高识别效果作用非常显著。使用一系列辅助函数,例如:加入目录和文件名的辅助函数,用于画图的辅助函数等。通过scikit-learn去计算权重尽可能平衡数据集。低层的卷积神经网络可以识别图像中的不同形状。它是最后几个全连接的层将这些特征组合成整个图像的分类。因此,将模型的最后一个卷积层的输出重新接到一个新的全连接神经网络,用它来对数据集进行分类。Keras在每个“epoch”结束时记录性能指标,以便稍后进行绘图。在训练期间,训练集的损失值通常会降低,但测试集的损失值有点不稳定。相同的是,在训练集上,分类精度通常有所提高,而在测试集中有些不稳定。在训练之后,使用Keras API中的单个函数来评估新模型在测试集中的性能。
关键词:垃圾分类,卷积神经网络,图像识别,图像处理, Xception模型,迁移学习

Garbage classification based on machine learning

Abstract: In 2019, the garbage classification started from Shanghai and then implemented nationwide, mainly to classify the types of garbage. The classification includes recyclable, food waste, hazardous and others. This article takes garbage classification as the core to carry out a series of investigations, using machine learning to classify garbage, mainly to identify white pollutants and harmful garbage. Using convolutional neural networks and other functions of machine learning, with the help of deep learning and image recognition, the garbage is made into a series of research and processing, and finally Jupyter shows which type of garbage this picture is.
In this paper, the Xception model is used to identify harmful garbage and white pollutants by convolutional neural networks. Xception only supports TensorFlow as a backend. Therefore, Jupyter is used for display. Xception is mainly to eliminate the correlation between the cross-channel correlation existing in the feature maps in the convolutional neural network and the spatial correlation. It is a very easy to use convolutional neural network, which has a very significant effect on improving the recognition effect. Use a series of auxiliary functions, such as auxiliary functions for adding directory and file names, auxiliary functions for drawing, etc. Use scikit-learn to calculate weights to balance the data set as much as possible. The low-level convolutional neural network can recognize different shapes in the image. It is the classification of the last few fully connected layers that combine these features into the entire image. Therefore, the output of the last convolutional layer of the model is reconnected to a new fully connected neural network and used to classify the data set. Keras records performance indicators at the end of each “epoch” for later plotting. During training, the loss value of the training set is usually reduced, but the loss value of the test set is a bit unstable. The same is that, on the training set, the classification accuracy is usually improved, while the test set is somewhat unstable. After training, a single function in the Keras API is used to evaluate the performance of the new model in the test set.
Keywords: Garbage classification, convolution neural network, image recognition, image processing, Xception model, transfer learning

目 录

第1章 绪 论 1
1.1研究背景和意义 1
1.1.1垃圾分类的背景分析 1
1.1.2 本课题的研究意义 3
1.2 文献综述 4
1.2.1 国内研究 4
1.2.2 国外研究 5
1.3垃圾分类的技术 6
第2章 相关技术研究综述 7
2.1机器学习综述 7
2.2机器学习分类 7
2.3机器学习主要算法 8
2.3.1神经网络 8
2.3.2 机器学习的其他算法 9
2.4 机器学习面临的挑战与机遇 9
2.5 总结 10
第3章 垃圾图像的智能分类算法 11
3.1 分类垃圾图像的预处理[15] 11
3.1.1 灰度处理 11
3.1.2 均值滤波去噪 12
3.2 垃圾图像的特征提取 12
3.2.1 垃圾图像的HSV颜色特征提取 12
3.3 卷积神经网络 13
3.3.1 卷积神经网络发展历程 13
3.3.2 卷积神经网络特点 13
3.3.3 卷积神经网络的结构 14
3.3.4 AlexNet卷积神经网络 16
3.3.5 基于Xception卷积神经网络的迁移学习 17
3.4 Keras框架[11] 18
3.5 本章小结 20
四 垃圾分类实验 20
4.1 基于迁移学习和Xception网络分类仿真 20
4.1.1 实验环境 20
4.1.2 模型构建 21
4.1.3 样本数据集 22
4.1.4 训练步骤 22
4.1.5 训练结果 23
4.2 本章小结 24
五 总结与展望 24
5.1 总结 24
5.2 展望 25
参考文献 25
致谢 27

第1章 绪 论

1.1研究背景和意义
1.1.1垃圾分类的背景分析
日常生活当中有个东西无处不在–垃圾,我们可以将这些垃圾分为可回收垃圾、有害垃圾、厨余垃圾、其它垃圾等,这样有利于对垃圾进行有效的处理,也可以针对于不同的垃圾采用不同的处理方式。
我国对垃圾进行分类的标准主要将垃圾划分成四类,也就是可回收、厨余、有害以及干垃圾。上述四种垃圾当中,可回收以及有害垃圾具有较为明显的特征便于区分,厨余主要指的是食物、果皮等腐烂速度较快的垃圾,而干垃圾就是不包括上述垃圾在内的所有垃圾。
据统计数据显示,我国2010年产生的生活垃圾共计可达2.21亿吨,发展至2015年已经达到了2.58亿吨。涨幅较大的城市在情节以及垃圾分类方面作出了适当整改。据2018年数据显示,2017年垃圾清运量产量已经高达2.15亿吨。[1] 通过数据显示,说明我国的城市垃圾呈现出的趋势为逐年增长,并随着垃圾分类的全国推广,未来清运量会增长的更快。
在这里插入图片描述

图1-1生活垃圾清运量

根据垃圾分类相关文件的颁布,按照指示国内首先进行落实垃圾分类的城市有46个,在2020年末,规定的生活垃圾回收率必须提高至35%。其中主要包括的城市有北上广深等等。46个城市当中成功落实垃圾分类的达到31%,而北上广深等城市已经高出70%。
以往的垃圾处理当中,仅仅将可回收垃圾进行人工分类,然后作为回收资源进行处理,其他垃圾都没有得到有效减少。厨房当中产生的废物以及干废物一般是混合收集和转移。所以一边能够进行更为细致的划分,垃圾在收集以及销售层面上主要以可回收废物为对象,并且能够独立形成厨房垃圾以及危险废物的源头,减少焚烧或填埋的压力,减少环境污染。以住房以及城乡建设有关部门进行的数据调查,2017年我国对城市垃圾进行的无害化处理共计20138.2万吨。详情如图1-2所示。
在这里插入图片描述

图1-2 2017年中国城市生活垃圾无害化处理结构图
有害垃圾主要包括能够对人体健康进行破坏的有害金属以及有毒物质等等,都是日常生活当中的潜在危害。例如废旧灯泡、电池等,是“废油漆罐,废旧家用电器,过期的化学药品,过期的化妆品等”。 它由卫生部的专门机构安全处理。
具体范围如图:
在这里插入图片描述

图1-3 有害垃圾
塑料垃圾对环境造成的污染称为白色污染。对于目前逐渐恶化的白色污染,必须要寻找塑料的代替品,既能够代替塑料的各方面性能,又能够进行有效降解。对上述类型的新型塑料进行研究发现,化学结构较以往发生了较大变化,能够使得性能上呈现下滑趋势,基本对自然环境没有危害。比如淀粉填充塑料,能够容易地被微生物分析的酶进行降解,因此其薄膜力学方面的能力降低。但是对土壤来说有着良性影响。[2]
在这里插入图片描述

图1-4 白色污染物

1.1.2 本课题的研究意义
生活垃圾分类对垃圾焚烧项目盈利能力的影响是复杂的:积极方面:(1)垃圾分类后,对厨余低热值垃圾进行了分离,降低了垃圾含水率,提高了垃圾的平均热值,增加了吨垃圾的在线功耗;(2)减少厨房垃圾与塑料的比例,降低氯含量,减少二恶英排放;(3)提高废渣发热量后,减少了所需的辅助燃料量,降低了运行成本。(4)分类后,降低了废弃物的含水率,大大降低了渗滤液处理的运行成本。随着生活垃圾分类率的提升,垃圾含水率逐渐下降,低位热值逐渐上升,当垃圾分类率分别达到28.6%和39%时,热值提升比例分别约44%和68%。[3]
因为生活垃圾的种类过于繁杂,目前没有制定相应的分类标准,因此很多人在实际操作的过程中无法进行准确判断。基于卷积神经技术,建立准确的分类模型,利用技术手段改善居住环境。
1.2 文献综述
1.2.1 国内研究
“分步、分级、目标”将城市各方面生活垃圾分类制定系列罚款制度。第一,需要对垃圾分类系统进行优化提升一级补充,给出更为细致的垃圾分类标准以及原则,并且将垃圾分类收集进行统计,给出系列评价标准;第二,需要将种类不同的垃圾运输交通车辆对垃圾进行首次划分,防止后续操作产生混乱。另外还需要将垃圾收费体系进行革新,以垃圾的具体处理量以及分类处理具体实施过程加以收费流程;在城市当中的生活垃圾处理的最终点进行实时税收,同时与前期以及中间的关节进行适当专项资金的扶持。并且奖励以及惩罚系统需要进一步完善,打造一个公开的信息系统,实时掌握垃圾在处理方面的收费以及使用等状况;进一步鼓励群众对垃圾各方面的处理以及管理进行监督,通过采取具体的奖励手段来提高群众参与的积极性。
从垃圾分类的整体当中来看,前端处理应该进行适当简化,对干垃圾以及湿垃圾进行大致划分,转移至垃圾处理站再进行进一步的筛选,以降低居民对垃圾分类繁杂步骤的不满。而后端分拣主要针对干垃圾设置相应的分拣线,使得垃圾在分拣线上进行相应的筛选以及后续分拣。
首先需要建立相应的执法机构以及体系对垃圾分类制度进一步作出保障,同时进行相应费用的支付。例如,在每个垃圾处理站设置一名监督员,监督倾倒垃圾的居民按照规定对垃圾进行分类。如垃圾分类不按规定进行,监理应采取一定的处罚措施。强有力的执法有利于提升市民的垃圾分类意识,提高我国垃圾分类进度。

北极星固废网研究表明,目前垃圾分类大致能够发现以下几点问题:
(1)相关规定滞后,操作性不强
从当前社会来说,对垃圾进行分类进行一定奖励。垃圾分类没有明确的规定,也没有相应的法律法规。
(2)居民认识不到垃圾分类的重要性
大部分市民没有高度的分类意识,对垃圾分类暂时没有进行全面的掌握。居民对社区的宣传设施视而不见,许多人有一种高高挂起的心态,认为什么都不重要。
(3)生活垃圾投入费用没有相应的管理机构
生活垃圾在收费方面没有相应的制度进行规定,且收费没有标准。
(4)资金投入无法覆盖垃圾生命周期
城市公共财政未能对垃圾分类给予高度支持,垃圾分类只停留在“清理”的层面,没有达到真正的无害化处理,更不用说分类了。
(5)资源水平低下
对于可再生资源进行的管理方面水平较低,且盈利较为落后,产业链需要进一步完善,市场有待提高。进行分类之后的垃圾,能够进行回收利用的资源却没有地方可去。
(6)垃圾治理存在的大环境基础薄弱
市民与环卫局之间缺乏信任与合作。两者陷入囚徒困境,相互抱怨。
1.2.2 国外研究
德国目前的部分法律法规对垃圾分类进行较为严格的规定,也就是一个人犯错整个小区都需要被惩罚。一旦垃圾没有进行分类,所有居民都将被警告。
美国出台了相关法律法规,在很多城市将乱扔垃圾的行为进行罚款处理以及拘留等。
比利时在这方面规定居民如果不将垃圾进行分类,则会进行拒收处理。
日本对垃圾分类有着世界上的较高水准,目前来说,日本垃圾的分类较为严谨,比如东京,对家庭垃圾的分类作出了细致的划分,将所有大类又进行了更加详细的划分,比如资源垃圾当中又包括水平纸张等等。并且所有种类垃圾放置的区域不同,很多物品的废弃物都需要重新进行付费。
在这里插入图片描述

图1-5 日本垃圾回收种类
奥地利对生活垃圾的划分也有着非常具体的规定,使得可回收垃圾能够具有较高的利用率。从而使得环境负担有效降低。居民楼设置有一些收集垃圾的点,并且能够进行统一管理。奥地利对儿童都会进行垃圾分类的相关教育。将垃圾分类理念融入市民生活,并在潜移默化间化为市民的习惯,才能真正达到垃圾回收利用的效率最大化。
澳大利亚对于垃圾的分类较为简便,以不同颜色的桶盖进行区分,红色为填埋垃圾,黄色为干垃圾,绿色是有机物垃圾等等。全澳大利亚都以该统一标准进行分类,不会造成不同州不同治的问题。同时在学校也设置了相关课程。[4]
1.3垃圾分类的技术
对于目前存在的技术具有的问题进行提升优化,此次研究对机器学习[5]当中的卷积神经网络对白色污染物以及有害垃圾进行分类并打印出该垃圾所属种类,其目的在于对投放的垃圾图片作出准确的分类识别,来对人们在垃圾分类方面进行指导。同时能够降低人工分拣的压力,使得时间以及人力资源都能够得到节约,,提高资源的回收和利用效率。
将建立Xception[6]模型,尽可能使acc率提高。绘制神经网络模型图,绘制并分析学习曲线。基于Python的OpenCV[7]库进行图像的相关处理。使用Numpy[8]库进行相关数值运算,使用Torch[9]框架,Xception[10]模型,使用 Keras[11]等框架建立深度学习模型等。

第2章 相关技术研究综述

2.1机器学习综述
机器学习的相关概念主要为:智能科学范畴的分支,以人工智能为核心展开研究。总之,经过各种文献当中的相关定义,机器学习就是将无序数据转化成为具有价值的信息。
机器学习属于一个交叉学科,与很多领域都有着一定联系,其中包括概率论、统计学等等。主要以计算机为研究对象来进行人类的学习性的模拟,使得其能够得到新技能的掌握,对自身知识储备进行高度优化。这属于人工智能最为重要的部分,能够使得计算机具备最基本的智能特点,其交叉领域非常多,主要借助于归纳以及整合。并且目前已经能够应用于人工智能当中的多个分支,比如自动推理、自然语言理解等等。[13]
2.2机器学习分类
机器学习以处理的数据当中有无具体标注作为依据进行有监督以及无监督的划分。就像垃圾分类中的有害垃圾,因为有些有害垃圾比较小,使用需要使用到监督学习,对有害垃圾的知识进行了解。
对学习数据进行监督的流程包括预训练以及人工进行目标的标注。以此使得学习对象得到有效划分,同时能够利用相关规则对数据进行结果显示,将被标记的方法进行输出。目前监督学习最主要的算法包括逻辑回归、卷积神经网络[13]等。
无监督学习,主要适用范围是没有进行过分类表及的数据同时不需要作出预训练,经过学习来搜集数据之间存在的潜在规律,并且描绘出样本数据最为准确的结构特性。其主要目的为基于学习把各种具有共性的原理进行区分。其中最为经典的算法主要包括自动编码器、深度置信网络[14]等。
在这里插入图片描述

图2-2 机器学习流程
2.3机器学习主要算法
2.3.1神经网络
二十世纪八十年代神经网络算法逐渐开始成为一大热点。目前深度学习的出现唤醒了神经网络算法的发展。
神经网络主要以大脑的工作为基础,机器学习的相关人员基于神经网络发展了一系列的机器学习的实验,并且发现在视觉和语言识别方面效果显著。
神经网络主要分为三个层面。输入层进行信号的接收,对数据进行分解。原型代表独立的处理单元,也就是神经元。进一步组成一二层,逐渐形成神经网络。[8]
在这里插入图片描述

图2-3 神经网络图[9]
2.3.2 机器学习的其他算法
机器学习的算法是多种多样的,但是因为不是我们的主要研究对象,所以就仅仅在这里简单提一下:
回归算法:(1)回归算法可以使我们从统计到机器学习的平稳迁移(2)回归算法属于机器学习的基石,如果没有学习好回归算法,基于这个算法的很多高阶算法将会学习事倍功半。
聚类算法:给不同种类添加不同标签,计算一个种类中每个数据的距离,依据距离远近从而将数据分为多个族群。
降维算法:特点是将数据从一个高维度问题降低一个或多个维度去探讨问题。就像我们数学中的点线面这种的,从面到线再到点这样子的一个类型。可以更深层度的保留数据的本源,所以是个很有用的一个算法。
推荐算法:这个算法在业界十分火,例如我们经常看的东西,然后下一次你就会收到相关的资料,这种就是最恶心的也是电商们最喜欢的,让你有种被监视了的感觉的推荐算法。当然推荐算法的好处就是关联性强,你不必因为上次逛的哪种类型忘记了而烦恼,因为推荐算法会把你之前最感兴趣的种类推荐给你,然后再给你推荐相关的商品,你可能一不小心就掉入了他们的陷阱,从而剁手。
当然还有各种其他的算法。可以看出,机器学习界还有许许多多别的算法,例如Logistic回归,K-紧邻算法等算法。但是除了我主要使用的神经网络之外,略带详细介绍的这六个算法是使用最多,影响最广也是种类最全的典范。机器学习特点:百家争鸣,百花齐放。
2.4 机器学习面临的挑战与机遇
目前,机器学习领域已经有了逐渐显著的成果,,极大地推动了人工智能的发展。然而,还应该注意到,还需要进一步的研究和理论支持。深度学习具有的局限性:理论不足以及机制不明确;不允许无人监督的学习。
另外,神经网络需要以人类大脑为基础。尽管深度学习与人脑相接近,然而各个方面上都与人脑差距很大。并且在生物层面,人们对大脑的发掘与认知上还不够深入,现如今要模拟人脑的的神经系统,目前还难以实现。因此,未来有很长一段时间需要进步,不止是在神经科学的研究上,对大脑的认知以及挖掘上也需要进一步的加深。
总而言之,在机器学习中有着广阔的研究和应用前景,挑战也是不可忽视的,取各自精华,才能把机器学习推向更高的境界。
总而言之,在机器学习中有着广阔的研究和应用前景,挑战也是不可忽视的,取各自精华,才能把机器学习推向更高的境界。
特别在5G推行之下,智能家居的普及将成为未来一个趋势,这个时候如果能抓得住机遇将能使机器学习往前推进一大步,而且人们对人工智能的认知也需要进一步的普及,而不应该一昧的认为它好或者不好。
2.5 总结
本章重点介绍了机器学习的神经网络算法,还有就是机器学习的未来的一些挑战以及机遇,不管怎么样,也许十年后,二十年后,我们都用上了智能家具,智能机器人,就会发现原来机器学习一直在我们身边,虽然我们可能从未发现它的身影或者说不懂他们的运行机制。但我们要相信的一点就是,科技的进步是为了让人类越变越好的,哪怕过程是坎坷的,艰辛的,因为这是从零到一的过程,难免会有走一些弯路,就像计算机的诞生一样,开始是只能计算简单是运算,而且占比十分的大。到现在计算机的运算速度以及类型等的变化是惊人的。因此,对于机器学习,我们要走的路一定很长,而且也会很曲折,但是未来一定是光明的。

第3章 垃圾图像的智能分类算法

垃圾分类的acc值的高低是检验垃圾分类的关键因素,一个分类能力低下的垃圾分类工具是毫无用处的,所以如何提高垃圾分类的准确度,是本文的重点。本文利用卷积神经网络中的图片识别,Xception模型,Keras框架。 

3.1 分类垃圾图像的预处理[15]
3.1.1 灰度处理
生活中,我们能看到的图像一般为彩色或者RGB图像,RGB图像拥有R、G、B三个颜色通道,这个跟我们美术的三原色(红黄蓝)不同,计算机中,我们看到的所有颜色都是有这三个通道(红、绿、蓝)按照一定比例组合而成的。分析一张彩色图片,如果放大N倍,我们可以看到它会由一个个小小的色素块组成,每个色素块由R、G、B三种颜色按照一定比例混合形成,我们成这些小方块状的色素块为像素点,就是JS中常用的px,它是一张图像的基本单位。
在这里插入图片描述

图3-1灰度处理前后对比图
一般图像的RGB仅仅是在光学上的一个颜色分配,在图像的反应形态特征方面反而不如灰度图像和HSV图像,因此在作图像的特征提取前,需要对RGB图像进行灰度处理,将三位图像转换成灰度图像,这种灰度图像有深浅不同的黑色像素点组成的二维数组,是三维RGB图像的一个分量,类似于之前提到的降维算法,把三维颜色的图片转换成二维颜色的图片。转变成灰度图之后,原来的三通道变成了一通道,即每一个像素点由0~255的量级表示灰度的程度,与RGB图像不同的是,灰度图像每个像素点只有一个灰度值。
由RGB图像转变为灰度图的计算公式如下:
Gray = R0.299 + G0.587 + B0.114 (3-1)
3.1.2 均值滤波去噪
图像滤波的作用主要是根据各方面细节为标准进行噪声处理,为一个不可或缺的环节。[16]由于部分无法左右的因素,图像会包含一些错误的信息,这些错误信息称为图像噪音,而均值滤波器[17]的作用是削弱图像中的无用噪音。其工作原理是计算某一区域除中心外的像素均值,将这个均值代替中心点。就像在一个6
6的像素区域中,由一个中央像素和35像素组成,经过系列处理去掉整个图像的像素点,这样子的效果之后图像中的噪音会被削弱,但是无法100%的去除。仅仅能去除图像中一些微弱噪音,使图像变得更平滑,这种滤波方式比其他方法简单易懂,而且在处理图像时的速度很快。均值滤波对消除高斯噪音效果较好。
3.2 垃圾图像的特征提取
3.2.1 垃圾图像的HSV颜色特征提取
(1) HSV颜色空间[23]
二十世纪A.R.smith提出HSV空间替代传统RGB空间作为新的颜色空间。 HSV模型类似于六角的圆锥体形状。拥有H、S、V三个分量。HSV如图所示。H是色调,其范围为(0°~ 360°),由旋转V轴角度决定。S是饱和度,范围为(0.0 ~ 1.0);V代表亮度,范围为(0 ~ 1),从上至下颜色逐渐变深。HSV的颜色空间和RGB相比较更接近于人的视觉感知,它的颜色空间比较直观,具有良好的线性伸缩性。目前很多图像处理软件应用HSV颜色空间,效果显著于RGB。
在这里插入图片描述

图3-2 HSV模型[23]
(2)颜色特征
常用的有:颜色直方图[24],颜色集[25]等。
①颜色直方图
描述各颜色中图像具体位置,与颜色位置没必要联系,这种特征在图像检索方面应用较广。
在这里插入图片描述

图3-3 颜色直方图
②颜色集
量化HSV颜色空间以获得多个二进制位置,进一步将图像进行划分,然后作出索引。得出颜色索引集合。
③颜色相关图
相关图与直方图一样,能表现某种颜色在图像中的分布情况,不同的是,它能表达出不同颜色的相关性。

3.3 卷积神经网络
3.3.1 卷积神经网络发展历程
卷积神经网络为当前计算机视觉方面最常用的算法,对于图像分析有着较大提高。已经通过了理论、实验以及应用和深入研究的阶段。
3.3.2 卷积神经网络特点
卷积神经网络属于前馈神经网络,由多个层次组成。[28]一般的三位图像未经处理就可作为网络模型的输入,模型的前部结构能对图像进行特征提取,该点与BP神经网络有本质区别。BP算法在图像处理有缺陷,过于依赖图像的特征提取,而且会陷入局部最优,识别精度较低。卷积神经网络的输出结果是各种类别的最后得分,借助于softmax分类器对其求得类别的相对概率,最后通过输出层输出。
在这里插入图片描述

图3-4 CNN模型
3.3.3 卷积神经网络的结构
卷积神经网络当中很多卷积核构成卷积层,其中具体作用主要是输入进行卷积运算,得出特征值通过对后面的输出结果反向传播优化卷积核从而得到最优解,一个卷积核只能提取一个特征,一般每个卷积层有很多卷积核,通过这些卷积核能够提取多种特征,如纹理、线条、边缘等,这些特征仅仅是图片的一些浅层特征,卷积层后一般会有池化层,作卷积运算后的降维处理。多层网络通过不断地卷积池化,能够得到更深层次的特征。全链接层的作用类似于人工神经网络,对提取的特征做训练,最终得到想要的结果。
(1)输入层
在CNN中,输入层是整个网络的第一层,如上图最左边的船的图像就是输入层,未经处理过的三维图片可以直接作为输入训练网络,但是输入层的图片规格需要保持一致,以方便后几层的卷积和池化运算。在做卷积神经网络训练时可以不用对图像进行预处理。
(2)卷积层
卷积层顾名思义就是对输入数据作卷积运算,它的做那个就是对输入数据提取特征处理。在特征提取时,需要将上层的输入数据与该层的权重作卷积运算。卷积层输出越高,则代表着匹配度越高,就越能体现图片的特征。这就好比一个5x5的图像,和一个3x3的卷积核,步长为1,其中卷积核中有9个参数,所以有9个神经元,输出又重新组成一个3x3的矩阵,如下图。
在这里插入图片描述

图3-5 卷积过程
(3)池化层
池化层能够对卷积层所有的输出作出维度降低,将计算量大大降低。
假设是2×2的池化,子矩阵的每个元素包含着2×2个元素,同理,4×4池化,子矩阵中每一元素含有4×4个元素,这样就做到了降低维度的作用。
想要压缩数据,必须具备池化标准。
如下图,我们使用MAX标准,对不同颜色区域取最大值,且步长为2,即取完一个元素就去另一个颜色区域取最大值。最终将4×4的矩阵压缩到了2×2矩阵。
在这里插入图片描述

图3-6 最大值池化

(4)全连接层
所有连接层都能够使得多个特征值进行增和。图像经输入层输入后,经过多次卷积、激励和池化运算过后,提取图像的深层特征,将这些离散的特征经过全连接层的作用转变为反应图像的全局特征,这些特征可以作为计算最后分类的得分来使用。
(5) 输出层
CNN的输出层是一个分类器。本文研究的目的是要对白色污染物和有害垃圾进行分类,因为有害垃圾的种类较多,因此有害垃圾分类是一个多分类问题。Softmax是常用的分类器,这种分类器可以平均各个概率,概率总和为1。,SotfMax常常用在完成多分类任务的输出层。其结构如下图所示。
在这里插入图片描述

图3-7 Softmax层结构图
Softmax概率计算函数函数如下图所示:
在这里插入图片描述

图3-8 Softmax计算函数
其中,Zi为全连接层的输出值,Si为最后分类的概率。

3.3.4 AlexNet卷积神经网络
(1)AlexNet网络
AlexNet于2012年,Alex Krizhevs设计出。AlexNet网络是一种对1000类图像进行分类的卷积神经网络,结构分八层,每个卷积层后面都会伴随着池化层、Dropout、激活函数等,通过这些层的组合,能够提取图像深层次的特征,可以有效的提高图像分类精度和减少过拟合。后儿层主要是对前面提取的特征进行训练,从而获得一个较高精度的分类器。
在这里插入图片描述

图3-9 迁移学习流程
(2)迁移学习
将所学到的知识进行转移加以解决,目标领域主要是无法进行任务的标准化进程。
在图像分类方面,普通的算法需要大量的图像作为输入样本,而且需要对这些样本做好标签,有的样本数据获得困难,如果要重新训练整个网络对人的精力消耗极大。而迁移学习能够克服这种困难,这是因为卷积神经网络首个卷积层提取的底层特征如纹理、颜色、边缘特征等在很多分类问题中都是通用的,迁移学习主要去除己有的卷积模型因此在样本较少的情况下也有较好的效果。
在这里插入图片描述

图3-10 底层特征
3.3.5 基于Xception卷积神经网络的迁移学习
Xception 是 Google 继 Inception 后提出的对 Inception-v3 的另一种改进。
在Inception 中,有多种方法提取特征,Inception 结构将一个输入做多重提取特征方式,之后做 concat 。Xception结构通过卷积网络提取特征。
Xception在ImageNet在top-1的精度最高,top-5的更是高达0.945。Xception数据集图像格式为299×299,并且预处理函数也有不同。目前该模型后端仅支持Tensorflow。
在这里插入图片描述

图3-11 Inception-v3结构图
Xception:首先进行卷积操作,再进行后续分支操作。结果 concat:
在这里插入图片描述

图3-12 Xception结构图
Xception网络结构基于ResNet,卷积层转换为Separable Convolution。下图为Xception网络。

在这里插入图片描述

图3-13 Xception网络结构
Xception 在 ImageNet 上,准确率高于 Inception-v3 , 所需参数低于Inception-v3, Xception 加入残差连接使其效果更好,收敛速度提高。本文中 Xception 的计算量低于Inception。Xception结构在不增加网络复杂度前提下提高了模型效果。
3.4 Keras框架[11]
Keras为神经网络API,Python进行编写,能够满足以下需求:
原型设计;支持CNN、RNN;可切换GPU和CPU。
设计原则:
在这里插入图片描述

图3-14 用户友好
在这里插入图片描述

图3-15 模块化
在这里插入图片描述

图3-16 易扩展性
在这里插入图片描述

图3-17 与Python协作
Keras:序贯模型类似于网络的线形叠加。
在这里插入图片描述

图3-18 Keras框架架构
对Keras而言,有Sequential序贯模型、Model函数式模型。
其中序贯模型API主要用于深度学习模型,主要以单核输入以及输出。无法进行多核以及特征提取等复杂操作的情况。
keras的model模块在HDF5文件中对Keras训练模型进行储存。详情如下图。
在这里插入图片描述

图3-19 HDF5文件内容
3.5 Tensorflow
Tensorflow在2015年由谷歌首发,由于其性能以及功能的强大,很多神经网络的使用者纷纷抛弃Numpy这个编写程序困难,执行时间长的库,转而投入了Tensorflow大家庭当中。短短数年,就确立了其地位,在GitHub上拥有上万投稿,这体现了Tensorflow的流行性以及性能的强大。
在这里插入图片描述

图3-20 深度学习框架
我们可以从上图看出,Tensorflow在发布至今,已经成为了一尊大佛,随着时间的顺延,Tensorflow库已经成为现如今不可或缺的一个深度学习库。
Tensorflow的介绍:支持CPU、GPU、PC端等,仅需使用API就可无缝部署;能自动求导,并且它还是一个开源库,拥有多种训练模型,可以进行预训练,常用的CNN、RNN架构都可以在Tensorflow上面使用。本文使用的RNN就是基于Tensorflow的基础上进行预训练的。
Tensorflow特点如下图:
在这里插入图片描述

图3-21 Tensorflow的特点
3.6 本章小结
基于人工智能分类算法的垃圾图像检测分类,本章介绍了卷积神经的发展、结构以及重点介绍了智能分类垃圾的技术支持,主要有卷积神经网络发展历史、垃圾图像的预处理、HSV颜色特征提取垃圾图像,Alexnet模型和Xception模型的迁移学习,Keras框架的介绍以及Tensorflow库的介绍。

四 垃圾分类实验

4.1 基于迁移学习和Xception网络分类仿真
卷积神经网络对图像进行识别具有系列优势,在输入样本特征的时候无需进行提取,比传统途径智能,但是也存在不足,训练一个卷积神经网络需要一个庞大的样本数据集。本节主要使用Xception网络图像分类算法做迁移学习。
4.1.1 实验环境
本实验是windows10系统,开发语言Python3.7,Xception模型,Jupyter,Tensorflow,Keras框架,样本数据集为干电池、纽扣电池、蓄电池、白色垃圾袋、药膏、过期药品,共2220 张图片数据,随机选取 264 张作为训练样本,其余作为测试样本。
首先导入机器学习所需库,如下图:
在这里插入图片描述

图4-1 本文所需库
4.1.2 模型构建
本文利用现有Xception模型用来解决有害垃圾、白色污染物的图像分类问题。 首先,先建立一系列辅助函数,有添加目录和文件名的辅助函数;专门用于画图的函数,用于显示正确的预测类别的函数;混淆矩阵函数,用于找出被错误分类图片的辅助函数,避免因为图片分类错误而产生不必要的错误;使用Keras API画出训练历史,用于找出分类的准确率和损失率。
在这里插入图片描述

图4-2 白色污染物
在这里插入图片描述

图4-3 干电池(错误分类)
在这里插入图片描述

图4-4 过期药膏(错误分类)
通过对类的权重进行分析计算,尽量平衡数据集。各类垃圾权重数值如下图:
在这里插入图片描述

图4-5 各类垃圾的权重
通过对图像进行建模,并对训练历史进行记录,通过不断的预训练并导入训练好的HDF5文件,进行迁移学习。尝试将模型的最后一个卷积层输出接到新的全连接神经网络上,通过它来对数据集进行分类。
4.1.3 辅助函数
构建不同功能并相辅相成的辅助函数,首先先定义混淆矩阵,用于对精度有一个确定值,混淆矩阵是最基本的也是最容易操作的方法,通过对图像的分类进而达到对精度的提高。
在这里插入图片描述

图4-6 混淆矩阵
在这里插入图片描述

图4-7 训练历史
4.1.4 样本数据集
共拥有6个数据集,分别为白色污染物、干电池、药膏、过期药品、纽扣电池以及蓄电池。其中白色污染物占比最高,占比约为20%。其中测试集使用数据较少,平均每样样本45张图片,其余照片作训练集使用。
在这里插入图片描述

图4-8 数据集
在这里插入图片描述

图4-9 定义数据集
4.1.5 训练步骤
低层的卷积神经网络可以识别图像中的不同形状。它是最后几个全连接的层将这些特征组合成整个图像的分类。因此,可以尝试将模型的最后一个卷积层的输出重新接到一个新的全连接神经网络,用它来对数据集进行分类。
首先导入模型,接着进行训练,并把训练结果通过Keras模型进行保存。接着Keras在每个“epoch”结束时记录性能指标。为方便绘图,在训练期间训练集的损失值会降低,但是测试集的损失值不稳定。并且,在训练集中分类精度会有所提高,在测试集中则有些不稳定。
在这里插入图片描述

图4-10训练和测试精度
训练过后,通过Keras API中的单个函数测试模型在测试集中的性能。之后打印混淆矩阵。并将训练好的模型进行批量测试。通过OpenCV对图像进行轮廓识别,其目的是为了获取边界矩阵。
在这里插入图片描述

图4-11 打印混淆矩阵

在这里插入图片描述

图4-12 混淆矩阵
4.1.6 训练结果
通过调用数据集、训练模型对垃圾的图像识别以及分析,最终根据图像识别显示结果判断预测结果是否正确。对训练集进行定义以及最终验收效果:
在这里插入图片描述

图4-13 垃圾的预测分类
训练成果如下:
在这里插入图片描述

图4-14 干电池
在这里插入图片描述

图4-15 过期药品
在这里插入图片描述

图4-16 白色污染物
训练成果效果可观,对于一些容易区分,辨识度高的数据可以做到近百分百准确度,但是如果遇到一些角度刁钻些的数据,就会比较容易出现错误,当然未来的科技发展起来,这些问题将不复存在。
4.2 本章小结
本章主要研究基于Xception迁移学习的算法。事实证明了卷积神经网络在垃圾分类方面更具有实用性,故而使用卷积神经网络对白色污染物以及有害垃圾进行垃圾分类。由于使用的数据集比较少,而且只对白色污染物、有害垃圾的一部分进行了数据整合,数据集的缺失以及训练模型的搭建,将很大程度的影响之后训练集的成品展示,如果训练模型没搭建成功,测试集没测试完全,最终训练集中将可能会出现大片预测错误的可能出现。

五 总结与展望

5.1 总结
本文主要研究基于深度学习的白色污染物、有害垃圾的垃圾分类,利用卷积神经网络、Keras框架以及Xception模型制作了一个智能垃圾的预测模型,将所需要测试的图片放进训练集进行预测,对图片进行分析预测,并正确分类进行比对,若显示分类正确,将提示预测正确。
课题主要研究内容包括:对国内外垃圾分类的现状分析,对机器学习进行介绍,对卷积神经网络进行介绍,还有一些所需要用到的算法知识以及拓展知识的介绍。完成了垃圾图像的处理以及通过Xception卷积神经网络这个优秀的模型进行实现垃圾分类的效果。
5.2 展望
本文主要是对城市中垃圾分类的趋势进行的一个对有害垃圾、白色污染物进行的研究,由于时间和经验方面的局限性,本文还有很多需要改进以及完善的地方。生活垃圾在以前都是打包在一起然后丢出去的,而因为过不久就需要把垃圾分类打包到不同的垃圾桶中,为了方便个人所以做出一个对垃圾分类的一个小尝试,希望能在未来有人能用到我做的这个垃圾分类的小程序啊,或者是一个APP那是最好的,说明我的产品就做到了全垃圾分类。不过因为本文现在做的是对有害垃圾和白色污染物的识别,可能对海边那种的会比较实用,因为现在海洋很多白色污染物、以及有害垃圾的排放,对海洋生物造成了巨大的影响,所以如果能把这些垃圾进行分类,可能会对大自然有一定的帮助吧。毕竟地球是我们的母亲,谁都希望地球变好。

参考文献

[1] 2019年中国垃圾分类行业发展现状及产业政策分析
[2] 百度百科—白色污染物
[3] 2019年中国垃圾分类行业发展现状分析及未来发展空间预测
[4] 北极星固废网
[5] 机器学习实战 [美] Peter Harrington
[6] 深度学习入门:基于Python的理论与实现 [日本] 斋藤康毅
[7] 学习OpenCV [美] 布拉德斯基(Bradski,G.),(美)克勒(Kaehler,A.) 著,于仕琪,刘瑞祯 译
[8] 模式分类 [美] Richard O. Duda Peter E. Hart David G. Stork
[9] https://www.cnblogs.com/magicalzh/p/9273402.html
[10] 深度学习实战之垃圾分类https://blog.csdn.net/public669/article/details/100176888
[11] Keras: The Python Deep Learning library
[12] 《人工智能》机器学习
[13] https://blog.csdn.net/a1742326479/article/details/81048473
[14] Very Deep Convolutional Networks for Large-Scale Image Recognition
[15] 基于深度学习的城市垃圾桶智能分类研究_黄国维
[16] 百度百科—图像滤波
[17] 陈家益,曹会英,熊刚强,徐秋燕 基于灰度修建和均衡化的加权均值滤波算法 [J].四川师范大学学报 2017(2).277-284
[18] 侯群群,王飞,严丽,基于灰度共生矩阵的彩色遥感图像纹理特征提取 [J]国土资源遥感,2013(4):26
[19] 刘辉,张云生,张印辉等,基于灰度差分统计的火焰图像纹理特征提取 [j].控制工程2013.20(2):213-218
[20] Watson A,Neill M O, Kitching I, Automated identification of live moths(Macrolepidoptera)using digital automated identification system(DAISY) [J].Systematics & Biodiversity, 2004.1(3):287-300
[21] 胡召玲,李海权,杜培军,SAR图像纹理特征提取与分类研究 [J]中国矿业大学学报,2009,38(3):422-427
[22] 张军,代科学,李国辉. 基于HSV颜色空间和码本模型的运动目标检测. 《系统工程与电子技术》,2008
[23] JACOB IJ, SRINIVASAGAN K G, JAYAPRIYA K. Local oppugnant color texture pattern for image retrieval system [j].Pattern Recognition Letters, 20148
[24] BRUNELLI R, MICH O. Histongrams analysis for image retrieval [J]. Pattern Recognition, 2001
[25] Huang J, Kumar S R, Mitra M, et al.Imageindexing using color cor-relograms[C]//Proceedings of IEEE Conference o Computer Vision and Pattern Recognition.San Juan, Puerto Rico,1997
[26] Stricker A M A, Orengo M. Similarity of Color Images[J]. Proceedings of SPIE - The International Society for Optical Engineering, 1970, 2420:381–392.
[27] 杜敬.基于深度学习的无人机遥感影像水体识别[J].江西科学.2017,01:158-161+170.
[28] Huang W, Kim K, Yang Y, et a1.Automatic shadow removal by illuminance in HSV color space[J].Computer Science and Information Technologies, 2015, 3 (3) :70-75.

致谢

四年的学习生活即将结束,四年的每一个日日夜夜,老师的教诲与指导,师兄师姐和同学的帮助都历历在目,父母的支持与鼓励总使我的步伐不断向前迈进。我是幸运的,能结识这么多的良师益友,能顺利、愉快地完成学业。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java中IO知识点概念

这里写自定义目录标题 内存中的数据以电子信号的形式表示,而磁盘中的数据是以磁场的方向表示。1.流的分类2.File类3.流的API 关键4.理解缓冲的作用-一次性多拿些读写文件的时候为什么要有缓冲流 -意义是什么缓冲流的使用 5.路径问题6.文件的创建7.内存和磁盘存储本质…

QT中的 容器(container)-大全

一、介绍 Qt库提供了一套通用的基于模板的容器类&#xff0c;可以用这些类存储指定类型的项。比如&#xff0c;你需要一个大小可变的QString的数组&#xff0c;则使用QVector<QString>。 这些容器类比STL&#xff08;C标准模板库&#xff09;容器设计得更轻量、更安全并…

i已学赋能智慧教育时代的幼儿教育

伴随“教育数字化战略行动”的深入开展,智慧教育正式成为国家战略。智慧教育延伸至家校社教育的每个阶段。当前,为适应智慧教育发展趋势,我国制定了《中国教育现代化2035》《教育部关于加强“三个课堂”应用的指导意见》《教育信息化2.0行动计划》等文件。幼儿作为智慧教育、智…

Blazor Select 实现点击一次选项触发一次后台事件

Blazor的官方案例中&#xff0c;Select组件只有两个事件 1、OnSelectedItemChanged 每次选项的时候改变触发&#xff0c;如果你点击同一个选项是不会触发后台的方法的 2、OnBeforeSelectedItemChange 我们可以用这个事件实现每次点击同一个选项都可以触发后台事件 需要注意下最…

OCR文字识别工具 Cisdem OCRWizard激活最新 for Mac

为了提高内容识别的准确性&#xff0c;Cisdem OCRWizard提供供您选择两种模式&#xff1a;文件或名片。此外&#xff0c;它会自动分析的内容&#xff0c;标志着不同颜色的页面上几个区域根据给定部分的性质&#xff1a;文本&#xff08;绿色标记&#xff09;&#xff0c;图像&a…

Stable Diffusion绘画系列【3】:二次元动漫画风

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

单片机BootLoader是咋回事?

BootLoader的定义&#xff1a; CPU进入APP之前运行的一小段程序代码就叫做BootLoader。它是由程序员编写的&#xff0c;作用是更新应用程序。这也就说明了只有BootLoader的单片机才可以升级。有的产品有升级的需要就需要BootLoader了。 单片机的启动过程可以这么叙述&#xff…

ArrayList源码全面解析

一、概述 ArrayList 是 java 集合框架中比较常用的数据结构,继承自 AbstractList&#xff0c;实现了 List 接口。底层采用数组来实现。ArrayList 实现了java.io.Serializable接口&#xff0c;这意味着ArrayList支持序列化&#xff0c;能通过序列化去传输。 1.1、底层数据结构…

fiddler设置手机端抓包看这篇文章就足够了,轻松解决!

fiddler设置手机端抓包 安卓手机抓包 第一步&#xff1a;配置电脑和安卓的相关设置 1、手机和fiddler位于同一个局域网内&#xff1b;首先从fiddler处获取到ip地址和端口号&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; &#xff0c;点…

10年资深码农,聊聊程序员的35岁危机

程序员的一天&#xff0c;日常都在做什么&#xff1f; 很多外行以及初入 IT 行业的从业者&#xff0c;往往只看到了高薪、加班、敲代码的标签&#xff0c;那程序员的日常究竟是什么样的&#xff1f; 当代程序员的一天&#xff1a;聊天、开会、写代码 哪种技术最热门与能拿到高…

Shell编程基础 – for循环

Shell编程基础 – for循环 Shell Scripting Essentials - for Loop 大多数编程语言都有循环的概念和语句。如果想重复一个任务数十次&#xff0c;无论是输入数十次&#xff0c;还是输出数十次&#xff0c;对用户来说都不现实。 因此&#xff0c;我们考虑如何用好Bash Shell编…

(Spring学习06)Spring之循环依赖底层源码解析

什么是循环依赖&#xff1f; 很简单&#xff0c;就是A对象依赖了B对象&#xff0c;B对象依赖了A对象。 比如&#xff1a; // A依赖了B class A{public B b; }// B依赖了A class B{public A a; }那么循环依赖是个问题吗&#xff1f; 如果不考虑Spring&#xff0c;循环依赖并不…

浅谈STL中的分配器

分配器是STL中的六大部件之一&#xff0c;是各大容器能正常运作的关键&#xff0c;但是对于用户而言确是透明的&#xff0c;它似乎更像是一个幕后英雄&#xff0c;永远也不会走到舞台上来&#xff0c;观众几乎看不到它的身影&#xff0c;但是它又如此的重要。作为用户&#xff…

计算机缺少vcruntime140_1.dll的5个解决方法,轻松解决dll缺失问题

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“缺少vcruntime140_1.dll”。这个错误提示通常出现在运行某些程序或游戏时&#xff0c;这个错误通常会导致某些应用程序无法正常运行。那么&#xff0c;如何解决缺少vcruntime140_1.dll的问…

Vue框架学习笔记——事件处理:v-on指令+methods

文章目录 前文提要事件处理的解析过程&#xff0c;v-on:事件名样例代码如下&#xff1a;效果展示图片&#xff1a;v-on:事件名"响应函数"v-on简写形式响应函数添加响应函数传参占位符"$event"注意事项 前文提要 本人仅做个人学习记录&#xff0c;如有错误…

深度学习框架配置

目录 1. 配置cuda环境 1.1. 安装cuda和cudnn 1.1.1. 显卡驱动配置 1.1.2. 下载安装cuda 1.1.3. 下载cudnn&#xff0c;将解压后文件复制到cuda目录下 1.2. 验证是否安装成功 2. 配置conda环境 2.1. 安装anaconda 2.2. conda换源 2.3. 创建conda环境 2.4. pip换源 3.…

Linux以nohup方式运行jar包

1、在需要运行的jar包同级目录下建立启动脚本文件&#xff1a; 文件内容&#xff1a; #! /bin/bash #注意&#xff1a;必须有&让其后台执行&#xff0c;否则没有pid生成 jar包路径为绝对路径 nohup java -jar /usr/local/testDemo/jdkDemo-0.0.1-SNAPSHOT.jar >/us…

MX6ULL学习笔记 (一)交叉工具链的安装

前言&#xff1a; ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译&#xff0c;编译就需要编译 器&#xff0c;Ubuntu 自带的 gcc 编译器是针对 X86 架构的&#xff01;而我们现在要编译的是 ARM 架构的代码&#xff0c;因为我们编译的代码是需要烧写到ARM板子…

nacos集群开箱搭建-linux版本搭建

原创/朱季谦 nacos是一款易于构建云原生应用的动态服务发现、配置管理和服务管理平台&#xff0c;简单而言&#xff0c;它可以实现类似zookeeper做注册中心的功能&#xff0c;也就是可以在springcloud领域替代Eureka、consul等角色&#xff0c;同时&#xff0c;还可以充当spri…

吴恩达《机器学习》10-6-10-7:学习曲线、决定下一步做什么

一、学习曲线 1. 学习曲线概述 学习曲线将训练集误差和交叉验证集误差作为训练集实例数量&#xff08;m&#xff09;的函数绘制而成。这意味着从较少的数据开始&#xff0c;逐渐增加训练集的实例数量。该方法的核心思想在于&#xff0c;当训练较少数据时&#xff0c;模型可能…