徐 丽,刘易知,王泽龙,郭金帅,丁稼绮
(长沙理工大学电气与信息工程学院,湖南长沙 410014)
垃圾围城是我国当前城市管理的一大难题,仅2020年新增可回收垃圾总量便超过30亿t。填埋、焚烧等传统垃圾处理方式占用大量土地资源,影响空气质量,容易对环境造成二次污染。因此可回收垃圾的减量化、无害化、资源化已成社会亟待解决的重要课题[1]。
现有的机械自动化虽然可以提高分拣效率,但无法识别垃圾种类。在当前人工智能盛行的大背景下,“深度学习算法”的提出,基于大数据的大规模计算、视觉分析等一系列技术的不断创新,人工智能分拣设备应运而生[2]。目前国外处于研究阶段的可回收垃圾前、后端分拣的智能设备比较多样,前端如美国CleanRobotics 公司开发的Trashbot 智能垃圾桶;后端如麻省理工计算机科学和人工智能实验室2019年开发的Rocycle 垃圾回收分拣机器人。国内,上海的一款前端GPS 垃圾回收机器人已实现了垃圾的智能识别,但对后端分类的研究,国内还处于一片空白。
为响应国家建设绿色、生态中国的号召,团队研发的产品针对我国可回收垃圾的后端处理问题,完成了可回收垃圾重新生产利用环节的最后一块拼图。在保证了商业价值的基础上,兼顾了社会效益,为可持续发展做出了实质性的贡献。
整套分类系统由卸货斗、震动喂料机、摄像头、主副传送带、机械臂、包装机、收集器组成。其中,垃圾顺着卸货斗进入震动喂料机,在此处进行初筛,实现垃圾的初步分离。然后通过喂料机出口的识别扫描仪,被摄像头进行拍摄,图像通过视觉系统完成识别。当系统无法识别出垃圾种类时,垃圾会经主传送带运输到末端的收集器中。如系统成功识别垃圾,则其会随着主传送带进行运动,当移动至对应类别的机械臂分拣区后,机械臂会夹取该垃圾至对应类别的副传送带上,再由副传送带运输到包装机处。
团队以越疆MG400为基础,对该机械臂机身以及爪形等硬件配置进行升级,机身主体部分更换为更高强度的金属复合材料,体积增大三倍,有效荷重从12 kg 提升至18 kg,提高50%,工作耐温极限从55 ℃提高到90 ℃,提高64%,最高功耗可到1 000 W。
该机械臂采用四轴结构,其大小臂和底座三部分实现机械爪在X、Y、Z 三轴的位置定位,末端舵机的旋转R 轴,则可以使爪子从多个不同角度对垃圾进行抓取。如图1所示为机械爪结构图。
图1 机械爪结构图
机械爪部分采用一臂多爪设计,单个机械臂上搭载有多个规格不同的机械爪,根据视觉系统识别的结果,底座旋转,选取最适的爪型。如图1机械爪结构图中1、2部分所示,采用基础的外夹式爪型,可对常见形态的垃圾进行抓取,区别在于1号爪尺寸较小,对小体积垃圾有更好的拾取效果。3号爪采用真空吸盘结构,吸盘中间留有气孔,当吸盘贴合片状垃圾表面时,气泵工作,通过管道将接触面的空气抽空,对垃圾进行拾取。测试极限状态下,该吸盘可稳定吸附起21 kg 金属板。
此外,机械臂整体以及卸货斗、喂料机和收集器都会进行特殊防锈、防腐处理,例如酸洗磷化处理,防止金属在长期潮湿的环境中生锈,或被垃圾液腐蚀,延长使用寿命[3]。
(1)震动喂料机:主体部分为电动机,振动台以及缓冲器。装置使能后,电动机带动倾斜的振动台工作,使堆叠着的垃圾分散开,并送至主传送带前端。缓冲器安装在振动台和基座之间,稳定振动台的运动[4]。
(2)摄像头:对垃圾进行摄像扫描,将数据传输至后台进行分析。
(3)传送带:分为主传送带和副传送带。主传送带将初筛后的垃圾运输至机械臂分拣区,再由相对应类别程序的机械臂将垃圾夹取至该类垃圾的副传送带上,通过副传送带运输至包装机进行包装。
(4)收集器:副传送带末端的漏斗型金属装置,将各类垃圾收集运输到包装机中。
(5)包装机:主体结构为压缩装置、打包系统、液压系统及机架。包装机将收集器汇集的垃圾进行压缩,缩减固体垃圾的体积,压缩后的垃圾块将传送至打包系统自动打包。
系统最初设想:收集足量数据集,训练出多个模型,再根据试验结果选择最终模型。
由于可回收垃圾分类并无相关数据集,因而系统最初数据集是由网络爬虫爬取,再进行数据筛选与清洗后所得。测试时,系统识别准确率极低。采用更换模型、图像增强、调整训练参数、增加训练轮次等方式,也都收效甚微。这违背了深度学习独立同分布[5]的假设。深度学习对大规模训练数据极其依赖,需要大量数据去理解潜在的数据模式[6][7]。即:模型对未来数据的预测与模拟,是建立在对现有数据的训练学习上的。
于是使用迁移学习的方法,放宽了独立同分布的假设,目标域中的模型无需从头训练,可显著降低目标域对训练数据与训练时间的需求,前后共自主拍摄五万多张五类可回收垃圾的数据集。
系统识别准确率不稳定,存在波动,有时甚至呈直线式下降、降至随机水平。
于是使用图像降噪的方法进行处理。因传送带近似于黑色,对应RGB 3个通道的数字较小,故设定一个背景噪声处理机制,即先使已固定好方位及角度的摄像头对未运载垃圾的传送带不间断地拍照,再利用OpenCV 库将拍摄到的传送带及传送带外的背景环境进行分离,并使用RGB 值为(235,235,235)的颜色填充背景环境。当传送带运载垃圾时,继续沿用此机制即可。
一次偶然的试验中,系统出现误将传送带识别成垃圾的情况。由于此情况发生概率极低,因而试验前期并未发现此问题,以下是解决方法的优化过程:①拍摄大量传送带图像并为其建立数据集,再将传送带图像数据与可回收垃圾图像数据一起进行训练。最终的试验结果证明了此种方法的可行性。②优化代码结构。采用阈值管理的方法。即通过试验确定一个阈值,当识别系统给出的关于每类垃圾的置信度存在于此阈值范围内时,激发机械臂控制程序;反之则不激发,识别系统继续处理下一张垃圾图像。该方法不仅继承了上述两种方法的优点,还具有代码更简洁、使用参数更少、适用场景更多、可根据不同的需求进行相应调整的优点。
4.4.1 图像处理
利用OpenCV 中的resize 函数将图像调节为预定大小。反复试验确定降噪阈值,当图像背景的RGB平均值低于100 时,将背景颜色改为(235,235,
235)。
基于Python 语言并结合其自带的GUI—Tkinter编写了一个可对图像亮度与对比度数值大小进行可视化调节的界面。当外界灯光环境变化导致识别准确率下降时可调用此界面对拍摄到的垃圾图像进行调节。
此功能原理如下。其中,a 代表对比度的数值,b 代表亮度的数值,img_original 表示原图,img_new表示调节后的图片。
img_new=a*img_original+b
图像经过处理后会被送入预先训练好的模型中进行识别。
4.4.2 识别系统
训练数据利用了Keras库中的ImageDataGenerator函数进行数据增强,每轮的batch_size 为128,并运用了迁移学习的方法将预训练好的CNN 模型——InceptionResNetV2 及其权重作为起点,再加上GlobalAveragePooling2D 层和Dense 层对可回收垃圾的数据集进行训练。训练好的模型以H5文件的格式被存储在了系统中,系统运行时将自动载入此H5文件。模型编译语句如下:
model.compile(optimizer=Adam(1e-4),
loss='categorical_crossentropy',metrics=['acc'])
模型训练10个epoch 后的准确率及损失率的变化曲线如图2所示。
图2 准确率及损失率变化曲线
试验时测试的所有模型及其准确率,如表1所示。其中每种模型每种垃圾分别试验750 次,合计试验750×5×5=18750次。
表1 各模型的实验准确率(%)
经过各方面综合分析与比较,最终选定InceptionResNetV2。模型识别完成后将输出一个关于五类可回收垃圾的结果向量。
4.4.3 决策程序
利用Numpy 库中的argmax 函数取出结果向量中的最大值,并判断此最大值是否在[0.7,1]的区间内。是,则舍弃此垃圾;否,则返回此最大值所对应的索引并根据最终输出的索引控制相应的机械臂进行抓取,0到4分别对应塑料、布料、废纸、玻璃和金属。当返回的索引值为-1(用户摁下键盘上的“q”键退出了程序)与-2(传送带停止运动)时,模型将被关闭、程序也将停止运行。当以上两个因素都调整好之后重新运行main.py 文件,系统即可再次进入工作状态。
装置应用了深度学习原理,利用多层神经网络和视觉系统来对可回收垃圾的种类进行识别,并控制机械臂的运动来对垃圾进行自动分拣。大大提高了可回收垃圾分拣的效率,实现了智能化分拣,对于绿色城市建设将有很大的经济与社会效益。