APP下载

基于机器视觉的垃圾分类系统的设计

2022-07-21蔡永超

物联网技术 2022年7期
关键词:垃圾箱舵机文件夹

张 兵,蔡永超,杨 杰,卓 杰,杜 颖

(宿迁学院,江苏 宿迁 223800)

0 引 言

随着社会经济的发展,人们对资源的消耗越来越多,对资源的回收再利用变得极为重要。为了更好地回收可利用资源,国家实施强制垃圾分类政策,但人们在投放垃圾时却遇到了垃圾分类识别难的问题,为了方便用户分类投放垃圾,市场上出现了许多能帮助人们实现垃圾分类的智能产品。

阿里巴巴在支付宝推出了一款扫一扫识别垃圾的“AI识别垃圾分类程序”,用户在投放垃圾前进行拍照识别,但需要一定的时间响应。阿尔飞思公司推出了智能垃圾桶“睿桶”,通过云计算来提升识别速度和精确度,分类精确度可以达到95%,用户体验感觉较好,但易受网络速度影响。

为了解决上述问题,本文以Jetson Nano为垃圾分类识别平台,采用YOLOv5算法,实现了在本地垃圾箱自动识别分类,控制电路将垃圾投放至对应的垃圾箱。

1 系统总体结构设计

如图1所示,系统由垃圾识别模块、垃圾箱主控模块、后台管理模块组成。垃圾识别模块由Jetson Nano开发套件组成,连接摄像头,将用户放置投放平台的垃圾通过YOLOv5算法提供实时计算机视觉和推理,获得分类标号。通过串口将分类标号传给垃圾箱主控模块,从而控制舵机将垃圾旋转至正确的垃圾投放口投放,并给出投放垃圾种类的提示音。满箱报警模块负责监测垃圾桶是否装满,将满桶信息通过无线传输模块上传后台管理模块,通知工作人员及时清理垃圾,垃圾箱亮红灯提醒用户垃圾箱已满,不要再投放垃圾。后台管理模块具有垃圾箱实时状态显示、清运人员通知、历史数据统计等功能,方便管理人员查看垃圾箱整体工作状态和垃圾投放机的使用频率。

图1 系统结构

2 系统硬件设计

系统硬件部分主要包括垃圾识别模块、主控芯片STM32F407ZET6、舵机、无线传输模块。STM32F407ZET6是一款高性能、低功耗的微处理器,有2个USB接口、6个USART接口和114个I/O口,可以连接垃圾识别模块,接收垃圾分类信息,控制舵机旋转,并提供响应的语音提示和满箱报警,通过无线模块信息传输实现数据上报后台。

2.1 垃圾识别模块

垃圾识别模块包括Jetson Nano 开发板和摄像头两部分。Jetson Nano核心由ARM四核Cortex-A57CPU和128个CUDA单元集成GPU组成,提供472 GB的FLOPS计算性能,配备了4 GB的LPDDR4内存以及32 GB的TF卡。NVIDIA官方提供JetPack SDK,用于构建AI应用程序的开发环境包,支持所有Jetson模块和开发套件、加速图形、NVIDIA CUDA Toolkit和cuDNN库以及计算机视觉开发的框架OpenCV,能够更好地执行YOLOv5算法。垃圾识别模块摄像头所采集的垃圾图像需要进行目标的检测与识别,为了达到更好的经济性、实时性和识别精度,选择SY003HD摄像头进行图像采集,分辨率可以达到1 920 × 1 080,帧率为30,摄像头USB接口与 Jetson Nano 开发板相连采集垃圾图片,通过YOLOv5算法实现分类的目的。

2.2 满箱报警模块

垃圾箱满时需要及时提醒管理人员清运垃圾并对投放垃圾用户给出警示,不要再投垃圾。满箱报警模块采用超声波HC-SR04模块进行监测。HC-SR04模块最小测距为2 cm,最大测距为4 cm,完全适用于分类垃圾箱。HC-SR04模块测量角度为15°,只能测量较小区域,所以与舵机配合使用,舵机采用SG90,调节PWM信号的占空比就可以控制舵机旋转相应的角度为30~150°进行工作,实现测量垃圾箱是否装满;并可以根据测量的距离判断出哪个分类箱装满,给出相应的指示灯提示。

2.3 无线传输模块

在垃圾分类系统中,无线传输模块采用NB-IoT模块将传感器采集到的数据发送给后台系统,实现垃圾数据管理。选用由上海稳恒科技研发的WH-NB73模块,内嵌的芯片是华为海思Hi2110。由于模块采用内置SIM卡和天线,所以SIM卡电路与射频电路的设计可以简化。通信模块部分由复位电路、恢复原始设置电路、电源接口电路和UART接口电路等部分组成,如图2所示。该模组支持串口工作方式,与MCU的UART口相连并通过AT指令传输数据,系统中UART通信设置的参数采用波特率为9600、数据位为8位、停止位为1位。该模块在使用时供电范围要控制在3.1~4.2 V,系统设计时采用3.3 V供电。在DC-DC电源芯片后放置大电容,可以防止外部电源在脉冲电流时间段内出现电压跌落。

图2 WH-NB73模块的总体设计电路

3 系统软件设计

3.1 YOLOv5算法

2020年Ultralytics公司推出了YOLOv5,具有速度快、体积小等优点,容易在Pytorch框架中实现。YOLOv5模型大小可根据需要调节,常用4种结构,其中YOLOv5s为最小模型,权重数据文件仅为27 MB。YOLOv5s的整个网络结构分为四个部分,分别为Input(输入端)、Backbone(骨干部分)、Neck网络以及Prediction(输出端),YOLOv5s网络架构如图3所示。与YOLO以前的版本相比这几个部分都进行了一定的优化,算法也有了更新,整体性能也有了比较大的提升。

