基于深度学习的智能垃圾分类系统设计
2022-09-21陈牧图谭睿石垒垒冯月芹
陈牧图,谭睿,石垒垒,冯月芹
(南京工程学院,江苏南京,211167)
0 引言
随着人们生活水平的提高,人均拥有的资源不断增多,垃圾产生量增多,这使得我们面临着垃圾围城的困境。放眼国外,发达国家普遍采用垃圾分类回收、针对处理的方法,同时,垃圾分类也是中国必然的选择。环境问题的日益突出对日常生活、城市发展以及自然环境都造成了极大的影响,这些问题已然使垃圾分类成为刻不容缓的需要。
新型智能多功能自动分类垃圾桶,它通过将传统标签垃圾桶与智能自动化装置有机结合,有效解决了传统的垃圾处理方式对环境带来的污染问题、国家土地资源的占用问题以及可回收资源的浪费问题,并且为环卫从业者和因为工作或生活需要缺少时间进行垃圾分类的人群提供便利。
将深度学习技术应用于垃圾分类处理的方法,通过引入机器视觉拍照、深度学习识别和自动投放装置代替人工进行垃圾分类。利用OpenMV摄像头采集图像信息,以谷歌TensorFlow 为框架,进行数据集的训练,上述训练得到的最优模型进行格式转换,使用 TensorFlow Lite converter转换器将最优模型转换为TensorFlow Lite 能够识别的tflite 格式模型文件,它可以直接应用于OPENMV摄像头的控制器,以此进行下一步的识别操作。OPENMV将识别后的垃圾信息计算处理之后,再通过串口通信传给STM32单片机,通过单片机控制舵机转动进行垃圾槽的选择,转至对应的分类垃圾槽,同时利用大屏幕显示垃圾的种类以及投放垃圾的数量等信息。
此项目不仅具有理论价值,也有很强的实用价值。与人工相比,智能分类垃圾桶在降低垃圾分类错误率的同时,也提高了回收处理的时间、资源效率。在一定程度上节约了社会资源,美化了生活环境,提高了人民的生活质量。
1 系统设计
智能分拣垃圾桶系统设计框图如图1所示。该系统以stm32f407单片机作为控制核心,集成了识别感应、分拣控制、和满桶检测三大模块,识别感应通过一块光电传感器和一个openMV摄像头模块实现,先由光电传感器感应是否有垃圾投入,再由openMV通过训练好的神经网络模型检测垃圾种类;分拣控制通过操控舵机转动实现;满桶检测模块通过超声波测距检测桶内垃圾高度,以此通知单片机。而光电传感器摄像头和单片机之间的通信方式采用串口通信。
图1 系统设计图
1.1 图像采集
采用OPENMV H7 PLUS,OpenMV4 H7是本文选用的摄像头模块,它集成了一块STM32H743芯片,主频400M,内存2M,运行速度快,低功耗,低成本的电路板,可以通过MicroPython编程,Python的高级数据结构在机器视觉算法中处理复杂的输出有更大的优势。用Python控制OpenMV,相对更加容易地使用外部终端触发拍摄或者执行算法,也可以把算法的结果用来控制IO引脚。
测试中以4种不同的常见垃圾作为研究对象。拍摄时以白纸为背景,采用openMV4plus摄像头模块进行拍摄,进行正面和侧面等多角度拍摄。共获取样本图像1355幅,包括苹果418幅,电池219幅,矿泉水瓶321幅,口罩397幅。图像样本示例如图2所示。本实验搜集的垃圾数据集较少,为了减少训练误差,采取了适应最短轴(fit shortest axix)处理图像,将较长轴的外部裁剪为所需的纵横比,然后插值到所需的大小。为了获得迁移学习模块的最佳准确性并满足MobileNetV2模型的输入要求,将垃圾样品图像像素统一调整为96×96,将颜色格式设置为“RGB”,图像格式保存为jpg 格式。并将79%的图像作为训练数据集,剩下的21%作为测试数据集。
图2 垃圾样本示例(a)苹果(b)矿泉水瓶(c)电池(d)口罩
1.2 压力检测模块
当垃圾箱的垃圾超过一定容量时,可以用语音模块实现提示信息。设计采用HX711压力检测模块。该模块配置于垃圾桶桶盖与桶箱之间,用于检测垃圾桶是否已经装满。对比上一次投放状态,在本次投放动作结束时,若垃圾未满溢至桶盖处,模块不会检测到挤压力;若垃圾已堆积到桶盖处,在桶盖关闭完成前,压力检测模块会收到来自桶盖和桶内垃圾的上下侧的挤压力,若在挤压动作过程中检测到压力大于0.5kg,单片机则会驱动LED 灯常亮,同时操作语音模块报警,提醒用户取走桶内垃圾。
1.3 语音报警模块
垃圾超出设定的阈值时,语音提示“垃圾满”;语音提示模块采用SYN6288。SYN6288模块通过异步串口接收指定文字,实现文本到语音(TTS)的转换。
1.4 步进电机驱动器
选用2个57 步进电机作为桶盖转轴以及分类桶转轴,以TB6600驱动器驱动旋转。TB6600驱动器1控制电机1转轴旋转到桶口,然后TB6600驱动器2控制电机2桶盖打开,垃圾自动投放到对应箱体中。
1.5 显示模块
自动播放广告信息和图片宣传,采用7寸的TFT电容屏。显示内容:垃圾的数量,几类垃圾投放的顺序,所有垃圾投放时间,垃圾桶是否满载提示。
2 机械设计
智能分类垃圾桶整体采用全封闭式设计,并在正平面上端留下一个垃圾投放口。口内固定一个垃圾识别盒状空间,包含OpenMV摄像头、传感器与拍照平台。附近安置一个主控盒,放置单片机、电路等。桶身采用圆柱型,平均分为4部分用以盛放4种垃圾,驱动装置采用一个舵机,连接一个形状为3/4圆的桶盖,与舵机同步旋转。当在光电传感器感应到有垃圾投入后并且openmv识别到垃圾并分析出垃圾种类时,stm32控制舵机旋转到指定位置,等待垃圾投进后通过圆形桶盖的缺口落入指定桶中,完成分类工作。结构图如图3所示。
图3 机械结构图
3 软件设计
3.1 卷积神经网络
卷积神经网络(Convolutional Neural Networks, CNN)是一种前馈神经网络,包含了卷积计算,具有深度结构,是深度学习的代表算法之一。它包含输入层和隐含层,而隐含层包含卷积层、池化层和全连接层3类常见构筑。一般有正则化(regularization)、分批归一化(Batch Normalization,BN)、跳跃连接(skip connection)等方式优化网络,以及量化(quantization)、迁移学习(transfer learning)、FFT 卷积、权重稀疏化等方式加速训练。参数整定的范围包括:学习率(learning rate)、批次大小 (batch_size)、迭代次数、激活函数、优化器(optimizer)等。
3.2 迁移学习
迁移学习是一种机器学习方法,一般指将从源领域(Source Domain)的学习成果应用到目标领域(Target Domain)上去的方法。在开发过程中,已经消耗了巨大的时间与计算资源的预训练模型往往作为新模型的起点,将已习得的强大技能迁移到相关领域的新问题上,这个方法避免了重新训练模型,节省大量资源。开发时可选择预训练。开发流程一般分以下四步:
(1)选择源任务:选择一个在输入和输出方面与目标任务有着一定映射关系的原任务。
(2)开发源模型:为任务开发一个高效率的模型。
(3)重用模型:将已开发完成的现有模型作为用于新任务模型的学习起点,节省资源。
(4)调整模型:整定参数,微调模型,使之更好地适应目标任务要求。
预训练一般只需经历选择源任务、重用模型、调整模型三步,较为常用。
3.3 模型选择与构建
从2014年VGG诞生以来,深度学习网络模型在图像处理中的计算能力越来越强,适应能力越来越好。但是相应的,高效率神经网络占有的空间也越来越大,结构越来越复杂,预测和训练对硬件条件的要求越来越高,导致这种神经网络模型往往只能与高算力、高成本机器相绑定。移动设备因硬件资源有限,对深度学习网络模型处理能力也有限。在深度学习领域内也有神经网络小型化发展的趋势。而MobileNet类的神经网络模型显然在移动设备与嵌入式设备的引入应用中拥有极大的优势,在保证模型准确率的同时体积更小,计算量更少,速度更快,准确率更高。
模型结构方面,实验采用的MobileNetV2模型中主要引入了线性瓶颈层(Linear Bottleneck)和反转残差层(Inverted Residuals),网络的结构也因此得以进一步优化。在MobileNetV2网络模型中共有17个瓶颈层,一个标准卷积层(conv),两个逐点卷积层(pw conv),共计54层可训练参数层。训练流程图如图4所示。具体描述如下。
图4 算法流程图
1)图像预处理。将采集到的垃圾图像进行缩放、二值化等预处理,以此实现数据集的优化。并将垃圾样本图像大小统一调整为96像素×96 像素,方便后续的操作。
2)输入垃圾图像样本。随机从垃圾图像数据集中抽取 4种垃圾种类图片79%,作为训练样本输入。
3)基于预训练 MobileNetV2 模型整体构架构建垃圾识别模型。
4)参数的迁移和微调。通过参数迁移方式初始化预训练MobileNetV2模型参数,通过学习率,学习周期等训练参数的设置,在训练期间随机转换数据,从而允许在不过拟合的情况下执行更多训练周期,提高准确率。
5)模型的测试。从垃圾数据集中抽取余下21%垃圾样本图片,作为测试样本对模型进行测试,以验证模型的精确度。
4 结果分析与性能评估
本文所设计的智能分类垃圾桶能实现较为精确和快速的预测结果,从而做出正确的分类决策。文中基于深度学习网络的训练数据均来自于作者自己拍摄的图片,数据集包含1355张图像,包含的类别有食物类、电池类、口罩类、矿泉水瓶类的4个类别。为验证模型的有效性,进行了精确度实验。模型实验的样本准确性如图5所示。
图5 模型测试结果
从图5中可以看出,对于这四种垃圾的识别准确率都达到了98%以上,识别效果较好,组装成整机后的实验效果也较好,在接收到数据且垃圾桶未满桶的情况下,可以快速而精确地识别出对应的垃圾种类,在显示屏上显示其种类英文名,并驱动舵机和指示灯做出相应反应。
5 结语
针对传统垃圾分类方法效率低、准确度不高的问题,本文提出了一种基于 MobileNetV2模型、迁移学习和stm32f407单片机的垃圾分类方法和系统设计。用迁移学习的方法把在edge impulse上训练的 MobileNetV2网络迁移到自己的数据集上进行微调,并通过“数据增强”功能在训练期间随机转换数据来防止模型过拟合,提高模型的泛化能力与准确度。通过对比试验表明,文中提出的模型的平均准确率达到了98.85%,能够对垃圾进行有效分类并通过硬件设备完成分拣工作。