曹胡锴,刘致轩,雷丹,肖书浩,孟凡非
(武昌首义学院 机电与自动化学院,湖北武汉, 430064)
目前,中国的垃圾处理和分类过程仍以人工分拣为主,需要工人在流水线上识别垃圾的类型,人工完成垃圾的分拣操作。虽然这种工作方式简单可行,但却带来了突出的环境卫生问题,而且不能保证分类的效率和准确性。
目前,基于模式识别的图像分类方法已被应用于工业领域,但这种图像分类方法的鲁棒性不足,抗干扰能力弱,导致图像分类结果准确性不高。此外,由于算法的有效性有限,垃圾自动分类在很长一段时间内没有取得突破性进展。最近,随着计算机性能的快速发展,依托大数据和GPU计算的深度学习取得了很大的进展。基于深度学习的图像分类算法已经取代了传统的图像算法,成为工业和学术界的主流。本文提出了一种基于ResNet50_vd_ssld网络的垃圾分类图像算法,运用深度学习技术来进行垃圾分类,通过使用PaddlePaddle来学习出可以进行垃圾分类的图像分类模型。基于自学习和泛化能力,从而显著提高图像分类的准确性和鲁棒性[4~9]。
垃圾分类系统主要由能够识别不同垃圾类型的嵌入式主控和实现半自动化分拣控制的机械结构组成。分拣机构的垂直结构是在我们平时使用的垃圾桶的基础上进行改造设计的,充分利用了垃圾桶的空间和外形。具体的垃圾识别以及分拣过程如图1所示。当垃圾进入系统后,CPU激活摄像头获得垃圾图像,然后运行卷积神经网络获得垃圾类别信息,最后控制机械结构根据垃圾类别的分类使垃圾落入相应的垃圾桶。
图1 系统总体设计图
1.2.1 基于深度学习的软件方案
软件编程平台选用Python编程平台,Python在机器学习领域非常体贴开发者,语言简洁,其生态成熟,开发效率更高。
图2 软件方案
paddleX集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。
OpenCV可用于检测识别图像中的对象,并且包含了众多图像处理和视频分析算法,并广泛应用于图像和视频处理中。
1.2.2 深度学习模型的迁移学习
图3 迁移学习示意图
迁移学习自从被提出之后就受到工业及学术界的广泛关注,迁移学习就是把已经训练好的模型参数迁移到新的模型当中,来帮助模型进行训练。而且一般它们的数据和任务是相似的,所以迁移学习是可以通过已经学到的模型参数,通过源领域(图像)学到的东西应用到目标领域(图像),加快模型的收敛速度及识别准确率。
图4 从ImageNet到垃圾分类迁移学习示意图
ResNeXt-101是一个相对简单且高度模块化的图像分类网络架构,它在ImageNet分类数据集上的表现优于ResNet-101/152、ResNet200等模型。特别是第101层ResNeXt比ResNet-200有更高的准确性,但复杂度只有其的50%,而且其准确率一直比ResNet好。ResNeXt降低了瓶颈比例,用分组卷积取代了中间的正常卷积。这种结构可以在不增加参数数量的情况下提高精度,同时减少超参数的数量。
图5 ResNet和ResNeXt的网络模块
本文所使用的网络模型是ResNet50_vd_ssld,该模型使用了知识蒸馏技术,在保证模型结构不变的情况下,进一步提高了模型的识别准确率。我们在参数量不变的情况下,极大地提高了分类精度,并且减少了计算难度,通过知识蒸馏在不减少模型准确率的情况下,去掉一些无关的模型参数,来减轻模型的复杂程度,这提高了模型的训练速度,且有利于其在实际垃圾分类场景中的应用。
我们使用MobileNetV2来进行垃圾分类的对比训练,预训练模型采用标准ImageNet格式的训练集,最终MobileNetV2垃圾分类验证集上在第235个Epoch时,acc1的精度最高,最优值为0.3191,top-5准备率为0.6771,不同模型结构的网络在相同数据集上的性能表现不同,需要根据预测耗时以及存储的需求选择合适的模型。
图6 SSLD流程图
图7 MobileNetV2验证集acc1曲线
在使用通过知识蒸馏得到的预训练模型进行微调时,我们推荐使用相对较小的网络中间层学习率。为了验证ResNet50_vd_ssld模型和MobileNetV2模型的大小差异,本组模型训练策略调整为:cosine_decay_warmup,lr=0.0075,epoch=120,bs=8,保存间隔为2。
最终垃圾分类验证集上精度指标接近100%,相对于之前模型的物体识别准确率,模型性能指标获得较大的提升。
图8 ResNet50_vd_ssld模型误差
图9 ResNet50_vd_ssld模型识别准确率
训练数据集是采用“华为云垃圾分类挑战杯”赛方依照深圳市颁布的垃圾分类标准制作的数据集, 本文中所使用的数据集全部转换为了ImageNet格式,数据集一共包括了14802余张垃圾图片,共分为可回收物、不可回收物、餐厨垃圾和其他垃圾4大类,然后以此再分为40个小类。
图10 不同类别样本分布
首先对图片进行随机水平翻转、随机亮度、高斯噪声、随机旋转角度等预处理操作。进行数据预处理之后,按照7:2:1的比例对数据进行划分为训练集、验证集和测试集。
在垃圾分类的模型处理中,我同时选取了百度的飞桨PaddlePaddle作为深度学习的开发平台。实验证明,基于ResNet50_vd_ssld模型进行训练,在ImageNet1k验证集上即使我的数据量不高,也能够进行高精度的图像分类。
我使用了ResNet50_vd_ssld模型进行训练,ResNet 50_vd_ssld模型采用了知识蒸馏技术,它的教师模型是ResNeXt101_32x16d_wsl,也是我下文将要使用的模型,该模型的Top1正确率为84.2%。
图11 数据集图片展示
图12 各模型计算速度
表2 训练模型参数
将在PaddleX上训练得出的图像分类网络模型导出,在Pycharm上进行代码的修改。该模型对40种日常生活中所常见的垃圾进行分类,实现了最高100%的识别准确率,取得了比较好的效果。模型训练了120个Epoch,整体模型在108个Epoch时acc1值达到最优,最优值为0.7663。最后的实验结果也表明:该模型具有很好的鲁棒性,部分垃圾种类的识别准确率达到99%以上。
表1 样本分类标准
图13 塑料袋的识别
图14 测试集图片识别准确率
整个试验过程所用到的计算机环境配置以及ResNext101内部部分参数设置如表3所示[9]。
表3 环境配置
表4 参数设置
上述参数中,top-1准确率通常作为模型整体准确率的评价指标之一,其计算方法如式(1)所示:
上式中test_pred 表示在经过模型学习过程后,测试集的分类结果。 test_true 表示测试集标注的所有标签种类,num(test_pred=test_true)表示识别正确的图片数, num(test)表示测试集中总图片数。top-1准确率意思就是模型在经过学习之后,识别正确的图像占所有测试集样本中的比重,也表示测试数据集平均的识别成功率。
通过对模型进行深度学习并且进行不断的迭代,模型训练结束之后,使神经网络能够对40类生活垃圾的图像进行分类。最后我们将模型进行导出,通过调用电脑的摄像头,这样可以实时地对垃圾的种类进行识别,并取得了不错的效果。
本论文将ResNet50_vd_ssld网络用于垃圾分类,部分种类最高取得了100%的准确度,其特色和创新表现在:①相比传统图像分类算法,模型具有比较好的鲁棒性,对环境噪声(如照明、遮挡等)有较强的抵抗能力;②实现了垃圾分类端到端分类模型,输入图片,就可得到结果,无需任何人为特征提取和阈值设定;③训练深度学习模型用到了迁移学习方法,即利用其他已经训练好的模型来开始训练垃圾分类模型,而不是从头开始训练;④模型训练过程使用了SSLD知识蒸馏方案(SSLD,Simple Semi-supervised Label Distillation),既保证了模型识别的精度,又控制了模型的规模大小。⑤99%以上的识别准确度,达到工程实用标准。
由于时间的关系,本课题只解决了图像只含有单一垃圾类别的图像分类问题,并未考虑图像中有多个垃圾类别的问题,未来可以用深度学习中的多目标检测模型来识别多个目标。同时,为了达到工程实用的目的,垃圾图像数据集还要进一步完善,一方面增加垃圾种类,另一方面增加同一种类垃圾的图像样本数量。