章 玲, 张 勇, 黄灵钧
(闽南理工学院, 福建 石狮 362242)
人类每天都会产生许多垃圾,在一些垃圾管理较好的地区,大部分垃圾会得到卫生填埋、焚烧以及堆肥等无害化处理,而更多地方的垃圾则常常被简易堆放或填埋,导致臭气蔓延,并且污染土壤和地下水。垃圾分类的目的就是为了将废弃物分流处理,通过现有的生产制造能力进行回收利用,包括物质利用和能量利用,以减少环境污染。传统垃圾分类主要由人工进行分拣和分类,劳动强度大、分选效率低。为了提高垃圾分类的效率,保护生态环境,垃圾分拣的自动化势在必行。
基于深度神经网络的垃圾分类系统,可以实现垃圾自动分类[1-3]。该系统包括以下模块:
1)以K210 为主控的图像识别模块。
2)最大供电功率为30 W 的太阳能板供电模块。
3)以STM8 为主控的分拣模块。
在垃圾分类系统中,图像识别模块通过串口与分拣模块进行通讯,接收到指令的STM8 单片机通过红外对管检测,确认垃圾桶未满。然后,用PWM信号控制由2 个舵机组成的二维分拣云台,将垃圾倒入指定的垃圾桶。为方便部署,该系统的供电模块采用太阳能板加电池的模式。为了提高太阳能的利用率,采用MPPT 算法让太阳能电池板工作在最大功率点。
垃圾分类系统中的图像识别模块基于深度神经网络(DNN)实现垃圾分类,有大量卷积、批归一化、激活以及池化的数学运算。K210 内部搭载一个KPU(即通用的神经网络处理器),可以在低功耗情况下实现卷积神经网络计算,并且可计算加速。因此,该模块的主控芯片采用K210。
该系统中的垃圾分拣模块采用STM8S00K3T6C作为主控,垃圾桶主要结构采用亚克力板搭建而成,结构如图1 所示。分拣云台动力部分采用180°舵机驱动,控制方式则是通过STM8S00K3T6C 主控发出50 Hz 不同占空比的方波进行控制[4]。
图1 垃圾分类系统结构
在垃圾分拣模块中还集成了自动补光电路、降压电路、垃圾桶防溢出检测电路以及报警电路,电路结构如图2 所示。
图2 垃圾分类系统电路结构
1)在自动补光电路中可分为两部分,一是LED驱动电路,该电路采用的是S8050 和AMC7135 的方案,AMC7135 为LED 提供一个350 mA 的恒流驱动电源,S8050 则用于放大STM8 的驱动电流。二是光强度传感器电路,该电路采用光敏电阻实时监测光强度,通过STM8 自带的硬件ADC 读取光敏电阻的电压值,并转换成光强度,进而在光线暗的时候打开补光灯,协助图像识别系统完成垃圾的分类。
2)降压电路则是采用线性稳压的形式为单片机等元器件提供稳定的工作电压。
3)垃圾桶防溢出检测电路采用红外对管检测垃圾桶是否已装满垃圾,若满,则停止垃圾分拣。
4)报警电路是由蜂鸣器和垃圾已满指示灯组成,若红外对管检测到垃圾桶已满,则指示灯亮起,并发出警报。
该系统中的供电模块使用的是一块尺寸为600 mm×400 mm、峰值电压为18 V、峰值电流为1.66 A的单晶太阳能发电板。电池采用的是能量密度大且较为安全的18650 锂电池,将3 个容量为2 600 mAh、放电倍率为5C 的18650 锂电池串联成电池组,较大的电池容量确保了在连续阴雨天气垃圾分类系统也能依靠电池正常工作。
当然,除了太阳能发电板和蓄能电池,给电池充电还必须由控制器将太阳能板发出的电能转化成电池能接受的形式。在该垃圾分类系统中,采用的是MPPT 控制器。普通的控制器一般采用的是PWM控制方式,该方式与MPPT 控制器相比,明显的缺点就是效率较低。原因就在于太阳能发电板在不同温度下最大功率输出点的电压值是不一样的(如图3 所示),普通PWM 控制器无法追踪太阳能发电板的最大功率点,而MPPT 控制器可以。本系统中采用MPPT 控制器的参数为输入电压,为20 V,最大恒流电流为3 A,输出电压为12.6 V(电池充满时)。
图3 光伏电池输出特性随温度的变化曲线
采用MobileNet V1 网络实现垃圾目标分类,Mo bileNet 网路是一种轻量级网络,专门为嵌入式设备设计,可以在稍微降低准确度的情况下大大缩减模型的参数量。MobileNet V1 版本将标准卷积替换为深度可分离卷积,能够有效减少计算量和模型参数。使用深度可分离卷积的MobileNet,相比于使用标准卷积的MobileNet,在ImageNet 数据集上的精度下降了1.1%,但是,模型参数减少了约7 倍,加乘计算量减少了约9 倍。
模型的训练采用TensorFlow作为训练框架,流程如图4 所示。
图4 基于TensorFlow 框架的模型训练与部署
训练集使用了总共1 600 张照片,分为有害、可回收、厨余和其他垃圾四大类,每类各准备2 个垃圾样品,每个样品200 张照片。本地训练环境使用了显卡进行加速,大大提升了模型训练速度。由于Tensor-Flow 框架训练得到的模型是.h5 或.tflite 格式,而K210 中的KPU 只认.kmodel 格式的模型,因此,必须将模型转化为.kmodel 格式的模型。这里可以用NNCase 工具来完成模型的转化。
通讯部分采用的是串口通讯,通讯格式为头帧+垃圾类别+垃圾编号+结束帧。其中,垃圾编号由4字节组成,可存入大量生活中的垃圾。校验方式采用的是奇校验,能够有效避免数据传输出现错误。
垃圾分类模块程序部分采用C 语言编写,主要实现了垃圾桶是否装满检测、光照条件是否满足图像识别、舵机云台驱动以及报警驱动等功能,程序框架如图5 所示。
图5 垃圾分拣模块程序框架
垃圾分类模型的训练以MobileNet 0.75 为主干网络,训练参数如下:训练次数为100、批量大小为32、学习率为0.001。
从图6 中可以看出,当所有训练集都训练过200次后,模型精度可以接近100%。为了探究实际效果,我们将该模型部署于K210 上,并进行了100 次分类识别测试,最终的测试结果仅有3 次识别错误。由于采用了轻量级网络MobileNet,分类速度大大加快。
图6 模型训练过程
近年来,随着科技水平的不断发展,人们的生活水平不断提高,物质需求得到很好的满足,同时,生活垃圾的产生量也在不断增长,生态环境污染不断加重,成为制约我国新型城镇化发展的重要因素[5-6]。妥善有效地处置生活垃圾可有效提升环境承载力,促进资源回收利用,为人民群众营造干净整洁的宜居环境,从而加快提高我国新型城镇化发展质量和生态文明建设水平。
深度学习是近十年来人工智能领域取得的重要突破。它在语音识别、自然语言处理、计算机视觉、图像与视频分析和多媒体等诸多领域的应用取得了巨大成功。现有的深度学习模型属于神经网络。神经网络的起源可追溯到20 世纪40 年代,曾经在20 世纪八九十年代流行。神经网络试图通过模拟大脑认知的机理解决各种机器学习问题。1986 年,鲁梅尔哈特(Rumelhart)、欣顿(Hinton)和威廉姆斯(Williams)在《自然》杂志发表了著名的反向传播算法用于训练神经网络,该算法直到今天仍被广泛应用。如今深度学习算法已经发展成熟,为此本文对基于深度学习算法的垃圾分类系统的整体设计进行了说明,介绍了具体可行的软硬件方案,并通过实验测试验证系统的稳定性和准确性。