李美锟,杨明夏,凌滨
(东北林业大学,黑龙江哈尔滨,150040)
将训练好的垃圾分类模型放入树莓派;当显示屏显示“按下按键开始识别”后,按下按键电路中的开关,树莓派收到按键信号后调用摄像头进行拍照并调用模型处理图像信息;处理完成后,树莓派将通过引脚向单片机发送垃圾所属类别的信号。单片机接收树莓派给出的信息后,驱动步进电机对垃圾桶的托盘和挡板将垃圾分类投放。再次按下按键将开始下一次识别。智能垃圾桶工作流程如图1所示。
图1 智能垃圾桶工作过程
本设计将垃圾分成四类:可回收垃圾、其他垃圾、厨余垃圾、有害垃圾,相应的将垃圾桶分成四个区域并标号为1、2、3、4。
如图2所示,将1区域定为初始挡板设置的位置,2区域定为圆盘开口的位置,上方步进电机控制挡板的转动,下方步进电机控制托盘的转动,根据垃圾所属类别,可以将步进电机控制移动分为四种情况:
图2 智能垃圾桶区域划分
(1)垃圾类别在1区域正下方,下方托盘顺时针旋转90度,待垃圾下落后,电机复位。
(2)在2区域的正下方,上方步进电机逆时针转动90度,带动垃圾到2区域缺口上方,待垃圾自动下落后,电机复位。
(3)在3区域的正下方,下方电机逆时针旋转90度,托盘缺口转到3区域;上方电机逆时针旋转180度,使垃圾转到3区域上方自动下落,依次复位上方和下方电机。
企业为学校提供学生实习的场所,使学生在实际中接触社会、接触真实的工作场景,增强其工作中处理问题、解决问题的能力。
(4)在4区域的正下方,上方电机顺时针旋转90度,托盘转到4区域;下方电机顺时针旋转180度,使托盘缺口位置转到4区域上方,垃圾下落后,依次复位上方和下方电机。
智能垃圾桶功能的实现主要依赖树莓派3b+,STC89C52芯片,28BYJ4型步进电机等器件。智能垃圾桶的硬件结构如3所示。
图3 系统硬件结构图
(1)按键与树莓派的GPIO25相连,当按键按下时树莓派会检测到该引脚电平进而对垃圾进行拍照并调用垃圾分类模型进行识别。
(2)识别结束,树莓派一方面控制显示电路部分相应类别的LED灯亮,一方面对应的引脚会变为短暂的低电平,通知单片机垃圾所属类别图4、5为树莓派与显示部分电路结构。
图4 树莓派
图5 按键与显示电路
有四组共32个引脚可供使用,资源丰富,引脚输出电压满足步进电机的驱动要求。
当树莓派识别结束后,某一垃圾类别对应的引脚会变为短暂的低电平,一方面点亮小灯、另一方面便是通知单片机垃圾所属类别。单片机收到信号后便会根据相应垃圾类别驱动步进电机控制垃圾桶的挡板与托盘将垃圾投放到对应的垃圾收纳区域内。图6为单片机部分电路图。
图6 单片机电路
驱动上方挡板和下方电机移动以及复位,实现垃圾分类的投放部分。本设计中,驱动电路采用高耐压、大电流的达林顿阵列——ULN2003芯片来实现单片机对步进电机的控制。驱动电路结构如图7所示。
图7 步进电机驱动电路图
垃圾分类的核心是图像处理并分类。图像处理,即通过训练机器,找出相同类别物体映射到二维空间中的像素点在数值与相对位置方面的规律,进而得出该类物体的像素特征,并与其他类别物体的像素特征加以区分,最终达到区分不同类别物体的目的。
为了达到这一目的,需要卷积核、人工神经网络这样的工具,并通过数据集的训练与优化,从而得到某类物体的像素特征。卷积核就是参与卷积运算的像素模块。如图8,它们的任务是用其特有的像素结构去提取图片中的结构单元。当两个及两个以上的卷积核捆绑在一起使用时,就得到了卷积网络的过滤器。
图8 卷积核
经过对比现有的各神经网络模型,准确率较高的模型是NASNetLarge与MobileNet,因MobileNet运行时所占存储空间较小,故更适用于本设计。
(2)可分类的垃圾数据集
本数据集来源于网络,共包括四个大类:可回收垃圾、其他垃圾、厨余垃圾、有害垃圾。
为缩短加载图片时间,使用opencv处理图像数据,按照8:2的比例将数据集划分为训练集和测试集,为解决内存问题,将训练集与测试集图片平均分为40组包保存,调用MobileNet的底层来预处理图片,完成数据集构建。
使用opencv处理图像数据,将图片加载到MobileNet模型中进行预测并将输出放入全连接层中训练其权重,调用MobileNet的底层来预处理图片。本文使用的深度可分离卷积原理如图9所示。
图9 深度可分离卷积
(3)模型构建程序设计
首先要使用Python调用TensorFlow的库来构建模型的顶层,之后使用之前生成好的npy数据集来训练模型,期间使用GPU进行加速。当40组数据训练完模型的顶层后,将MobileNet模型的底层与训练好的模型顶层连接起来便得到了最终的垃圾分类模型。
(4)模型优化
广泛用于多分类情况的最终输出层中,因为它可以将神经网络的输出值映射到[0,1]的区间内,且其全部输出结果的和为1。本设计就是多分类情况,要对40种垃圾图片进行分类,因此模型中最后一层神经元使用的激活函数便是softmax函数。
②优化器:随机梯度下降法——深度学习中寻找最优解的方法。梯度下降法原理如图10所示。
图10 梯度下降示意图
③损失函数:本设计中使用的是categorical_cros sentropy(交叉熵损失函数)。当误差大的时候其权重更新快,当误差小的时候,权重更新慢。
④正则化:过拟合会对测试机数据的准确率产生较大影响,出现过拟合现象。消除过拟合的方法是正则化神经网络的权值矩阵,Dropout,这是神经网络中最有效,最常用的正规化方法,用以防止网络的权值出现某些偶然模式,进而消除过拟合。
本设计采用谷歌团队依据ImageNet数据集训练的MobileNet神经网络作为该垃圾识别模型的底部,权重保持不变,顶部加入512个神经元与40个输出神经元组成的全连接层,全连接层部分的权重由电脑的GPU进行训练。
经测试:(1)步进电机旋转投放垃圾时间满足投放允许误差范围,处理四类垃圾的响应时间如表1所示。
表1 步进电机对不同垃圾的处理时间
由表可知,智能垃圾桶处理需一定的时间,但本设计主要应用于家庭,家庭用户产生的垃圾种类较为单一且投放垃圾时间间隔较长,该处理速度基本能满足家庭用户需求。
(2)通过对数据集中的垃圾类别进行识别,可知智能垃圾桶对每种垃圾分类的准确度。如图11所示。
图11 准确度
(3)表格2为垃圾识别模型对四大类垃圾识别准确率的对照表,该数据是由测试集数据得出的,即使模型将某一垃圾的所属小类识别错误,若其最终的所属大类没有改变,则仍算识别正确。
表2 垃圾识别模型对四大类垃圾识别准确率
文设计的智能垃圾桶能够完成日常生活垃圾的分类识别、自动投放等功能。具有占地小、学习能力强、识别准确的优点;且在制作方面运用的树莓派和辅助芯片等材料成本较低,适合家庭或企业的垃圾分类要求,有望普及。