基于视觉识别的垃圾分类箱系统*
2022-03-11谢小明徐建辉陈飞燕
谢小明 徐建辉 陈飞燕
技术应用
基于视觉识别的垃圾分类箱系统*
谢小明1徐建辉2陈飞燕2
(1.广州市真光中学,广东 广州 510380 2.广州慧谷动力科技有限公司,广东 广州 510000)
针对生活垃圾混合收集造成的资源浪费和环境污染问题,以基于PyTorch的智能垃圾分类箱为例,设计一套基于视觉识别的垃圾分类箱系统。采用PyTorch框架对电池、金属、塑料和纸4类常见生活垃圾进行模型训练与识别;通过Arduino控制Jetson Nano开发板、Arduino mega2560开发板、舵机、USB高清摄像头等硬件完成这4类垃圾的分类。
垃圾分类;PyTorch框架;模型训练;视觉识别
0 引言
随着我国经济的快速发展,城市化进程不断加快,人们的生活水平日益提高,生活垃圾数量也随之增长,对环境造成较大压力,我国很多城市面临“垃圾围城”的困扰。目前,我国的垃圾处理方式主要有垃圾填埋、垃圾焚烧和垃圾堆肥3种。虽然这3种处理方式都可以减少一定的垃圾数量,但都不能很好地从生活源头减少垃圾数量,进而减轻生活垃圾引起的环境问题。通过对垃圾进行分类,实现生活垃圾减量化、资源化和无害化,对城市的可持续发展至关重要[1]。2019年《公共机构生活垃圾分类工作评价参考标准》公布,全国推进垃圾分类工作,但实施效果并不理想,各地区仍然存在生活垃圾混合收集的情况,造成不必要的资源浪费和环境污染。
智能垃圾分类旨在实现垃圾分类的自动化和智能化,有效促进垃圾分类的普及,减少不可回收垃圾的数量和减轻垃圾污染的环境问题。目前,国内外已有的智能垃圾分类系统,实用性不强、功能较单一[2],普遍存在的问题有:识别准确率不高导致分类错误;识别速度慢;受温度、光照等环境影响较明显,性能不稳定;缺少详细数据分析,与回收环节难以高效对接。其中,识别准确率低与识别速度慢是该类系统难以实用的关键痛点[2]。
本文基于视觉识别技术,利用深度学习训练垃圾分类模型,提高智能垃圾分类的准确性。在垃圾分类模型中,收集了大量不同类别的垃圾图像,通过手动标注方式,使计算机学习并得到数据隐含的内部关系,提取出更高维、更抽象的数据,使学习特征更具有表达力[3]。
1 系统总体设计
基于视觉识别的垃圾分类箱系统采用软、硬件相结合的方式实现生活垃圾的智能分类。系统软件使用Python和Arduino语言编写。其中,Python是一种解释性高级编程语言;Arduino是一款拥有多个输入输出端的开源开放式硬件可编程控制器。系统整体设计运用Python跨平台的特点,Python给出一个信号,通过串口传送给硬件设备,硬件设备收到该信号后,利用已经烧录好的程序自动处理。通过采集常见的生活垃圾图像集,利用PyTorch深度学习框架训练模型,从海量数据中学习复杂特征;经过反复学习,最终得到训练模型[4],实现垃圾准确识别分类。系统硬件部分主要包括Jetson Nano开发板、Arduino mega2560开发板、舵机、USB高清摄像头等。基于视觉识别的垃圾分类箱系统框图及实物设计图如图1、2所示。
图1 基于视觉识别的垃圾分类箱系统框图
图2 基于视觉识别的垃圾分类箱实物设计图
当生活垃圾放到识别区域时,USB高清摄像头采集垃圾图像,Jetson Nano开发板识别垃圾类别,Arduino mega2560开发板控制舵机动作,使垃圾倾斜掉落到相应的垃圾箱,舵机复位到初始位置,实现生活垃圾的智能分类[5]。
2 功能模块设计
基于视觉识别的垃圾分类箱系统包含视觉预处理模块、模型训练模块、检测识别模块、串口通信模块及控制模块等,工作流程如图3所示。
图3 基于视觉识别的垃圾分类箱系统工作流程图
2.1 视觉预处理模块
为使垃圾分类模型更专注于一般细节并获得更高的准确度,需对垃圾图像进行预处理。预处理方法有模糊、阈值、形态转换等[6],达到去除噪声,控制像素值强度的目的。
基于视觉识别的垃圾分类箱系统的视觉预处理模块主要由Jetson Nano开发板、垃圾图像数据集和USB高清摄像头组成,实现训练集创建。
视觉预处理模块利用Jetson Nano开发板控制USB高清摄像头工作,启动图像拍摄功能,采集垃圾图像。通过人工标注,对垃圾图像进行预处理,包括灰度化处理、图像分割处理等[7],以减少Jetson Nano的GPU计算量,提取物体特征,制作训练集。视觉预处理模块效果图如图4所示。
图4 视觉预处理模块效果图
图像灰度化处理方式主要有分量法、最大值法、平均值法和加权平均法4种。本文分别对这4种方式进行测试,得到人眼对绿色敏感性最高,对蓝色敏感性最低。因此,使用RGB三分量进行加权平均能得到较合理的灰度图像。根据重要性及其他指标,将3个分量以不同的权值进行加权平均[3]。
在真实图像中存在噪声点或者其他干扰因素,视觉预处理模块采用基于形态分水岭的分割算法,从背景中提取近乎一致(类似水滴的)的对象,效果较好。本文目标物体是连接在一起的,图像分割比较困难。形态分水岭分割算法把图像看作一幅地形图,亮度强的区域像素值较大,亮度暗的区域像素值较小,通过寻找汇水盆地和分水岭界线对图像进行分割,逐步完善一个迭代标注过程。本文采用的计算方法由Vincent L.提出,是比较经典的形态分水岭分割算法。在该算法中,分水岭计算分排序过程、淹没过程2个步骤。首先,对每个像素的灰度级进行从低到高排序;然后,在从低到高实现淹没的过程中,采用先进先出(first input first output, FIFO)结构对每一个局部极小值在阶的影响域进行判断及标注。
2.2 模型训练模块
基于视觉识别的垃圾分类箱系统的模型训练模块主要由训练集和PyTorch深度学习框架组成,实现电池、金属、塑料和纸4类垃圾模型的创建。
垃圾模型利用PyTorch深度学习框架学习视觉预处理模块制作的训练集,捕捉并记录图像上垃圾的形状、材质;通过反复学习,对训练集中的图像进行分类;同时将图像素材进行卷积、激励、池化等[7],再输出到输出层。为在保持模型性能较好的前提下降低模型大小,同时提升模型速度,首先,采用轻量级神经网络MobileNet模型,利用深度卷积对不同输入通道分别进行卷积;然后,采用逐点卷积将上层的输出进行结合;最后,修改模型输出层维度为所需分类的个数,使识别准确率提升,从而解决垃圾分类箱系统分类准确率低、识别速度慢、受环境影响等问题[8-13]。
2.3 检测识别模块
基于视觉识别的垃圾分类箱系统的检测识别模块主要由红外对射传感器和USB高清摄像头组成,实现垃圾检测和识别功能。通过红外对射传感器检测垃圾是否进入垃圾分类箱采集区,当检测到有垃圾放入时,Jetson Nano开发板控制USB高清摄像头采集垃圾图像,利用OpenCV函数库捕获垃圾图像当前帧,将当前垃圾与垃圾模型进行比对,判断垃圾类别,输出最终结果。
2.4 串口通信模块
基于视觉识别的垃圾分类箱系统的串口通信模块主要由Python代码和Arduino代码组成,实现Python与Arduino之间的数据通信[12]。
为实现该模块功能,分别需要在Jetson Nano开发板、Arduino开发板、Python编写代码,配置USB0为端口,开发板和Python的波特率一致,为9600。Python发送垃圾类别识别数据给Arduino开发板。在串口通信中为该信息加上奇偶校验位,使“1”的位数为偶数(偶校验)或奇数(奇校验),以此来校验信息传送的正确性。
基于视觉识别的垃圾分类箱系统传输数据信息格式为:1 bit 起始位(一般为0) + 8 bits 数据位(一字节) + 1 bit 校验位(可有可无) + 1 bit结束位(一般为1),一个字节的数据要分为8次,由低位到高位按顺序一位一位地进行传送。
2.5 控制模块
基于视觉识别的垃圾分类箱系统的控制模块主要由Arduino mega 2560开发板和舵机组成。
当Arduino mega 2560开发板接收到Python发送的垃圾类别识别数据时,基于该数据控制舵机对垃圾进行分类。Arduino开发板产生可变宽度的脉冲控制舵机。舵机的基准信号周期为20ms,宽度为1.5ms。当舵机接收的脉冲小于1.5ms,输出轴以中间位置为标准,逆时针旋转一定角度;当舵机接收的脉冲大于1.5 ms,输出轴以中间位置为标准,顺时针旋转一定角度。通过设置不同的脉冲时间将识别出来的垃圾由采集区转入对应类型的分拣箱内。
3 测试验证
本文采用实际测试验证垃圾分类箱系统的功能和运行状态是否符合设计预期。分别使用电池、金属、塑料和纸4类常见生活垃圾进行各50次随机测试,垃圾分类测试准确率结果分析如表1所示。
由表1可知,基于视觉识别的垃圾分类箱系统运行正常,整体分类准确率较高,可较为准确地完成垃圾分类识别。
表1 垃圾分类测试准确率结果分析 单位:次
4 结论
基于视觉识别的垃圾分类箱系统能准确识别4大类常见生活垃圾,达到智能分类的设计目标。下一步将继续完善系统功能,如增加无线网络模块;采用传送履带、机器臂相结合的方式解决混合垃圾分类问题等[14]。
[1] 张莉萍,张中华.城市生活垃圾源头分类中居民集体行动的困境及克服[J].武汉大学学报(哲学社会科学版),2016,69(6): 50-56.
[2] 李航,徐园园.国内分类垃圾桶发展现状与分析[J].安阳工学院学报,2019,18(2):37-39.
[3] 郑远攀,李广阳,李晔.深度学习在图像识别中的应用研究综述[J].计算机工程与应用,2019,55(12):20-36.
[4]DEREK Runberg,透镜.扩展基于NVIDIA Jetson Nano的JetBot智能车功能[J].单片机与嵌入式系统应用,2021,21(10):4-6.
[5] 孟丹.基于深度学习的图像分类方法研究[D].上海:华东师范大学,2017.
[6] 黄一天,陈芝彤.Pytorch框架下基于卷积神经网络实现手写数字识别[J].电子技术与软件工程,2018(19):147.
[7] 林颖,黄泽豪,曾文轩,等.基于视觉识别的垃圾分类系统[J]. 电子技术与软件工程,2021(10):78-79.
[8] 王小燕,谢文昊,杨艺芳,等.基于深度学习的垃圾分类检测方法[J].现代电子技术,2021,44(21):110-113.
[9] 戴聪玲,唐琳杰,谢正华,等.基于Easy-DL平台+树莓派的景区智能垃圾分类系统[J].物联网技术,2021,11(9):67-70.
[10] 李铖.基于Arduino Mega 2560设计的智能循迹探险小车[J].中国新技术新产品,2021(13):36-38.
[11] 李泉坊,姚泽康,陈媛媛,等.一种通过USB监控串口通信的方法:中国,CN113778796A[P].2021-12-10.
[12] 黄鹏,徐燕.基于Arduino和语音识别的智能垃圾分类系统[J].电子技术应用,2021,47(8):72-75,80.
[13] 刘旭东,张艳芬,赵俊杰.基于ROS和计算机视觉的智能垃圾分类系统设计[J].电子制作,2020(23):45-46,60.
[14] 余骁,刘硕.基于深度学习与单片机的智能垃圾分类系统设计[J].物联网技术,2021,11(12):107-109.
Garbage Sorting Bin System Based on Vision Recognition
XIE Xiaoming1XU Jianhui2CHEN Feiyan2
(1.Guangzhou True Light High School, Guangzhou 510380, China 2.Guangzhou High Genius Dynamics Co., Ltd. Guangzhou 510000, China)
Aiming at the waste of resources and environmental pollution caused by the mixed collection of domestic waste, taking the intelligent waste sorting bin based on PyTorch as an example, a set of waste sorting bin system based on visual recognition is designed. The PyTorch framework is used to train and identify the models of four kinds of common domestic waste: battery, metal, plastic and paper; Arduino controls Jetson Nano development board, Arduino mega2560 development board, steering gear, USB HD camera and other hardware to complete the classification of these four types of garbage.
refuse classification; PyTorch framework; model training; visual recognition
广州市荔湾区科技计划项目(201904009)
谢小明,徐建辉,陈飞燕.基于视觉识别的垃圾分类箱系统[J].自动化与信息工程,2022,43(1):49-52.
XIE Xiaoming, XU Jianhui, CHEN Feiyan. Garbage sorting bin system based on vision recognition[J]. Automation & Information Engineering, 2022,43(1):49-52.
谢小明,男,1981年生,本科,中学一级,主要研究方向:中小学人工智能科普教育、中小学信息技术与学科融合。E-mail: mingo.x@qq.com
徐建辉,男,1994年生,本科,工程师,主要研究方向:人工智能与机器人。E-mail: xjhmax@126.com
陈飞燕,女,1997年生,专科,助理工程师,主要研究方向:中小学STEM人工智能教育。E-mail: 842233583@qq.com
TP242.6
A
1674-2605(2022)01-0009-04
10.3969/j.issn.1674-2605.2022.01.009