图3 YOLOv5s网络架构

(1)输入端

在YOLOv5s网络的输入端,YOLOv5s算法对数据集中尺寸不同的图片进行缩放操作。根据图片的长宽大小,自适应添加图片四周的最小尺寸黑边,这样在算法推理时计算量也会相应减少,从而使算法性能得以提高。为了丰富算法的数据集,增加算法网络的鲁棒性,在训练期间采用Mosaic数据增强,即使用多张图片进行随机缩放、随机裁剪、随机排布,从而提高算法的训练效率。为了准确地检测不同目标,将计算初始锚框程序嵌入到YOLOv5算法中,自适应地计算不同训练集中的最佳锚框值。

(2)Backbone网络

在Backbone骨干网络中,主要包括两种结构:Focus结构和CSP结构。在Focus结构中,将输入端的608×608×3图片通过四次切片操作,再经过一次32个卷积核的卷积,得到304×304×12的特征图。CSP结构中使用3×3的卷积核,将初始608×608的图片转换为19×19的特征图。

(3)Neck网络

在YOLOv5s网络中Neck网络主要有承上启下的作用,它对Backbone网络中获取的重要特征进行分析和继续利用,以便下一步的任务学习。Neck网络包括FPN和PAN结构,FPN结构中对图片特征的获取通过自上而下的方式,使用上采样,对高层和低层的特征信息相互传递和融合,得到预测的目标特征图。PAN结构采用另外一种自下而上特征金字塔形式,使用下采样,对FPN结构中获取的预测特征图中的低层和高层特征信息进行提取和融合,从而获取预测的目标特征图。

(4)输出端

YOLOv5中使用GIoU_Loss作为Bounding box的损失函数。

由此可以计算出同时包含预测边框和真实边框的最小边框面积,再计算出闭包区域内不属于两个边框的区域占整个闭包区域的比重值;IoU值减去比重值后得到GIoU,则损失函数GIoU_Loss=1-GIoU。

3.2 系统控制程序设计

图像识别端是整个垃圾分类系统的基础功能,摄像头连接Jetson Nano,运行YOLOv5算法进行采集并识别垃圾类型,如成功识别,则将模拟信号转化为电信号。通过Jetson Nano串口通信输出到主控芯片STM32F407,主控芯片控制舵机旋转到恰当的角度,将垃圾放至对应垃圾箱,并且主控芯片判断垃圾箱是否装满以及给出对应的LED提示。

4 实验与结果

4.1 垃圾实物识别

本实验所用数据集来源有两方面:一是通过Python网络爬虫代码抓取百度和谷歌图片;二是自己拍了一些垃圾实物图片,使用OpenCV对图像进行数据增强操作,扩充数据集的数量为原来的4倍。之后用LabelImg工具对垃圾图片数据进行标注,最终得到数据集共有16 000张图片,按照7∶2∶1的比例把数据集分成训练集、测试集和验证集。设置不同的文件夹存放图片:文件夹images中存放所有图片,文件夹labels存放打好的标签,test.txt为测试集,train.txt为训练集,val.txt为验证集。具体实施过程分两个步骤:先把数据集在服务器上训练;然后将得到的模型转移到Jetson Nano上。

在服务器中部署YOLOv5的运行环境,下载YOLOv5源码,根据之前的数据集进行训练,获得YOLOv5的垃圾分类模型;将模型文件 tensorrtx/yolov5/gen_wts.py复制到yolov5文件夹中,同时将训练后获取的best.pt复制到主文件夹中,进入yolov5文件夹执行python gen_wts.py,即可获得yolov5s.wts 文件。

将服务器tensorrtx文件夹内容复制到NANO中,在yololayer.h 文件里可以修改模型类个数,CLASS_NUM初始值为80,本实验中修改为4;还可以在yololayer.h 文件中修改INPUT_H和INPUT_W的值,图片尺寸必须是32的倍数。缩小输入尺寸在一定程度上可以加快推理速度。将yolov5s.wts文件复制到ensorrtx/yolov5中,并且运行cmake与make命令,生成engine 部署引擎文件。将引擎载入文件路径修改成自己引擎的路径,同时修改模型标签文件名,最后调用摄像头就可以进行视频预测。

4.2 实验结果分析

将垃圾投放至平台,摄像头采集垃圾图片由Jetson Nano判断垃圾类别,通过串口将垃圾类别编号传输至主控模块,控制舵机根据预先设计角度旋转,打开垃圾箱投放口将垃圾放至正确的垃圾桶。延迟2 s后满箱报警模块监测是否满箱后将数据发送给后台。进行100次垃圾实物投放,检测正确率为98%,从投放到放至正确垃圾桶的时间为1.5 s。

5 结 语

智能垃圾分类是节约资源的措施之一,也是社会智能化发展的重要指标之一。本文设计的智能垃圾分类系统,硬件主要包括STM32F407ECT6主控模块、Jetson Nano垃圾识别模块、无线传输模块、报警模块等,手机APP主要实时显示垃圾箱的状况和提醒垃圾清运。系统运行稳定,垃圾识别率为98%,效果良好,可以有效地帮助用户实现垃圾分类。

猜你喜欢

垃圾箱舵机文件夹
洗扫车垃圾箱体及过滤装置优化研究
垃圾箱的变化
含齿隙弹载舵机的全局反步模糊自适应控制
基于dsPIC单片机的飞艇舵机控制实现
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
基于PLC的自动降解垃圾箱压缩粉碎模块的设计
基于高速同步485总线通信的多通道舵机控制器设计
挂在墙上的文件夹
基于云模型的舵机同步控制