基于手势控制的智能小车研究与设计
2022-10-19周广证胡玉芬
周广证 胡玉芬
(南京理工大学紫金学院,江苏 南京 210046)
1 引言
随着计算机技术的发展,图像识别技术[1]迅速普及到人们的生活中,使人类的生活更加便捷和智能化。图像识别是利用计算机技术对图片中的目标进行检测,其中深度学习在现代图像识别技术发展中得到了非常广泛的应用[2]。图像识别技术的应用场合大致可分为三个方向[3]:(1)对人面部进行检测的人脸识别;(2)对物体进行检测的物体识别;(3)对手部发出动作进行检测的手势识别。人脸识别系统的应用主要是在高铁站、公司、学校等场所,目的是对身份进行认证,确保进入场所人员的安全性。物体识别系统的应用场合主要是对货物的移动进行检测,在物流快递分配、零售贩卖机、无人售卖方面都有很好的应用[4]。手势识别通常用于使用简单的手势控制智能设备,使计算机能够理解人类的行动来达到人机交互的目的[5]。本文主要介绍手势识别技术在小车控制上的应用,通过对手势信息采集处理,最后实现控制小车的系统。
2 手势控制小车的总体设计
本文采用公开数据集kinect_leap_dataset,其官网地址为:https://lttm.dei.unipd.it/downloads/gesture/。手势含义规定如表1所示。
表1 单手手势定义
原始数据集共有1320个样本。为了防止过拟合,采集后使用数据增强技术对数据集进行了扩充。主要利用平移、随机缩放、翻转变换、添加随机噪声等,可以将数据集扩充到原始数据集的几十倍。系统的总体框架结构分控制端和执行端两部分,如图1所示,主要模块有数据采集、数据处理、模型处理、结果处理、通信、小车控制等。
图1 手势控制小车流程图
3 网络模型选择
当前目标检测的主流方法(Faster RCNN[6],YOLO)采用的都是深度学习架构,按照算法的流程不同,可将其分为两类算法:一种是单阶段检测(One stage),另一种是两阶段检测(Two stage),其主要区别在于在网络结构设计过程中是否有候选区域的生成。One-stage不会生成区域建议,只需要单一的网络就能达到分类和定位的目的,检测速度快,但准确度不高。Two-stage的准确度高,但速度相对One-stage较慢。Yolov4-Tiny是两阶段检测,它的速度相比于Faster-RCNN来说快很多。并且Yolov4的特征提取层(Backbone)采用了特征金字塔+下采样的结构,以及在训练时采用Mosaic数据增强的方法,所以对于小目标检测也有着不错的效果。所谓的Mosaic数据增强法是将四张随机缩放和裁剪的图像拼接在一起,大大丰富了检测数据集。但是Yolov4-Tiny目标检测网络也有其缺点,它更少的参数以及更快的速度都是以牺牲识别准确率为代价。因为Yolov4-Tiny只选择了两层来送入特征金字塔[7],所以对于小物体检测,以及一个目标将另一个目标遮挡了一部分是很难检测到的。但对于独立出来的物体检测识别率很高。本项目属于独立物体识别,因此用这个算法非常适合。
4 YOLOv4-Tiny网络框架
YOLOv4-Tiny网络是YOLOv4的精简版,属于轻量化模型,相比于其他版本的轻量化模型,其性能优势显著,整体网络框架主要分为四部分:Input、Backbone、Neck、Head,如图2所示。
(1)Input部分一般大小分为(416,416,3)和(608,608,3)两种,图2中输入采用(416,416,3)。
(2)Backbone部分主要作用是主干特征提取,采用的是CSPDarknet53-Tiny结构,该结构主要是Conv-BN-Leaky和Resblock_body两大模块,Conv-BN-Leaky主要是二维卷积及正则化,完成残差块堆叠,为了快速将激活函数修改为LeakyReLU,Resblock_body模块主要完成两次残差特征融合,通过五次降维变成特征图维度是13,将获取到的这两种有效特征层(13,13,512)传递给Neck加强特征提取网络中,构建特征结构。当输入是416×416×3时,CSPDarknet53-Tiny特征结构如图2Backbone部分所示。
图2 YOLOv4-Tiny网络结构
(3)Neck部分主要是加强特征提取,在特征利用部分,共提取两个特征层,两个特征层的shape分别为shape1(26,26,256)、shape2(13,13,512)。利用特征金字塔FPN结构将两个特征层融合,具体是将最后一个shape2的有效特征层卷积后进行上采样,然后与上一个shape1的有效特征层进行堆叠并卷积。
(4)Head部分的分类是基于前面Neck部分最终的特征进行分类输出,支持(26,26,255)、(13,13,255)。因为算法测验的数据集类别支持80种,最后一个维度255=3×85,其中3表示存在3个先验框,85等于4+1+80,分别代表x_offset、y_offset、h和w、可信度、分类结果。
5 实验数据分析
本项目Yolov4-Tiny一开始训练了800个epoch,由于数据集单一,数据集数量太小,导致过拟合,ok手势的MAP(均值平均精度)值达到100,550个训练次数之后训练集小于验证集(train loss 图3 训练集的准确率和损失率 实验结果表明,在环境比较复杂情况下识别率效果也比较好,能准确识别出手势。 本项目在小车上进行实体验证,根据电脑单目摄像头实时采集不同的手势进行识别,再根据识别的结果来驱动小车运动。在电脑控制端当手势识别输出分类结果后通过串口或WIFI无线方式将数据传递给小车,传递数据格式采用两个字节:类型+识别结果ASCII码,当前类型固定为0X01,方便后续扩展功能也为了因数据乱码而导致小车的误解析。在小车上首先使能串口并设置波特率为9600,小车上的数据接收处理是通过识别正确类型后解析识别结果,根据识别的结果调用相关函数控制小车的前进或者后退等行为。不同的方向控制是对小车左右电机的控制,通过H桥式电路来控制电机的正反转,并通过PWM控制转速。实验结果如图4(a)(b)所示,其它的手势一样效果良好,识别速度快。 图4 (a)左转 图4 (b)停止 本实验主要是搭建Yolov4-Tiny网络框架平台,采用公开数据集,通过智能手势识别来控制小车运行,从实验搭建的目标检测网络效果看,Yolov4-Tiny网络识别率高,速度快,MAP值达到90%以上。随着人工智能对各种应用场景的开发以及各类算法研究的深入,手势识别在现在人机交互中必将发展壮大。本项目后续继续增加多个手势同时出现情况以及多环境下验证模型的可靠性、准确性等。6 执行端设计验证
7 总结与展望