基于K210和YOLOv2的智能垃圾分类平台

2021-08-25 07:11方梓锋
自动化与仪表 2021年8期
关键词:舵机箱体摄像头

方梓锋,张 锋

(广东石油化工学院 电子信息工程学院,茂名525000)

近年来,中国正从国家层面加速推进垃圾分类的进程,现已取得巨大成就,但有些民众的分类意识和能力仍比较薄弱。在这个背景下各类垃圾分类平台层出不穷,而如何实现全程智能化、自动化的高效精准分类成为了一个比较热门的研究方向[1],但受限于传统MCU 的机器学习能力较低, 边缘计算的概念在环保行业仍鲜为提及。

众所周知,边缘计算能带来更快速的服务响应和更优质的实时业务体验,而目前环保领域主要的研究方向集中在图像处理算法和过程自动化上,如文献[2]通过CNN+ReLU 对垃圾图像识别分类,拥有80%左右的准确率、文献[3-4]均使用了vgg16 神经网络分类算法对日常垃圾进行识别分类,能够实现88%以上的识别准确率,文献[5]则采用双目立体视觉+DCNN 的方案。采用优秀卷积神经网络进行垃圾的识别分类无疑能提高系统整体的分类准确值,但其训练与识别过程需要较高的算力支撑,这一部分往往采用云端算力进行弥补,在实际使用中可能会受制于网络环境和云端负载,导致识别等待时间较长,而使用轻量级神经网络结合较高算力的边缘终端[9]则能够在实际使用中更具人性化和实用性。

本文结合国产芯片行业崛起的大背景,设计了一款具有垃圾种类判别、智能分类、语音播报、自动开合箱盖、紫外线消杀以及人体靠近检测、箱体负载云检测等功能。这款智能垃圾分类平台将不受制于上位机的整体负载和通信环境,能自主完成识别和分类操作,从而缩短整个垃圾回收流程的等待时间。

1 平台框架与设计思路

本平台采用基于RISC-V 框架的勘智K210 作为本地识别的边缘计算模块, 通过UART 与Arduino 相连接,能够实现本地无感识别分类。基本设计思路如下:

针对目前市面上的智能回收垃圾平台的问题[9]进行了分析和研究,结合国外在垃圾分类的经验[6-7]。本文提出一款利用智能垃圾分类回收平台,将边缘计算、人工智能和互联网+特性集于一体,最终达到垃圾智能化、自动化的分类回收。在设计箱体时,基于不同的使用场景,会有不同风格的设计,例如在户外场景,需优先考虑恶劣环境适应性,拥有不间断电源和太阳能充电板的配置,而在室内场景下本设计则重点考虑箱体占用体积和使用安全性等,如图1所示。

图1 投放于公共场所的平台模型设计Fig.1 Platform model design for public places

2 硬件系统设计

本设计的实现主要依托于勘智Kendryte K210核心模块、Arduino 控制模块、工业级大扭力舵机等元器件。硬件框图如图2所示。

图2 系统硬件框架图Fig.2 System hardware framework

2.1 主控制板Kendryte K210 模块

本设计所使用的Kendryte K210 模块,搭载FreeRTOS 操作系统。K210 采用了RISC-V 双核64 位处理器,并有专用电路实现CNN 加速,在400 MHz 的基准速率下,INT16 测试拥有300 GMAC/s 的性能表现,且整机耗能小于1 W。其优秀的AI 性能,足以胜任本平台的算力核心。

2.2 副控制板Arduino 模块

本设计所使用的副控制板为Arduino UNO,采用ATmega328P 的IC。有14 个数字输入/输出引脚,其中有6 个可用于PWM 输出、6 个模拟输入引脚,一个16 MHz 的晶体振荡器, 一个USB 接口, 一个DC 接口,一个ICSP 接口和一个复位按钮。

2.3 摄像头模块

对于机器视觉来说,拥有一双慧眼则如虎添翼。在摄像头传感器上选用了CSP3 封装的OV2710,采用DVP-10bit 并行数据接口。能够实现1080p@30fps的视频捕获,为后期KPU 处理提供了一个辨别度较高的输入值。

2.4 箱盖开关闭合模块

