吴 琦 闫毕成 王晨晨 崔文旭 辛若腾 司广涛
(曲阜师范大学计算机学院 日照 276826)
经济的增长,致使社会垃圾数量快速增加,垃圾处理设施面临巨大压力。焚烧、填埋等传统的垃圾处理方式,容易对环境造成破坏,不利于可持续发展。国家积极鼓励垃圾分类回收体系建设,推进资源回收再利用,建立绿色低碳循环经济体系[1]。垃圾分类成为世界共同的关注点,垃圾分类处理行业市场规模不断扩大。进行垃圾分类,有助于对垃圾进行合理的回收利用,降低资源回收的成本。
目前国内外对于垃圾图像分类问题,主要研究方法包括基于传统计算机视觉的分类方法和基于深度学习的图像分类方法。在传统的计算机视觉技术方面,陈婧敏等[2]使用SURF-RANSAC 与模板匹配算法,能够有效地实现对塑料垃圾的分类。郑龙海[3]等通过SFS 算法和SVM 分类器,可以对建筑垃圾中木头和砖块实现较为准确的分类。黄惠玲[4]等通过阈值分割和K 均值聚类算法实现对建筑垃圾的颜色识别和位置确定。Guo 等[5]使用SURF 和几何哈希算法有效实现目标匹配,提高垃圾分类的速度和准确率。可见,传统的图像分类方法对于种类较少,图像简单的分类问题效果较好。随着图像类型的多样化发展、数据样本的不断增加,图像数据复杂度不断提高。这种情况下,传统图像分类方法的准确度较低,适应性不强。
随着深度学习算法的快速发展,垃圾图像分类进入新的发展阶段。相比传统图像分类算法,基于深度学习的图像分类方法,能够自动进行图像特征的学习,识别精度更高、容错性和适应性更强,为垃圾处理行业提供新的动力。目前,已有学者开展了基于深度学习的垃圾图像分类方法研究。Wang[6]使用VGG16网络实现垃圾分类,并获得75.6%的准确度,分类精度较低。吴晓玲等[7]通过设计神经网络模型对塑料垃圾进行分类,最终获得84.01%的准确率。Li 等[8]基于Mask Scoring RCNN 的网络模型进行四种垃圾的分类识别,达到约65%的准确度,分类精度较低,垃圾种类较少,难以满足实际应用情况。可见,已有研究对于垃圾分类准确度较低,不能满足现实应用的需求。
为了在较短时间内获得更高分类精度的模型,缩短模型训练周期,并减少垃圾图像数据集的使用,部分学者采用迁移学习进行垃圾图像的研究。Rabano 等使用MobiLeNet 进行垃圾图像分类,能实现89.34%的准确率[9]。李丕兵等设计基于Inception 的模型对垃圾进行分类,获得90%以上的准确度[10]。Rismiyati 等通过对Xception 网络的训练,在TrashNet 的6 分类垃圾数据集上获得88%的准确度[11]。上述研究分类准确度虽然较以往研究有所改善,但是还需进一步的提高,并且对垃圾分类算法部署在现实应用环境下的研究较少。
边缘计算是在网络边缘设备上提供服务,将运算中心由云服务器转移到边缘计算设备上,具有安全性强、延迟低、扩展性强等优点。随着人工智能发展,学者提出了边缘智能的概念,把神经网络与边缘计算结合起来,实现数据在边缘设备的计算、存储[12~13]。对于垃圾图像分类来说,将算法部署到边缘计算设备上,更有利于实现实时、高效检测的功能,缓解数据大量传输的压力。
因此,为了研究垃圾分类算法在实际环境中的实用性,基于ResNet 预训练模型设计了GarbageCNet 分类模型,使用迁移学习方法和公开的垃圾分类数据集,通过不断优化模型参数和结构提高垃圾分类精度,并将算法在边缘计算设备上部署运行,实现垃圾图像的高效分类。
随着深度学习技术的发展,出现了数百层、上千层的神经网络,如VGGNet、AlexNet 等是通过堆叠卷积层、池化层,添加全连接层来实现模型精度的提高。但是神经网络层数的增加,出现了梯度爆炸、梯度消失、退化等问题制约着模型性能的提高。
现有研究表明,通过使用BN层、改进激活函数等方法可以解决神经网络层数的增加导致的梯度爆炸问题;使用残差结构、改进激活函数等方法可以解决梯度消失问题[14]。因此,He 等提出了残差网络ResNet 来解决退化问题[15],并被广泛用于分类领域。研究发现,ResNet 比VGGNet 具有更好的效果,能达到更高的准确度。
残差网络是由一系列残差模块组成,如图1 所示。利用残差边将网络层跳跃式连接,使得图像的特征可以传递到后面的网络,后面的网络也能得到训练,这为更深层次网络的发展提供了思路。
图1 残差模块
假设残差模块输入为x,左侧残差边F(x)由卷积操作组成,右边是直接映射x,则残差块的输出为F(x)+x。在残差模块中使用Relu 激活函数,加快计算和模型收敛速度[16],公式如下:
传统的模型训练方法需要大量的数据来保证模型精度和泛化能力,但是现实应用过程中存在数据集过小的问题,所以有学者提出了迁移学习[17]。在图像分类问题中,迁移学习是将在原数据集上学到的特征提取技巧,用于新数据集图像的分类。本文使用大型数据集ImageNet 上的ResNet 预训练模型用于我们新模型的特征提取,减少训练过程的时间开销。此外,虽然深层网络能够提高模型精度,但考虑到模型部署的硬件环境运算能力有限,为兼顾模型精度与运算时间,本文基于50 层的残差网络结构设计垃圾分类模型。
综上,本文提出了如图2 所示的垃圾分类网络(Garbage classification Network,GarbageCNet),使用ResNet50 的卷积层和下采样层提取图像特征,通过在ResNet50 后添加全连接层、改变参数等来优化模型,模型最后使用Softmax,将神经网络的输出变成概率分布。在进行卷积池化操作结束后,使用全局平均池化层(Global Average Pooling,GAP)连接,可以保留学习到的空间信息、减少参数量,提高模型的泛化能力[18]。在模型中加入Dropout层[19],使网络节点随机失活,提高模型鲁棒性。
图2 GarbageCNet模型结构
模型的损失函数可以度量预测值与真实值的距离,本文使用交叉熵函数加快模型训练,使得模型具有更好的性能,公式如下:
模型中使用自适应矩估计(Adam)优化器[20],该优化器计算高效,内存占有较少,有助于垃圾分类模型在嵌入式设备树莓派上的运行。
使用含有12 种类别垃圾的数据集,共计15000多张照片,类别有纸张、电池、衣服等[21],按照6∶2∶2 的比例分为训练集、测试集、验证集,进行模型训练、验证。本文进行数据预处理时,将数据集的图片进行随机改变亮度、翻转等,对数据进行增强,提高数据多样性和随机性,增强模型的泛化能力和鲁棒性。
训练过程中,首先冻结ResNet50 预训练模型的部分卷积层和下采样层,对其他网络层进行微调;其次,为达到更好的训练结果,不断改变冻结参数的层数,通过不断改变模型训练的超参数(如学习率、一次迭代的样本数参数)来优化模型。为兼顾模型精度与训练平台性能,本实验将batch_size设置为24。部分实验数据如表1 所示。经过分析发现,在训练epochs 为30、ResNet50 训练层数为30时,准确度较高达到96.07%。在数据集较小时,模型训练参数过多会造成准确度的降低。
表1 实验数据
为体现本方法选择基于残差网络搭建垃圾分类模型GarbageCNet的优越性能,对GarbageCNet和基于VGG19 预训练搭建的垃圾分类模型VGG19GarbageCNet,进行对比实验,结果如图3 所示。在相同的硬件环境下进行50 个epoch 训练,VGG19GarbageCNet 达到92.27%的准确率,而GarbageCNet达到96.33%的准确率。GarbageCNet所用时间较VGG19GarbageCNet 更短,并且精度高了4.06%。经过分析发现,本方法使用的GarbageCNet,提高了分类的精确度,模型表现更好,比VGG19GarbageCNet模型收敛速度快、准确度更高。
图3 VGG19模型与GarbageCNet
训练结束后,GarbageCNet 的优化模型保存下来。然后,使用测试数据集测试模型精确度。部分测试结果如表2所示。
表2 GarbageCNet的分类结果
其中,f1 值表示精确度和召回率的调和平均数,出现的次数表示该种类出现的次数。用precision 表示精确度,用recall 表示召回率,则f1 的计算公式为
分类结果表明,对于金属垃圾这种复杂、不规则的物体,分类的准确度较低。对于鞋子、衣服等形状较为固定的物体准确度较高。总体来说,GarbageCNet 能较好地实现垃圾分类,识别准确度较高。
树莓派是基于Linux 系统的微型电脑,树莓派有较强的计算能力,同时,其较低的价格为将它用于边缘计算提供了可能。为此,本文将图像分类方法部署到边缘计算设备,具体步骤如下:
第一步,网络模型训练完成后,将分类精度较高的垃圾分类模型保存下来。第二步,在树莓派上搭建合适的运行环境,把模型部署到树莓派上。进行调试优化和垃圾的分类检测。第三步,垃圾图像采集。本项目垃圾图像的采集使用树莓派摄像头模块,将获取的图像进行预处理后传入神经网络模型计算,最后得出预测结果。
为验证GarbageCNet 的准确度和鲁棒性,需要对模型进行测试。在将模型部署到树莓派上后,选取训练数据集中常见的垃圾种类进行测试。使用树莓派摄像头对垃圾图像进行拍摄采集,调用GarbageCNet 进行图像分类,对每种垃圾进行100 次实验。分别记录每种垃圾的分类结果,相关数据如图4所示。
图4 垃圾分类混淆矩阵
上述结果表明:本文提出的基于深度学习与边缘计算的垃圾分类模型,对于生活中的常见垃圾的分类具有较高的精确度,可以实现较为准确和稳定的垃圾分类效果。
针对垃圾分类问题,提出基于深度学习与边缘计算的垃圾分类算法,使用迁移学习技术搭建GarbageCNet 垃圾分类模型。将训练好的模型部署到树莓派上,经过测试,算法能够以较高的精度和效率实现垃圾分类。本文提出的垃圾分类方法,虽然可以较好地实现垃圾分类,但是模型规模较大,算法的准确度还有较大的提升空间。在以后的研究中可以不断优化模型结构来提升模型的效率、模型准确度,不断提高垃圾分类算法的性能。