!!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!!
💕💕作者:优创学社
💕💕个人简介:本人在读博士研究生,拥有多年程序开发经验,辅导过上万人毕业设计,支持各类专业;如果需要论文、毕设辅导,程序定制可以联系作者
💕💕各类成品java系统 。javaweb,ssh,ssm,springboot等等项目框架,源码丰富,欢迎咨询交流。学习资料、程序开发、技术解答、代码讲解、源码部署,需要请看文末联系方式。
目录
2.2.1 一级分类数据分析及预处理....................................................................... 4
2.2.2 二级分类数据分析及预处理....................................................................... 6
5.1众网络模型测试集准确率对比............................................................................ 19
基于深度学习的垃圾图像分类识别及多种网络对比研究
1.1项目背景
垃圾是人们生产生活中常见的废弃资源,随着社会生产力水平的提高和生产技术的发展,导致垃圾的数量越来越多。2018年世界银行的一份关于固体垃圾产量的报告指岀:全世界一年产生的固体废物垃圾有20.1亿吨,平均每人在每天会产生0.74公斤的垃圾,其中至少有33%的垃圾没有以可降解的方式处理。到2050年,全球垃圾将增长到34亿吨,是同期人口增长的两倍多。
在全世界范围内,一些无法及时处理垃圾的地区将垃圾直接倾倒,倾倒的垃圾可能会对环境造成污染,例如土壤污染、空气污染、水污染、害虫传染病等。一些不可自然降解的塑料垃圾被填埋后会释放出有毒化学物质,当它们在土壤中最终降解时,会释放出致癌的二乙基羟胺。如果人类误食这种土壤栽培的植物,可能会影响肝功能和生殖系统。如果将一些有毒废物在垃圾场直接燃烧,会释放出破坏臭氧层的气体和化学物质,当释放的有毒气体扩散到我们呼吸的空气中时,会对人类的健康造成威胁。这就需要对垃圾进行正确的分类处理,并不是所有的垃圾都是无价值的,在处理垃圾的时候,将可以再次创造价值的垃圾筛选出来,无价值的垃圾则正确进行处理,这不仅可以提高垃圾的利用率,也可以减少垃圾对环境的污染。
因此,如何对垃圾进行正确分类处理有着重要研究意义与价值。垃圾分类是指按照一定的法规或标准对垃圾进行分类、存储、存放和运输的一系列活动,并将其转变为公共资源。垃圾分类根据垃圾的组成和产量,并结合当地实际的垃圾利用价值和处理方式,可以提高垃圾的综合利用率。
1.2项目简介
本项目针对当下垃圾分类的热点问题,运用深度学习算法进行智能垃圾分类,为垃圾一级分类问题提出解决方案,并尝试进行二级分类模型探索。其中分类处理思维导图如图1-1所示。
其中本项目采用华为数据集,基于迁移学习方法对Densenet121、ResNext101_32x8d、VGG19等当下优质图像分类网络进行结构微调,并对比调整后网络的分类效果,最终选择出表现最优Densenet121模型进行智能垃圾分类检测平台的开发。
![]() |
图1-1垃圾分类思维导图 |
1.3团队分工
成员 | 主要贡献 | |
曾倩 | 负责项目的整体设计,垃圾图像一级分类数据预处理,一级分类Densenet121模型与VGG19模型的训练与分析,项目部分后端开发,文档撰写及部分PPT制作 | |
钟文燕 | 负责垃圾图像一、二级分类部分数据预处理,垃圾图像一级分类的ResNeXt101_32x8d网络的训练与分析,部分PPT制作和文档撰写,项目前端编写及部分后端开发 | |
余丽婷 | 负责垃圾图像二级分类数据预处理,垃圾图像二级分类Densenet121模型的训练与分析,部分PPT制作和文档撰写,项目部分后端开发 | |
2.1数据集背景介绍
项目所使用的数据集来源于华为云举办的垃圾分类挑战赛,完整数据集共包括14802张垃圾图像,其中共包括四个大类(如图2-1所示)、四十个小类,粗粒度一级类别包括其他垃圾、厨余垃圾、可回收物、有害垃圾,细粒度二级类别表示垃圾在一级类别下的具体所属,例如可回收物又包括易拉罐、插头电线、旧衣服。其中数据集部分子集图片如图2-2所示。
| ![]() | |
图2-1 数据集分布 | ||
![]() | ||
图2-2 部分垃圾图像展示 | ||
2.2数据分析及预处理思路
本项目旨在实现垃圾图像数据集的一级分类与二级分类,首先需要进行整体数据分析,然后结合分析结果进行数据预处理。然后,为了后续进行深度学习模型训练,需要进行训练数据集及验证数据集的切分,使数据集目录结构符合ImageFolder需要的格式。
数据分析阶段中,首先需要进行初步数据探测,了解垃圾图像类别大致分布。然后为了适应深度神经网络输入需求,需要结合图像宽高比进行不失真的缩放。最后为了辅助后续网络提取特征,采用调节对比度的方法进行图像增强。
2.3数据分析及预处理步骤
2.2.1 一级分类数据分析及预处理
- 一级分类数据探测
首先读取全体数据集中的所有txt标签文件,并结合40分类说明json文件提取出其中的一级分类label,构建包含全体数据集图像路径及所属标签的img_path_list,对其进行统计得到img_label_dict,得到垃圾图像在四大类别中的分布如下。
![]() |
图2-3 垃圾图像类别分布 |
![]() |
图2-4 部分统计代码 |
- 图像宽高比分布及处理思路
然后统计数据集图像的宽高比分布如图2-5所示,局部放大[1,2]区间,发现绝大部分图像宽高比位与05-1.5之间。由于网络输入图像规格为224*224,考虑设置将图像较短边缩放到256像素,另外一边等比例缩放,然后对图像进行大小为224*224的中心裁剪。
![]() | ![]() |
图2-5 图像宽高比分布 | 图2-6 图像宽高比分布 |
- 训练集及测试集的切分
首先确定将整体数据集按8:2切分为训练集与测试集,各类别分类比例如图2-7所示。
![]() |
图2-7训练集与测试集数据分布 |
为了满足ImageFolder的读取格式,结合label将图片数据集进行划分。将train_img_list中的照片复制到train/label文件夹下,最终建立文件目录结构如图2-8所示。
![]() | ![]() |
图2-8 处理后数据集目录结构 | 图2-9 训练集与验证集生成 |
2.2.2 二级分类数据分析及预处理
二级分类分析处理思路与一级分类大致相同,首先进行数据探测,宽高比分布与一级分类相同,然后进行训练集数据验证集数据的生成。其中图像数据类别分布及训练集、测试集数据分布如图2-10,2-11所示。
![]() | ![]() |
图2-10二级分类数据分布 | 图2-11二级分类训练集与测试集分布 |
DenseNet 121
作为CVPR2017年的Best Paper,DenseNet脱离了加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能的定式思维,从特征的角度考虑,通过特征重用和旁路(Bypass)设置,既大幅度减少了网络的参数量,又在一定程度上缓解了gradient vanishing问题的产生.结合信息流和特征复用的假设,DenseNet当之无愧成为2017年计算机视觉顶会的年度最佳论文。
DenseNet主要由Dense Block和Transition Layer组成。Dense Block作为网络的主体,负责网络分类特征的提取,如图3-3(a)所示:该Dense Block由4个Residual Block和输入层构成,各结构间采用前馈全连接方法进行相连,输入层与其余Residual Block均进行连接第1个Residual Block与其后3个相连以此类推。对于Residual Block主要由两层卷积层构成,并将卷积层的输入与输出的特征图进行合并,增加特征维度。Rransition Layer为网络中的降维结构,可将卷积特征图的维度进行一定比例的压缩,减少网络的参数,增加网络的计算效率,如图2(b)所示,Transition Layer由 一个卷积核为1x1的卷积层和池化层组成,其中卷积层从输入特征图的张数进行降维减少比例为c,一般设置为0.5,即将特征图张数压缩为原来的一半;池化层从特征图的大小进行降维,一般将输入特征图的大小缩小为原来的一半。
图3-3Denseblock与transitionlayer
图3-4 DenseNet框架图
表3-1就是整个网络的结构图。这个表中的k=32,k=48中的k是growth rate,表示每个dense block中每层输出的feature map个数。为了避免网络变得很宽,作者都是采用较小的k,比如32,作者的实验也表明小的k可以有更好的效果。根据dense block的设计,后面几层可以得到前面所有层的输入,因此concat后的输入channel还是比较大的。另外这里每个dense block的3*3卷积前面都包含了一个1*1的卷积操作,就是所谓的bottleneck layer,目的是减少输入的feature map数量,既能降维减少计算量,又能融合各个通道的特征。另外作者为了进一步压缩参数,在每两个dense block之间又增加了1*1的卷积操作。因此在后面的实验对比中,如果你看到DenseNet-C这个网络,表示增加了这个Translation layer,该层的1*1卷积的输出channel默认是输入channel到一半。如果你看到DenseNet-BC这个网络,表示既有bottleneck layer,又有Translation layer。
表3-1 DenseNet121和DenseNet169模型参数
4.2.3 ResNeXt -101
2017年,何恺明团队所在的Facebook AI推出ResNeXt-101,全面刷新了ImageNet记录,用Instagram上面的9.4亿张图做了 (弱监督) 预训练,用ImageNet做了微调,共有 101 层、32 个组。每组的宽度为 16、 36 字节的计算量、 193兆个参数。ImageNet测试中,它的(32×48d) 分类准确率达到85.4% (Top-1) ,打破了从前的纪录。
ResNeXt网络结构采用了VGG网络的堆栈和inception 的划分整合的思想,用一种具有相同结构的block进行堆栈。将高维卷积分成多个相同的低维卷积,卷积操作后,对分组的多个特征进行融合。其中分得的组数称为cardinality,图3-5中分成了32组卷积。
相对于传统的ResNet 残差块结构,引入Inception之后的网络结构如图3-5所示。可以看出拥有相同的分组卷积结构中参数规模并没有增大,并且通过分组卷积,卷积的结果恰恰可以表示出输入Map中各个通道的权重大小,同时增大了模型复杂度。
图3-5引入inception之后的残差块
更多项目:
另有10000+份项目源码,项目有java(包含springboot,ssm,jsp等),小程序,python,php,net等语言项目。项目均包含完整前后端源码,可正常运行!
!!! 有需要的小伙伴可以点击下方链接咨询我哦!!!