前言:
而今朋友们对“matlab做图片分类”大体比较关注,同学们都需要学习一些“matlab做图片分类”的相关内容。那么小编也在网上汇集了一些关于“matlab做图片分类””的相关知识,希望姐妹们能喜欢,同学们快快来了解一下吧!基于卷积神经网络的垃圾图像分类识别
摘要:随着社会的飞速发展,生活中产生的消耗废品日益剧增,如何更好地分类与回收这些“垃圾”已经成为了急需解决的问题。为了我国能够更好更快的建立健全城市垃圾分类处理制度以及方便人们对于垃圾分类有更全面的认识,本文利用人工智能技术,设计了基于深度学习的垃圾分类模型,对包含2500多张图片的数据集进行六分类训练。训练结果表明,通过建立的基于VGG16迁移学习的垃圾分类模型对垃圾图片进行分类测试时,准确率可以达到91.24%,实现了较好的分类效果。
关键词:垃圾分类; 卷积神经网络; VGG16模型
1 引言
垃圾分类,一般是指按一定规定或标准将垃圾分类储存、分类投放和分类搬运,从而转变成公共资源的一系列活动的总称。自今年7月1日起,上海市将正式实施《上海市生活垃圾管理条例》。垃圾分类,看似是微不足道的“小事”,实则关系到13亿多人生活环境的改善,理应大力提倡。
分类的目的是提高垃圾的资源价值和经济价值,力争物尽其用。进行垃圾分类收集可以减少垃圾处理量和处理设备,降低处理成本,减少土地资源的消耗,具有社会、经济、生态等几方面的效益[1]。生活垃圾由于种类繁多,具体分类缺乏统一标准,大多人在实际操作时会“选择困难”,基于深度学习技术建立准确的分类模型,利用技术手段改善人居环境。
从技术上旨在通过深度学习,实现垃圾的高精确度分类;在效果上,通过技术的提升提高城市居民的环境保护与节约资源的意识,促进城市居民转变现有的投放垃圾的行为方式;从长远上来看,抛砖引玉,为我国建立健全城市垃圾分类处理制度提供一些思路。
2 软件环境与数据来源
2.1 软件环境
2.2 数据来源
垃圾识别分类数据集包含了2507个生活垃圾图片, 分为了6个类别:玻璃(glass)、硬纸板(cardboard)、金属(metal)、纸(paper)、塑料(plastic)、一般垃圾(trash)。
3 图像分类与深度学习
3.1 图像分类方法
传统分类图像的方法主要通过图像自身特性进行分类,实质是对图像分类基于特征的学习,其中重要的一步是特征提取。在此阶段,运用手动设计的算法对图像的特定部分编码[2],比如形状、色彩、材质,用这些特征来评定图像内容。根据这些特征,进而用于训练网络及评估网络。传统图像分类与深度学习[3]图像分类的对比如下图所示。
图1 传统图像分类与深度学习图像分类对比
3.2 深度学习框架
Keras是一种高度模块化,操作简单,适合初学者使用的深度学习框架。Keras由纯Python编写而成并以Tensorflow、Theano以及CNTK为后端。Keras框架有着简洁一致的API。Keras内部是模块化组成,不同的网络层、代价函数、优化算法、激活函数和正则化算法都是一个个独立的模块。这种设计方式能够极大的减轻研究人员的负担,能够帮助深度学习初学者迅速理解和掌握深度学习的基本思想。同时在keras中添加新模块也非常容易,只需要模仿keras中已有的模块就可以,易扩展性的特点也使得keras能够胜任先进的研究工作。在keras中也没有caffe中的模型配置文件,整个框架非常紧凑。
4 卷积神经网络
图2 VGG16结构图
卷积神经网络(ConvolutionalNeuralNetwork),简称CNN。卷积神经网络[4]有独特的卷积运算。卷积对图像特征的提取具有独特的优势,目前在图像识别上占据了主流的地位。
4.1 卷积层
卷积层的作用是提取图像的特征,如图3.1 所示,卷积运算[5]形象的说是一些小矩阵在图像或输入特征图上滑动,做矩阵的乘法和加法得到的结果就是输出特征图。
图3 三维卷积过程
4.2 池化层
经过卷积层后提取的特征尺寸还是过大,直接用来训练十分不方便同时容易过拟合。所以一个很自然的想法是对不同位置的特征进行聚合统计,选择代表性的值来表示原来的特征。这就引入了池化层[6]。池化的作用有两个:一方面特征图变小,简化网络计算复杂度;另一方面进行特征压缩,提取主要特征。
图4 降采样池化
图5 最大值池化
4.3 激活函数
卷积和池化都是线性计算,它们的组合结果也是线性的。所以,为了让算法具有很好的表征能力,必须引入非线性元素。因此,在神经网络中引入激活函数。本文模型引入的激活函数是relu函数。
relu函数公式如下:
relu函数的梯度不容易陷入饱和,因为当x>0时,梯度为1,所以在网络训练的过程中,网络的参数可以较快更新。而且这种方法会使正向传播的时候速度很快,使得整个计算效率很理想。所以,relu激活函数在加快收敛方面表现很好,在卷积神经网络中得到广泛应用。
4.4 全连接层
全连接层在整个系统中的作用是总结、分类。卷积层、池化层和激活函数等结构是将原始数据映射到特征向量空间,全连接层的作用是将学到的分布式特征整合总结,然后映射到样本标记空间[7]。在卷积神经网络中,全连接层出现在最后几层,可以整合提取有用的信息。
全连接层的公式如下:
其中,
是权重,
是偏置项,神经网络的学习参数。
4.5 Softmax分类器
Softmax函数如下式所示,一般放在卷积神经网络的最后一层。Softmax 能将输入的神经网络的特征向量映射到(0,1)空间,而这些值的相加和为1,输出值可以理解为概率值。所以在输出结果的时候,选择概率值最大的作为分类结果。
5 主要工作
5.1 搜集数据,建立训练集原始数据
为了实现垃圾图片分类,首先要收集足够数量的不同类别垃圾的图片,构建原始的数据集。在训练过程中将数据集分成训练集和测试集两部分,在本文模型当中,设定80%图片为训练集,20%图片为测试集,最终将训练模型保存在knn.h5文件当中。
5.2 数据预处理
建立卷积神经网络之前需要先进行数据预处理的工作,主要包括图片灰度处理、颜色反转以及边缘检测[8],主要目的是提取图片信息。
第一步,选取一张金属图片进行图片灰度处理。灰色图像的所有颜色通道的值相等,所以要将彩色图像变为灰色图像,只需使颜色通道的值相等。
图6 灰度处理
第二步,图像颜色反转,让 255减去当前的颜色值来实现图像的颜色反转。
图7 颜色反转
第三步,canny边缘检测,梯度算子可以用于增强图像,本质上是通过增强边缘轮廓来实现的。
图8 边缘检测
5.3 建立卷积神经网络模型
建立VGG16卷积神经网络模型,首先进行数据处理得到处理后的训练集数据、测试集数据。其次,设置优化器,损失函数,设置验证集并获取验证集的损失函数值和准确率[9]。最后,构建分类模型,包括加载模型、图片处理以及用加载的模型识别图片的类别。
首先运行构建好的模型,下图为模型的初始训练阶段和后期训练阶段,可以看出模型的损失函数值随着不断训练而不断减小,模型的准确率随着不断训练而不断提高。
图9 初始训练阶段
图10 后期训练阶段
5.4 用损失函数值和准确率对模型进行评估
通过VGG16卷积神经网络训练模型,最终模型达到损失函数值为0.35,识别准确率为91.24%,训练结果较好。
5.5 读取图片进行图片垃圾分类测试,检验模型的准确性,并输出测试结果
为了验证垃圾图像分类模型分类的准确性,选取了一张cardboard(硬纸板)图片进行图片分类测试。
图11 垃圾分类模型测试图片
图12 垃圾分类模型测试结果
通过加载已经训练完成的垃圾图像分类模型进行图片的分类测试,最终得出识别结果为“所属类别是cardboard”,通过垃圾图像分类模型进行识别的结果较为准确,符合预期。
6 结论
本文为了实现“垃圾图像”分类的问题,使用VGG16卷积神经网络对“垃圾图像”进行分类。本文首先介绍了图像分类方法和深度学习框架的研究现状,之后详细的介绍了卷积神经网络的主要原理结构和理论算法。最后,构建了基于VGG16的卷积神经网络模型,实现对对“垃圾图像”的分类,得益于VGG16卷积神经网络较深的网络结构,实现了较高准确率的 “垃圾图像”分类识别。此外,深度学习技术的不断发展有益于促进“垃圾图像”分类的快速性和准确性,更快实现垃圾分类智能化。
参考文献
[1]凡志强.垃圾分类政策的扩散机制与效果研究——基于42个试点城市的定性比较分析[J].地方治理研究,2020(04):60-76+79.
[2]高明,陈玉涵,张泽慧,冯雨,樊卫国.基于新型空间注意力机制和迁移学习的垃圾图像分类算法[J/OL].系统工程理论与实践:1-15[2020-11-07].
[3]董子源.基于深度学习的垃圾分类系统设计与实现[D].中国科学院大学(中国科学院沈阳计算技术研究所),2020.
[4]赵宇凯,徐高威,刘敏.基于VGG16迁移学习的轴承故障诊断方法[J].航天器环境工程,2020,37(05):446-451.
[5]翟立波,田学东.基于VGG网络的古籍版面图像差异性比较方法[J].激光杂志,2020,41(09):121-126.
[6]江泽涛,秦嘉奇,张少钦.参数池化卷积神经网络图像分类方法[J].电子学报,2020,48(09):1729-1734.
[7]李伟,黄鹤鸣,武风英,张会云.基于深度多特征融合的自适应CNNs图像分类算法[J/OL].计算机工程:1-6[2020-11-07].
[8]董天骄. 基于卷积神经网络的饮食分类与识别[D].杭州电子科技大学,2018.
[9]杨明欣,张耀光,刘涛.基于卷积神经网络的玉米病害小样本识别研究[J/OL].中国生态农业学报(中英文):1-9[2020-11-07].
附录
主要代码
洞幺邦是一家为客户提供编程方面的任何技术咨询,服务,转让的专业平台,主流编程语言包括C++,JAVA,MATLAB,PYTHON,PHP,C#,常用的硬件平台包括主流嵌入式控制器,fpga,dsp,plc等等,平台积累了上万个案例以及有数千名专业可靠的工程师团队。
主营业务涵盖软件开发,程序定制,硬件产品设计,算法等相关业务。了解更多成功案例可以关注我们,平台欢迎各类技术大神入驻,互利共赢。也欢迎任何朋友在我们平台上发布需求,平台将提供一流的技术咨询,转让,开发,售后服务。