智能垃圾分类系统的设计

2024-01-08 12:14朱毅泓郭常盈苏智宇
现代计算机 2023年20期
关键词:舵机垃圾桶界面

朱毅泓,郭常盈,苏智宇

(南阳理工学院信息工程学院,南阳 473004)

0 引言

随着人民生活水平的日益提高,垃圾的产生量也随之增多,如果处理不好,将会对人们的居住环境带来巨大的威胁[1]。垃圾分类是垃圾处理的基础,需要全社会群众的广泛参与,由于大多数人在垃圾种类区分方面存在一定的困难,导致人工处理垃圾分类工作存在耗时较长、效果不理想以及影响工作人员健康等问题。于是各种智能垃圾分类系统应运而生。目前不管基于深度学习算法还是应用垃圾分类APP 进行垃圾分类识别的,都没有将智能垃圾分类和垃圾桶控制进行有机结合,即识别后还需要人们手动打开对应的垃圾桶盖进行垃圾投放。

为了解决这一系列问题,本文充分利用人工智能技术,基于深度学习理论构建和训练垃圾分类模型,让对垃圾分类规则不太熟悉的用户轻松实现垃圾分类。并且根据垃圾识别结果,通过硬件控制电路打开对应的垃圾桶盖,使得用户可以无接触完成垃圾的精准投放。

1 垃圾分类系统设计

1.1 系统总体设计

根据垃圾分类的工艺流程,要求所设计的智能垃圾分类识别系统能够通过摄像头对垃圾拍照,上传垃圾图片后通过图库比对能够快速、准确地识别垃圾种类,并且根据识别结果启动驱动控制,打开对应垃圾桶盖,使用户能够准确地将垃圾投放到对应的垃圾桶。当然要想完成图库比对,事先还需要构建和训练好垃圾分类模型。因此,所设计的智能垃圾分类识别系统必须具有以下几个子模块:垃圾分类模型的构建与训练、摄像头拍摄垃圾照片、图库对比分析、驱动控制等功能模块。为了便于用户进行数据显示、参数设置和操作控制,需要设计一个图形用户界面,由上位机提供;其他的设备作为下位机,根据功能,这里设置两个下位机。所以整个系统需要软硬件相互结合、上下位机共同协作。其系统功能实现框图如图1所示。

图1 系统功能实现框图

1.2 垃圾分类模型的构建和训练

智能垃圾分类系统的核心是垃圾分类模型。在进行垃圾分类模型的构建与训练时,通过选取网络图片,收集大量垃圾图像作为训练数据集。为了方便后续的训练以及保证数据集的特征具有一致性和有效性,需要对图像数据进行清洗。所设计的数据集包含可回收物、厨余垃圾、有害垃圾、其他垃圾等4 个大类、245 个子类,约计8万张图片用于训练[2]。训练中对于数据集采用八二划分方式,即训练集占据八份,测试集占据两份。

基于深度学习的图像识别会由于数据量的局限性,导致模型提取特征有限,进而影响识别的准确度。目前,一种常用且非常高效的优化方式便是使用预训练网络模型,将一个已在大型数据集上训练好的模型作为基础模型,在此基础上对自己的数据集再进行训练,即使新的数据集和原始数据集完全不同,也可以得到很好的特征提取。模型训练的流程如图2所示。

图2 模型训练的流程图

因此,本文对于垃圾识别模型的构建是基于TensorFlow2.3 实现的MobilenetV2 模型的迁移学习[3-4]。首先,通过tf.keras.applications 来加载MobilenetV2 模型,冻结主干的特征提取网络参数;其次,为了保证每一批次训练的数据的分布一致,最终使得构建的神经网络模型容易收敛,对数据进行了归一化处理;再次,全局平均池化和设置全连接层,以此来达到分类效果;最后,设置训练轮数,开始训练。训练完成后需要对模型进行精度测试,测试要求采用与训练数据集不同的数据集,而且需要多轮精度测试。本文每一轮测试都是采用4001 张图片进行测试。最终测试结果表明,本次训练的模型的精度高达0.829,已经达到预期要求。

1.3 硬件电路设计

系统硬件电路主要包含两块主控芯片、舵机及用于连接的舵机拓展板等。遵循经济实用、已开发、易维护的设计理念,本文选择ESP32-CAM、ESP8266-NodeMCU 作为下位机。ESP32 硬件平台中的MCU 芯片可以独立运行应用程序,其主要载体可以通过SPI/SDIO 或12C/UART 接口提供Wi-Fi 或蓝牙功能[5]。为了避免拍摄的图片出现水纹,使用ESP32-CAM 时注意输入电源至少要5V2A,其GPIO32 管脚控制摄像头电源,当摄像头工作时应当把GPIO32 拉低。由于IO0 连接摄像头XCLK,使用时也应当把IO0 悬空,不接高低电平。

