陶航,江学焕,张金亮,陈波
(1.湖北汽车工业学院 电气与信息工程学院,湖北 十堰 442002;2.岭南师范学院 电子与电气工程学院,广东 湛江 524048)
随着我国居民生活水平提高,生活垃圾的数量也随之增长,垃圾处理成为了亟待解决的问题。由于我国垃圾分类方式较为单一,且智能化水平较低,很大程度上影响了垃圾处理的效果。因此,提出一种有效的垃圾分类方式成为垃圾治理的关键。为此,国内外学者做了大量研究,提出了智能垃圾桶的解决方案。白桂峰等[1]、马燕等[2]设计了基于STC89C52 的智能垃圾桶,包括主控芯片、步进电机和传感器,实现垃圾桶的自动打开和关闭。郭昌鑫等[3]设计了基于STM32的智能垃圾桶系统,由STM32、红外感应模块、步进电机等组成,实现垃圾桶盖自动开关、满桶和毒气报警等功能。章志飞等[4]设计了基于Arduino UNO的自动消毒智能垃圾桶,由超声波测距、压力感应、显示、水泵、舵机及蜂鸣器等组成。陈景翼等[5]设计了基于GPRS通讯的智能垃圾桶,主要包括最小系统模块、各种感应、语音提示以及无线通信电路,实现火灾报警、GPSR短信提醒和垃圾容量检测等功能。但上述智能垃圾桶大多基于红外感应与液晶显示控制,难以满足垃圾种类的自动识别需求。
随着人工智能与机器视觉技术逐渐成熟,基于深度学习的图像分类方法为垃圾识别研究提供了新的思路。许伟等[6]结合基于MobileNetV3的特征提取网络,改进了基于YOLOv3 的目标检测方法,识别平均准确率达到90.50%。向伟等[7]提出了改进CaffeNet 模型,增强了模型特征提取能力,降低了网络复杂度。马雯等[8]基于改进Faster R-CNN方法,结合VGG16与ResNet50方法修改网络结构,减少图像识别时间。宁凯等[9]提出基于YOLOv2-dense网络的智能扫地机器人的垃圾检测与分类方法,能够实现图像浅层和深层特征的复用与融合。这些方法虽然提高了检测精度,但需要大量数据、且训练过程相对缓慢。陈智超等[10]提出了基于改进MobileNet v2 的垃圾图像分类算法,利用迁移学习的方法优化模型参数,平均准确率达94.6%。梁立媛等[11]提出了基于迁移学习的胶囊内镜图像分类方法,分类准确率达到99.98%。康庄等[12]提出了基于Inception v3网络特征提取模型和迁移学习相结合的垃圾种类识别方法,识别平均准确率达到99%。文中结合迁移学习方法和基于ResNet50 模型的垃圾识别方法,提出基于深度学习的自动垃圾分类系统,开展模型训练分析、算法性能测试及系统测试,进行系统运行和识别效果验证。
基于深度学习的垃圾分类系统总体框图如图1 所示。信息采集与显示部分包括摄像头、显示屏、超声波传感器和光电式传感器,摄像头用于获取待识别的垃圾图像信息;信息处理与控制部分由树莓派和单片机组成;机械结构由电机和减速齿轮组所构成。系统采用树莓派与单片机相结合的控制方式,选用树莓派4B作为主控,用于获取摄像头采集的图像、运行图像分类模型以及界面显示等功能。而控制电机旋转和获取传感器数据等任务由STM32F103 单片机来完成。垃圾桶容量满载检测由HY-RFO5超声波模块完成,采用E18-D80NK模块对投递口上的物体进行检测,该传感器能够让树莓派开始采集垃圾图像并进行分类。最后由树莓派通过串口通信将分类信息传送至单片机,控制电机工作和完成垃圾投放任务。
图1 系统总体框图
采用Solidworks 软件对垃圾桶进行建模,整体结构如图2a 所示,主体外框为长50 cm、宽50 cm、高70 cm的立方体结构,分为上、中、下部分。上层部分同样分为3部分,分别用于垃圾投放口和屏幕显示部分、整个系统的电控部分以及水平位置的投放平台;中间部分则是由可回收垃圾、厨余垃圾、其他垃圾和有害垃圾4种垃圾桶组成;下层主要是放置电机和减速齿轮组,用来控制垃圾桶的转动。根据垃圾桶的建模结构设计图,按照相应尺寸做成等比例的实物,垃圾桶实物图如图2b所示。
图2 垃圾桶
自动分类垃圾桶要实现对垃圾的识别种类、数量和状态信息的显示,根据树莓派的运行环境,利用Python 编写界面程序。界面的组成部分包括摄像头采集的实时图像显示、垃圾桶的分类结果、各种垃圾的检测数量、各垃圾桶的满载情况和整个系统的工作状态等,其中工作状态分为正常、电量低和机械故障。通过该界面了解到垃圾桶的状况方便进行相应的管理与处理。
随着卷积神经网络的发展,大量实验验证了卷积层越深,模型效果就越好,但不断增加卷积层的深度,会造成梯度爆炸、消失,导致系统不能收敛等问题。为此,深度残差网络ResNet被提出。
采用标准ResNet50 模型网络[13],由49 个卷积层和1个全连接层组成。将卷积层分为5组,卷积核的大小分别为1× 1、3× 3 和7× 7,用于输入图像的特征提取。在卷积层采用非线性ReLU 函数作为激活函数,可以防止梯度弥散、稀疏激活性和加快计算。用1× 1、3× 3和1× 1的卷积层结构代替原有3× 3的卷积层,在经过1× 1的卷积层下减少了计算,在另一个1× 1的卷积层下做了还原,既保持了精度又减少了计算量。选用Adam优化器,利用梯度的1阶矩估计和2阶矩估计动态调整参数的学习率,让每1次迭代学习率都有1个明确的范围,使参数变化平稳。同时,能够解决梯度下降法的收敛速度和局部极小点等问题。
迁移学习作为一种机器学习方法,是将源领域的标注数据或者知识结构迁移到结构相似的目标领域中,使目标领域能够取得更好的学习效果。在数据样本较少且分类模型较复杂的情况下,可通过迁移学习来防止结果过拟合或者欠拟合,提高模型分类识别效果;也可降低对训练模型的复杂性要求,提高模型训练效率。
文中所运用的迁移学习方法是利用预训练网络作为新任务的特征提取器,将网络全连接层前的所有卷积层参数保留不变,只训练最后的全连接层参数。首先载入ResNet50 网络模型,并导入基于ImageNet数据集的训练权值,得到预训练模型。由于需要对40 种垃圾分类,所以将ResNet50 输出由原来的1000变为40。其次在自制的垃圾数据集上进行重新训练,训练过程中将其他层结构参数冻结,只改变全连接层的结构参数,并通过Softmax分类器实现分类,选择交叉熵损失函数和Adam梯度优化方法训练模型。
原始数据集来源于2019年华为云人工智能大赛“垃圾分类挑战杯”,由于其数据集中部分类别图片数量较少,需要对现有样本进行扩充,使用keras提供的图像数据增强工具对现有样本进行翻转、旋转、裁剪、缩放等操作,得到40种物体共14168张图片。其垃圾分类如表1 所示,其中训练样本占80%,测试样本占20%。
表1 生活中常见的40种垃圾及其所属类别
软件采用Python 3.6.5 和TensorFlow-gpu 1.13.1,CPU 采用主频为2.5 GHz 的Intel core i5-7300HQ,GPU 采用显存为4GB 的Nvidia GeForce 1060。模型优化器选择Adam,学习率设置为0.001,损失函数使用交叉熵;训练周期设置为100,每批次训练图像32张。
在垃圾数据集上训练,模型的准确率和损失值如图3 所示,重新训练后的模型准确率为0.98,在100轮训练中体现出很好的识别效果,精度能够达到垃圾识别分类的要求。
图3 模型训练结果图
为验证迁移学习对模型训练的效果。在ResNet50 模型基础上,分别将结合迁移学习方法与未结合的模型进行训练,其训练准确率如图4所示。未结合迁移学习的方法准确率只有0.96,结合了迁移学习的方法准确率达到0.98。同时,由于未使用迁移学习方法,使得在训练过程中需要对几乎所有参数进行训练;而结合迁移学习方法,在训练过程中只对部分参数进行训练。减少重新训练的参数量,并在原有的模型参数基础上,能够作为网络的预分类模型,在全连接层和Softmax 函数作用下,得到准确率较高的分类模型。采用迁移学习方法缩减了训练参数,提高了训练效率。
图4 模型训练准确率对比图
1)模型识别 为验证分类模型识别性能,将采集到的垃圾图片依次输入到训练好的模型中,从数据集中随机抽取100张不同的垃圾图片,测试模型对垃圾图片的识别速度如图5a所示。
图5 垃圾种类识别速度曲线图
2)系统测试 将垃圾分类模型部署到树莓派4B 上,并建立相应的运行环境。先对模型的垃圾识别速度进行测试,采用相同的方式将100张不同类型的垃圾图片依次输入到树莓派上运行的模型中,其识别速度如图5b所示。由于PC端可以利用GPU提高模型运行速度,相对于PC端的识别速度,树莓派的识别比较缓慢。将整个系统进行组装后,分别用电池和饮料瓶进行效果测试。将垃圾放至垃圾桶的投递口,识别效果如图6 所示,系统可以在1.3 s 左右识别垃圾种类,并精确投放到相应的分类垃圾箱中。
图6 系统综合测试效果
提出基于ResNet50模型和迁移学习相结合的垃圾图像分类方法,通过迁移学习提升模型的训练效果。设计了基于深度学习的垃圾自动分类系统,测试表明方法及系统的有效性,实现对生活中常见垃圾的自动分类。后续将针对较小垃圾检测以及垃圾遮挡问题进行深入研究,以提高算法及系统的适应性。在研究中将增加结构测试过程,提高垃圾分类系统的完整性,并设计其他结构的垃圾回收装置,满足更多目标类别的分拣需求。