采用了工业级40 kg 大扭力舵机,接入Arduino控制板的PWM 接口,由PID 算法进行控制,投放不同的垃圾时会采用相应的PWM 波信号对舵机进行操作, 实现在开盖速度和角度的人性化和智能化。为确保机械臂的高强度和耐用性,在材质上选用了建材行业常用的6063 铝合金, 拥有优秀的抗风压性能、装配性能、耐蚀性能和装饰性能。且在顶部设置有太阳能电池板为箱体蓄电池组提供互补供电。

3 软件系统设计

垃圾智能分类平台的软件设计主要包括K210和Arduino 上的分类算法设计、摄像头控制、舵机控制、传感器控制和通信协议。

3.1 分类算法的设计

垃圾分类的核心是图像的处理和识别,本平台以Darknet 为深度学习开发框架、利用YOLOv2 模型[8]对投放物进行检测和分类,以达到智能化垃圾分类的目的。本平台所使用的YOLOv2 模型,网络简单,处理量小,而且拥有不错的mAP 和FPS 性能指数,如表1所示[4]。

表1 YOLOv2 性能指数Tab.1 Efficiency of YOLOv2

首先从模型建立开始,由于使用的是random 模式(多角度训练),需要采集不同种类垃圾多角度的图像,并在相应的样本标注信息中记录好各个角度下的5 组数据:对象索引号、对象中心坐标XY 轴、对象的宽和高。将YOLO 训练的batches、subdivision等参数配置完毕后, 便可以开始模型训练步骤,在平均损失率达到0.060730 avg 左右且不再下降时即可以停止训练,随后开始进行模型的分类准确率测试,测试流程如图3所示。

图3 YOLOv2 模型分类流程Fig.3 Flow chart of YOLOv2 model classification

完成了模型的训练和测试,还需要考虑针对后期的模型优化,以适合用于K210 等轻量级终端上,本平台采用了剪枝项目[9]的理论基础,对YOLOv2模型进行了稀疏训练[10],其原理为每个通道引入一个比例因子γ,并将其乘以通道的输出。将比例因子与训练网络的权值相结合,通过稀疏的正侧化处理,最后直接去除比例因子通道,得到微调剪枝网络。

培训目标被定义为

式中:x,y 代表训练数据和标签;W 是网络可训练参数;第一项为训练的loss 函数;第二项的g(γ)为比例因子上的参数;λ 是稀疏系数。当选取即为广泛应用于稀疏化操作的L1-Norm (L1 正则化)。经过优化后的模型有效的降低了内存占用和模型存储空间[11],将有利于在K210 上实现高效的部署、运行和维护。

导入训练完毕的模型到K210 上运行测试时,需要调用其内置的神经网络处理器KPU,通过加载和运行内构建的算法模型来实现目标检测,分类流程如图4所示。

图4 智能垃圾分类流程Fig.4 Flow chart of garbage classification

3.2 摄像头控制

摄像头与K210 通过DVP 并行接口相连接,在驱动中额外添加了超时待机和临近唤醒的中断函数,在空闲时段将摄像头关闭,不进行实时捕获,等待传感器返回参数告知摄像头开始工作。在实际工作中,摄像头负责传输画面至识别程序指定的接口上,识别程序在该接口内进行逐帧的目标检测。在K210 内的主体函数中有一个钩子函数,当系统级捕获到属于person 索引(主要为手部)中的内容时,会对除person 索引内容以外的进行目标检测,从而指引Arduino 副主控对对应箱体进行开关操作, 检测流程如图5所示。

图5 摄像头捕获流程Fig.5 Flow chart of camera capture

3.3 舵机控制

舵机在本平台中用于处理需要机械化控制的部分,对不同种类的垃圾以及不同体积的投放物采用不同的处理时间(即打开角度),通过PID 控制算法完成, 具体实现为在Arduino 控制板中编写舵机的PWM 波函数,对K210 返回不同种的类参数进行对应处理。由接口发生PWM 信号,与舵机相连,舵机再带动井盖控制臂,实现开盖功能。控制流程如图6所示。

图6 舵机控制流程Fig.6 Flow chart of steering control

3.4 传感器控制