若实现垃圾桶的自动开合,需要将舵机与垃圾桶进行物理连接,本文舵机采用SG90。SG90 三根数据线:棕色线GND、红色线VCC、黄色线SIG。四个垃圾桶需要四台SG90 舵机,即有十二根线需要连接,这里通过加入舵机拓展板来解决线路复杂问题。舵机拓展板直接与SG90 舵机连接,则通过杜邦线与ESP8266-NodeMCU 进行连接,以此来达到ESP8266-NodeMCU 控制多台舵机的目的。同时,为了保证固定在舵机上的连杆能够顺畅地随着舵机运动而运动,这里是将舵机通过胶水固定在垃圾桶内部,并在垃圾桶背部开孔,将舵机的数据线牵引出去,方便与ESP8266-NodeMCU 的舵机拓展板进行连接。将连杆与舵机组装到一起,并通过计算PWM 得到实际舵机需要向上转动的角度,舵机向上转的同时带动连杆,连杆顶开垃圾桶盖。舵机复位后,在重力的作用下,垃圾桶盖会自动回落,以此来达到自动开合垃圾桶的预期。

1.4 软件设计

软件部分包括用户界面的构建、对下位机1发送的视频流进行处理、使用训练好的模型完成垃圾分类、向下位机2发送相关操作指令。其中,前三个为前端程序,最后一个为后端程序。

前端程序设计,即上位机用户界面应用Qt Designer 与Python 制作而成,使用的IDE 是Pycharm。所设计的用户主界面如图3(a)所示,用户可分别选择摄像头的开启与关闭、实时显示ESP32-CAM 拍摄到的视频流、拍照并显示拍照的内容、对拍摄照片进行识别等按钮。当用户进行识别操作后,将弹出用户子界面,如图3(b)所示。新界面会显示用户拍摄的照片、识别出来的垃圾种类、垃圾名称以及一些简短的相关介绍。此界面还有两个按钮,一个再次打开垃圾桶按钮,是为了防止初次打开垃圾桶时用户未将垃圾及时放入而设计的;另一个按钮是返回按钮,返回主界面。

图3 用户界面

后端程序设计除前面所讲述的垃圾识别模型的构建与训练之外,还有舵机转动设计、上下位机之间的通信程序设计等。电路供电后,下位机ESP8266-NodeMCU 以及ESP32-CAM 调用自身的Wi-Fi 模块,分别和上位机建立网络通信,其Wi-Fi 模块调用程序流程如图4 所示。上位机和下位机之间的信息传送,即为通过Wi-Fi模块导入socket 库,开启UDP 套接字进行的数据传输通信,如图5所示。

图4 Wi-Fi模块调用流程

图5 UDP套接字

2 系统测试及结果分析

所设计的垃圾分类识别系统实物图如图6所示。

图6 垃圾分类识别系统实物图

将ESP8266-NodeMCU 与ESP32-CAM 中所要运行的程序改名为main.py,通过充电宝给ESP8266-NodeMCU 和ESP32-CAM 供电。打开手机热点,电脑连接,以此保证上机位与下机位处于同一网络环境中。

运行上位机主程序,电脑端将出现用户主界面。在此界面,点击拍摄按钮,所要识别的垃圾图片逐一显示在主界面窗口。再分别点击识别按钮,结果如图7 所示。其中,图7(a)垃圾是眼药水,识别为有害垃圾;图7(b)垃圾是豆子,识别为厨余垃圾;图7(c)垃圾是回形针,识别为可回收物。对比垃圾实物,可知以上垃圾类型识别均正确。

图7 垃圾类型识别结果

下位机ESP8266-NodeMCU 调用自身Wi-Fi模块实现与电脑之间的通信。垃圾识别结果在用户子界面上显示,并将识别内容通过Wi-Fi模块发送相应的消息给ESP8266-NodeMCU,ESP8266-NodeMCU 根据消息内容控制相应的舵机,并打开对应的垃圾桶盖。如图8(a)所示,用户主界面上显示将要被识别的垃圾是泡沫板,泡沫板经模型识别为可回收物垃圾,因此可回收物垃圾桶被打开,如图8(b)所示。

图8 根据识别结果相应垃圾桶被打开效果图

综上测试,可以看出所设计的垃圾分类系统能够正确地实现垃圾类型的识别和分类,完全达到了预期设计要求。

3 结语

本文应用计算机视觉识别技术设计一个生活垃圾的智能分类系统。系统软硬件相结合,计算机为上位机,提供图形用户界面。系统启动后,ESP32-CAM 接收拍摄命令,调用自身的摄像头和Wi-Fi模块,对需要分类的垃圾进行拍摄并通过Wi-Fi传送至上位机。根据训练好的分类模型进行图库比对,并将识别信息通过Wi-Fi传送至ESP8266-NodeMCU,驱动控制相应的SG90 舵机和垃圾桶盖。测试表明所设计的系统完全可以准确地实现家庭生活垃圾的智能分类。所设计的系统具有两点创新:第一,构建包含各种生活垃圾图像的训练数据集,通过不断地选取、改进分类模型算法以及反复精度测试从而获取精确的分类模型,这是系统能够准确识别类型的关键;第二,将智能垃圾分类和垃圾桶控制充分结合,通过识别信息驱动硬件控制电路,自动实现垃圾桶盖的开合,使得用户可以无接触完成垃圾的精准投放。

猜你喜欢
舵机垃圾桶界面
垃圾桶等
投进垃圾桶的信
投进垃圾桶的信
飞进垃圾桶
国企党委前置研究的“四个界面”
含齿隙弹载舵机的全局反步模糊自适应控制
基于dsPIC单片机的飞艇舵机控制实现
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
基于高速同步485总线通信的多通道舵机控制器设计
人机交互界面发展趋势研究