罗 亮, 许佳娜, 毕登峰, 黄耀鹏, 罗 慧
(韶关学院 数学与统计学院, 广东 韶关 512005)
我国不仅是人口大国,还是垃圾产生大国,随着经济逐步发展, 人们的生活消费水平和城镇化率不断提高,生活垃圾产生量不断上升,但是由于人们长期缺乏垃圾分类的意识, 导致生活垃圾在投放的时经常未被合理的分类,不仅造成了资源浪费,随之而来的环境问题也日益突出。
目前, 基于传统模式识别的图像分类方法已被应用到工业领域,但这些图像识别分类方法的往往准确度不高。 此外,由于设备算法的限制,垃圾自动识别的研究在很长一段时间停滞不前。而随着计算机性能的快速发展,依托大数据和GPU 计算的深度学习取得了非常大的进展,成为学术界和工业领域的主流。
针对目前深度学习领域发展现状并结合垃圾分类的现状与难点,提出了基于YOLOv5 的智能垃圾分类系统,通过图像识别与嵌入式的结合, 很好的解决了生活垃圾在投放时遇到的难题, 同时也解决了垃圾处理方式上的难题,为进一步的垃圾回收提供了便利。
与传统的垃圾分类方式相比, 该系统提高了垃圾分类的准确度和垃圾资源的利用率, 对生活垃圾处理方式也有一定的帮助, 一定程度上解决了由于生活垃圾带来的环境污染问题。 可以预见,在未来,随着图像识别技术的发展,基于图像识别的垃圾分类技术将成为主流。
该系统使用基于Pytorch 的深度学习框架的YOLOv5模型进行生活垃圾图像识别, 使用STM32F103 单片机作为控制器。 本文的垃圾回收装置,使用的是圆形垃圾桶。在垃圾桶顶部,安装了摄像头模块,在投放垃圾时,可以进行图像采集;在垃圾桶内部划分四个扇形区域,每个区域使用挡板隔开; 在垃圾桶底部安装了步进电机控制垃圾桶的旋转。
当系统运行时,使用摄像头进行图像采集,将采集到的图像信息发送至在上位机即PC 端部署的YOLOv5 模型进行识别,识别完成后将识别到的结果信息(包含物体的类别信息以及坐标信息)经过串口通信发送给单片机,单片机接受到信息后, 通过判断垃圾类别来控制步进电机进行旋转,旋转到对应的区域,再控制另一个步进电机打开垃圾挡板, 实现垃圾的自动识别和分拣功能。 系统设计如图1 所示。
图1 系统设计图
硬件结构主要的模块有STM32 主控模块、图像采集模块、步进电机模块、红外传感器模块。系统结构设计如图2 所示。
图2 系统结构设计图
选用STM32F103ZET6 单片机作为控制器,该系列单片机构造简单、工具易用、低功耗、高性能且有丰富的拓展接口,可拓展性强,充分满足本系统的需求。
选用分辨率为720×1280 的外接摄像头作为图像采集模块,配置有自动降噪和自动对焦功能,使图像采集更为精准。 采集的生活垃圾示例如图3 所示。
图3 生活垃圾示例
选用红外传感器来判断垃圾是否被投放进垃圾桶, 当红外传感器检测到光线变化时,将信号发送给单片机, 单片机接收到信号后将旋转后的对垃圾桶进行复位, 使垃圾桶回到初始位置。 红外传感器具有体积小,稳定性强等特点。 红外传感器原理图如图4 所示。
图4 红外传感器原理图
选用28BYJ48 型步进电机控制垃圾桶进行旋转。 该型号步进电机的驱动方式为4 相8 拍,最大转速能力大约14 圈每分钟,额定电压为12V,牵入转矩≥34.3mN·m,在满足系统需求的同时还兼具速度快、功率小、噪声低等优势。 STM32 单片机接收数据后进行判断,控制1 个步进电机旋转,使得垃圾桶转到对应区域, 再控制另一个步进电机转动垃圾挡板进行投放。
YOLOv5 采用端到端网络结构,并将目标检测任务转换为回归问题,以直接检测和分类目标。它是通过整个图像应用一个卷积神经网络(CNN),把图像分划为网格,预测每个网格的类概率和边界框。 YOLOv5 有四种版本,由于深度和宽度的不同分为s、l、m、x 四种版本。 而本文使用YOLOv5s。
YOLOv5s 模型的基本组件有:输入端(Input)、主干网络(Backbone)、Neck、数据输出端(Prediction)。 Yolov5s的整体网络结构如图5 所示。
图6 Focus 结构
本文以YOLOv5 算法为基础, 了解并使用它进行检测目标生活垃圾图片, 通过YOLOv5 算法对垃圾图像进行预处理,得到一张垃圾特征图。 通过相关算法分析,得出垃圾分类结果,从而对垃圾进行分类,达到本文所研究的目的。 具体过程为:摄像头端口检测到垃圾,识别垃圾后传送到YOLOv5 的输入端输入。 为了提高模型的训练速度和网络的准确性,在输入端采用了Mosaic 数据增强的方法,使垃圾图片的Mini-batch 不用很大,而获得更好的结果。 同时提出了能够对图像进行预处理并丰富了检测数据集的方法——自适应锚框计算与自适应图像缩放,获得更多的目标。通过输入端对垃圾图像进行随机缩放、裁剪、分布、拼接后,得到一张新的图像,并根据图像的尺寸自适应地向缩放后的图像添加最少的黑边。 经过这样处理后,计算量会大幅度减少。 YOLOv5 的主干网络使用了Focus 结构,是Backbone 所独有的,结构如图2 所示。 Backbone 利用CSP_X 把输入分为两部分,一部分通过CBL 经过多个残差组件卷积而成,另一部分通过使用普通卷积运算,丰富了梯度形式的多样性。经过Backbone的切片和卷积操作后,进入Neck。 Neck 部分堆叠了许多能够提取特征融合的层,通过FPN+PAN 结构把上层和下层的垃圾信息融合起来形成垃圾特征图, 极大地减少了提取垃圾信息特征的损失。从Neck 获得预测的垃圾特征图, 最后进入Prediction 进行最后的剔除多余的预测框,从而得到准确的垃圾特征图,在经过后续一系列操作后,得到目标垃圾的分类信息,完成垃圾分类。
YOLOv5 最大的优点是速度快,它能够直接对单个图像、批处理图像、视频甚至网络摄像头端口输入,快速的检测识别垃圾图像中的目标, 直接在网络中提取特征来预测目标垃圾的分类和位置。 所以本文使用YOLOv5 对生活垃圾进行检测分类,提高生活垃圾检测分类的速率,从而提高垃圾分类再利用的效率。
3.1.1 数据集
生活垃圾的样本集是垃圾检测是否有效的关键,样本集会对训练后模型的质量产生影响。 本文收集了各种环境下的生活垃圾图像,分为可回收垃圾、有害垃圾、厨余垃圾和其他垃圾,保证训练后的模型更具实用性。最后经过筛选,共收集到生活垃圾图片2745 张,每一类收集了约550 张垃圾图像。 对收集的垃圾图片按顺序编号后进行重新命名(例如,00001.xml,00002.xml,……,01067.xml), 并划分为训练集与测试集。 其中, 训练集一共有2545 张图像, 用于测试的测试集有200 张图像。 之后通过LabelImg 软件对生活垃圾图片进行标注, 标注的信息主要是垃圾分类类别, 并将图片标注的图片格式由xml转换成YOLOv5 的格式。
3.1.2 训练环境
本文为构建生活垃圾检测环境并对模型进行训练,使用Windows 10 作为实验应用的操作系统,开发语言选择Python 语言。 硬件参数详见表1。
表1 硬件参数
在网络模型训练过程中,具体的训练参数及训练设置情况如下:网络模型训练阶段,物体检测验证集较平稳,总迭代次数为300 次。 输入图片尺寸为640×640,batch-size 为16。
本文的单片机程序主要包含了主程序以及步进电机程序、红外传感程序等子程序。在对程序进行编写时实现各个功能的模块化,使得系统易于调试。
为了验证模型的正确识别率, 一共选取了200 张图像,包含分别从各种环境中采集的可回收垃圾、有害垃圾、厨余垃圾、其他垃圾图像,从中各取50 张进行了混淆。 将图像随机分为4 组,每一组图像集包含50 张垃圾图像,然后使用模型对图像进行识别。 得到的结果如表2 的所示。
表2 测试结果
由测试结果分析可知,模型有较好的识别率,平均识别率达到了96%,识别效果很好。对于不同环境的垃圾图像都有较好的识别率, 证明了模型能够满足日常生活中人们对生活垃圾的分类需求, 解决现实生活中人们对生活垃圾分类的遇到的问题。
本文将目前垃圾分类的痛点与深度学习和嵌入式设备结合,提出了基于YOLOv5 的智能垃圾分类系统,利用STM32F103ZET6 单片机作为控制器, 通过训练YOLOv5模型进行图像识别, 能够实现垃圾自动分类和分拣的功能,有较好的识别率,满足了系统设计的需求,并且有较强的实用价值。
在之后的改造中, 可以增加语音识别模块、 配套的APP 开发,以适应更加复杂的场景下的使用需求。