传感器的控制主要由Arduino 副主控板进行,负责采集箱体内外的环境数据, 实现人体靠近检测、联动自动开盖、箱体满载检测等功能。人体靠近检测程序设定2 m 为标志位, 采用PIR 热电传感器,设定连续检测模式,工作流程为当在检测范围内捕获到人体10 μm 红外线时会保持持续高电平,K210 得到SensorState 参数为1 后通知摄像头开始工作,同时Arduino 等待K210 分类结果,打开对应箱体。

超声波模块放置在箱体顶盖中,以箱内垃圾最高面到顶部距离为检测标准,消去内箱体至顶层的距离N,实际的Distancce 应该为[pluseIn(echo,HIGH)/60.00]-N, 设定Distance 阈值来实现对箱体的容量监测,传感器反馈流程如图7所示。

图7 传感器反馈流程Fig.7 Flow chart of sensor feedback

3.5 通信协议

本设计使用的是DTU 模块与上位机进行数据交互, 采用TCP 协议的串口数据流传输, 使用SOCKET 方式连接上位机, 实现上位机的通信。而K210 与Arduino 经过UART 串口进行通信,编写自定义通信协议, 当K210 发送AA0301020306 的数据,即告知协议首部AA,指令长度为03,控制指令010203,即为设备类别为01,第2 号设备,端口03,这三个校验和06,然而还需要一个Protocol Parser类库来解析字段义,才能实现通信,其流程如图8所示。

图8 设备经由DTU 的上位机通信流程Fig.8 Flow chart of communication with DTU

4 系统测试

4.1 分类准确性测试

测试用的图像数据集依照VOC 数据集格式构建,通过labelimg 标记工具进行图像目标区域登记,完成相关配置后使用darknet 对YOLOv2 进行训练,最终得到多次迭代后保存的训练权重模型,将train_log_loss 中的数据可视化得到图9曲线,可见损失变化曲线在经22 万次迭代后基本达到平均损失率。

图9 模型训练平均损失率结果Fig.9 Average loss rate of model training

将迭代权重模型导入SD 卡中, 放置入测试用的Sipeed M1 荔枝丹K210 开发板,使用KPU 加速YOLOv2 目标检测算法, 对四类垃圾进行识别的准确率如表2所示,虽在过程中出现了个别物品名称识别错误的情况,但所属大类仍在正确的范畴之内。

表2 识别准确率结果统计Tab.2 Statistics of recognition accuracy results

4.2 回收投放测试

同时舵机的响应时间也在程序设定的范围之内,对不同尺寸的投入物响应时间和箱盖打开角度如表3所示, 设定了超时时间对箱盖进行状态检查,人体传感器保持高电平时设定为无效。

表3 舵机响应时间Tab.3 Response time of steering engine

综上图像数据和表格结果表明,本平台能够准确识别人体靠近并开始工作,物品分类平均识别准确率达92.4%,并且能够准确打开对应种类箱体,并能够判断和上传垃圾箱余量信息。箱体监测的传感器也能对高温、烟雾等异常状态正常告警。PIR 热电传感器维持高电平时,箱体开盖后的防夹伤机制也正常工作,能够确保使用的安全性,较好的完成设计初提出的各项功能指标。

5 结语

本文提出利用K210 开发板协同Arduino 进行智能垃圾分类的设计方案, 运用边缘计算+机器视觉赋能传统产业,充分发挥边缘计算的优势,极大的缩短了分类等待时间,具有个性化、模块化等特点,但目前在识别过程中对小种类的判别仍存在误差,受训练参数的影响较大等问题,后续工作将继续对目标检测和剪枝算法进行优化,尚有较大的改进空间。本设计通过套入不同模型亦可适用于其余的智能化分类领域,助力其余传统行业升级转型为互联网+智能化的产业。

猜你喜欢
舵机箱体摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
含齿隙弹载舵机的全局反步模糊自适应控制
基于dsPIC单片机的飞艇舵机控制实现
高牌号灰铁前端箱体质量提升
基于高速同步485总线通信的多通道舵机控制器设计
超大型冷剪箱体加工难点分析
基于ANSYS Workbench 的ATB260 减速器箱体模态分析
一款箱体可整体收缩折叠式帘布半挂车
奔驰360°摄像头系统介绍