基于手势识别的机器人控制技术研究

2024-01-27 13:41陈小顺钱鑫雨
电脑知识与技术 2023年36期
关键词:手势识别

陈小顺 钱鑫雨

摘要:增强人机交互形式,对机器人控制具有重要意义。然而,目前控制方式多集中于遥控控制方式,与人的互动性不足。研究提出基于手势识别的YOLOv5l算法提升机器人控制的交互性能。首先,精简HaGRID手势数据集至8类,因手势在图像中属于小目标,采用带有CBAM注意力机制的YOLOv5l模型进行训练;其次,通过QT平台搭建控制系统,部署手势识别模型。对机器人进行Mesh组网,以广播机制传输控制指令。实验结果表明,该模型在HaGRID数据集上平均准确度达到98%,自建数据集平均准确度达到95%,检测速度34FPS,模型大小88.5MB,机器人可建立Mesh网络,通过手势识别控制机器人运动。

关键词:手势识别; YOLOv5; HaGRID; CBAM; Mesh

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2023)36-0037-05

开放科学(资源服务)标识码(OSID)

智能机器在如今的科技世界中扮演着越来越重要的角色。机器人不仅用于工业和生产自动化,还在医疗、军事、农业、服务业等多个领域发挥着巨大的作用[1-2]。机器人可以是无人车、仿生机器人、无人机、机械臂等。人机交互是人与机器之间的沟通,以人为中心,机器需要能够理解人的交互手段,其中包含对于手势动作的理解。使机器能够识别手势的方法通常有3类:3D传感器、机器学习算法、深度学习算法[3]。韩彦鹏等人使用LeapMotion传感器获取数据,使用SVM改进的KNN算法进行手势识别,理想情况下对5种手势的识别准确率达95%以上[4]。王松林等人使用Kinect景深摄像机获取人体骨骼姿态数据,进而进行手势分割,使用DTW算法识别手势,对6种动态手势识别的平均准确率达到94%[5]。徐玥等人通过机器学习方法,改进手势分割和手势特征提取方法,基于Opencv采用支持向量机构建手势识别模型,对13种手势平均识别率达到89.96%[6]。李国玄等人提出HOG+SVM的手势识别算法,对手势数据集提取HOG特征,通过SVM进行分类识别,在复杂背景情况下手势识别率达95%[7]。谷学静等人提出CNN混合LSTM模型识别动态手势类型,对8种动态手势的识别率达92.5%[8]。李泰国等人提出有CBAM模块的YOLOv5s算法识别列车驾驶员的手势动作,在测试集的识别率达95.5%,检测速度为71FPS,模型大小15.9MB[9]。王粉花等人通过对YOLOv3算法改进,缩小最大值池化后的通道数进行手势识别训练,减少模型参数量与计算量,在UST数据集上检测精度达92.24%[10]。孟青云等人提出基于YOLOv8算法进行手势识别,实验得出YOLOv8精确度高于YOLOv5,但是检测速度稍慢,准确率达到95.7%[11]。针对现有YOLOv5l神经网络模型对手势特征表征不足的问题[12],采用带有CBAM注意力机制[13]的YOLOv5l模型进行对手势数据集进行训练,增强特征表征能力,提高手势识别的分类精度[14-15]。

1 YOLOv5算法

1.1 数据预处理

手势识别数据集HaGRID[16]是一个大型图像数据集,每张图片的手势部分被额外截取成为新的数据集,如圖1所示,数据集包含了18种类型手势,共723GB,共包含553 991张全高清RGB图像,每个手势数据集约40GB大小,每张图像成像距离相机 0.5~4 米。

根据HaGRID数据集已有的算法检测结果,结合手势控制机器的实际需求,去除容易与peace混淆识别的rock、three、three2、two up、two up inv手势,去除容易与one和ok混淆的mute手势,选取call、dislike、fist、like、ok、one、peace、stop共8类手势作为控制机器人的手势数据集,每个手势从数据集中抽选200张,并额外拍摄真实使用背景下标注的100张图像作为补充数据,使得每个手势有300张图像数据,提升算法的鲁棒性。

HaGRID数据集采用COCO数据集标注形式,需要将数据从.xml格式转换为YOLOv5l所使用的.txt 格式。通过ElementTree工具将.xml文件解析成树形结构,提取.xml文件中键值对,获得输入数据size中的width、height,object中的name,bndbox中的xmin、ymin、xmax、ymax。对数据进行归一化处理,如公式(1)所示,获得YOLOv5中所需的数据格式:calss、x、y、w、h。

其中,分类名name,映射为数字0~7。x为手势框中心点x的坐标除以原图width值、y为手势框中心点y的坐标除以原图height、w为手势框的宽度除以原图width、h为手势框的高度除以原图height。手势数据集来源:https://github.com/hukenovs/hagrid。

1.2 C3CBAM模块

CBAM模块整体结构如图2所示,模块由通道注意力模块和空间注意力模块组成。

如公式(2)所示,给定一个输入的特征F∈RC×H×W,对F做Mc∈RC×1×1通道注意力计算,并与F做元素相乘,得到计算结果F′,对F′做Ms∈R1×H×W空间注意力计算,并与F′做元素相乘,得到计算结果F″。

YOLOv5模型一共有5个版本,分别为:YOLOv5n、YOLOv5s、 YOLOv5m 、YOLOv5l、 YOLOv5x。

如图3所示,添加CBAM注意力机制的YOLOv5l算法网络结构分为Backbone、Head两大部分,共25大层,769小层,48 065 087个参数。YOLOv5每个版本深度不同,但基础框架相同。其中P0~P9为Backbone,P10~P23为Neck与P24的Detect合称Head。

如表1所示,将原Backbone中P2、P4、P6、P8层的C3结构替换为C3CBAM结构,其他保持不变。各层参数量、参数及数据来源如表1所示,其中from表示数据来源,-1为上一层数据。P12、P16、P19、P22层分别由(P6、P11)、(P4、P15)、(P14、P18)、(P10、P21)张量拼接所得。

C3结构即(CSP Bottleneck with 3 Convolutions),如图4所示,C3可以增强CNN的学习能力,使网络轻量化的同时提升准确度。C3参考CSPNet方法,利用n个Bottleneck、3个卷积模块、1个Concat来实现。增强了backbone的学习能力、降低内存成本。

Bottleneck用于减少模型计算量和参数量。如图5所示修改原有结构,在Conv2与Add(shortcut)之间添加CBAM模块。

1.3 模型训练与分析

实验使用Anaconda+Pycharm集成开发环境,使用PyTorch框架实现。GPU设备型号GTX1070、8G显存、内存32GB。手势数据集中80%用于模型训练、10%用于测试、10%用于验证。训练参数epochs设置为200,batch-size设置为4,初始weights设置为YOLOv5l.pt,optimizer设置为SGD,学习率设置为0.01。最终训练时长33 h,模型大小88.5 MB。项目训练源码、训练方法、数据集、格式转换、模型参数、测试方法、测试结果等数据已上传至仓库:https://gitee.com/destiny_shun/yolov5-master。

F1 值综合考虑Precision和recall双面因素,如图6所示,模型训练后的F1值达到了0.99。

如图7所示,模型对8个手势类别均有较好的识别效果,其中peace手势识别精度较低,只有0.967。

如图8所示,图中为在数据集上检测出错的示例,手势在数据集中属于小目标,极易受到背景信息干扰,当人体手势动作与皮肤、强光、阴影叠加在一起,遇到相似颜色造型,错检、漏检率上升。如图9混淆矩阵所示,模型在目标检测任务中,主对角线颜色深,表示正确预测数量多,其中ok、one、peace三类存在预测错误情况。如图10所示,模型分类损失、置信度损失、边框损失在迭代200次训练后已经收敛,模型mAP值可达99.1%,模型的Precision、recall值趋于稳定。

如表2所示,从HaGRID数据集中,每个手势类别抽选100张新的图像,测试模型检测效果。由于实验平台限制,模型在第一次迭代次数设置为100次,并未有明显收敛,故而设置为200次,训练时长达到33h,出现较为明显的、稳定的收敛现象,故而此次训练过程有效。由于模型在数据集上检测效果非常好,为验证模型是否在数据集上出现过拟合现象,额外抽取、拍摄数据集外手势数据进行测试,测试结果表明,模型检测具有良好的精确度。模型在数据集上平均识别准度率为98%。自建数据集中每个手势分别拍摄100张图像,结果表明,模型在自建数据集上平均识别准确率为95%。模型加载后,平均检测时间为0.028 7s,480×640分辨率图片,帧率为34,达到实时检测效果。

1.4 控制平台设计

Qt是跨平台开发常用工具,方便后续嵌入式移动端的使用[17]。在Pycharm平台上安装PyQt5库,并嵌入QtDesigner界面设计工具、pyuic5界面代码转换工具。

如图11所示,完成简易控制界面设计,界面加載训练好的best.pt模型,可调用电脑摄像头,视频实时识别手势,根据手势类型发送控制指令。

1.5 机器人及mesh组网设计

机器人之间的通信是机器人控制的关键组成部分,这包括使用Wi-Fi、蓝牙、Zigbee、LoRa等不同的通信技术,以便机器人之间进行信息共享和协同工作[18]。ESP8266 Mesh是一种用于构建自组织、低功耗物联网(IoT)网络的技术,由乐鑫公司开发。它建立在ESP8266 Wi-Fi模块之上,提供了一种方便的方式来连接和管理大量ESP8266设备,使它们能够相互通信和协同工作[19]。将手势识别模型应用到机器人控制中,能够增加人机交互的互动性。将集群中的所有机器人的舵机控制板通过串口通信连接ESP8266模块,舵机控制板通过上位机预先录入指定动作及编号,ESP8266编写指令完成机器人的Mesh组网。通过Mesh组网全网广播命令,实现机器人的集群控制[20]。

如图12所示,Esp8266 Mesh允许机器人内部相互广播通信,网络无中心节点,每个节点都可以作为中继节点,节点数量与范围更大,各个机器人节点之间根据节点编号和控制命令可以相互通信也可以独立控制,网络自主修复能力好,心跳包断连和接入均可自更新完成,通过与路由器相连可以实现远程互动控制。

如图13所示,手势控制界面可以通过stop手势停止所有机器人动作,通过fist手势立正机器人,通过call手势,激活舞蹈模式,通过like与dislike手势切换舞蹈动作,fist手势作为中间过渡手势,无实际意义,OK手势为确认执行当前动作。one、peace手势分别表示调整机器人语音音量大小。机器人收到各类手势执行指令时,通过语音播报与实施者确认是否准确识别命令。

2 结论

通过手势动作控制机器人,提升人机交互性能,手势识别的精确度是指令发出的关键。手势数据集HaGRID提供了手势数据来源,手势动作在实际使用过程中属于较小的检测目标,需要深层与浅层特征图在语义性与空间性上得到更好的均衡。使用带有CBAM注意力机制的YOLOv5算法模型进行训练。在实验准备阶段,对COCO数据标注形式的数据进行转化,并添加真实使用场景图像补充数据集,用以增强算法鲁棒性。实验过程中,选择YOLOv5l模型,使用官方YOLOv5.pt作为初始参数展开训练。最终得到此次训练测试最好的best.pt模型文件,实现对手势的识别,同时搭建可视化平台验证手势控制机器人的可行性。实验结果表明,改进的模型在测试数据集上的检测精度达到98%,在自建数据集上的检测精度达95%,最终的权重文件大小88.5MB,预测一张尺寸大小为640×480的图像需要28.7ms,处理速度达到34FPS,可以满足实时检测要求。在实际控制中,机器人间可以稳定组网运行,能够通过手势识别控制机器人及集群运动。

参考文献:

[1]王成,李敏,王克宇.基于改进Faster RCNN的机器人运动控制与视觉抓取研究[J/OL].机械设计与制造:1-12.

[2] 丛玉华,何啸,邢长达,等.基于计算机视觉手势识别的人机交互技术研究[J].兵器装备工程学报,2022,43(1):152-160.

[3] 解迎刚,王全.基于视觉的动态手势识别研究综述[J].计算机工程与应用,2021,57(22):68-77.

[4] 韩彦鹏,秦飞舟.基于LeapMotion的手势识别算法改进与研究[J].电子设计工程,2023,31(1):7-10,15.

[5] 王松林.基于Kinect的手势识别与机器人控制技术研究[D].北京:北京交通大学,2014.

[6] 徐玥,周辉.简单背景下基于OpenCV的静态手势识别[J].计算机科学,2022,49(S2):393-398.

[7] 李国玄,马凯凯,王文博.基于HOG特征提取和SVM的手势识别方法研究[J].传感器世界,2022,28(12):30-36.

[8] 谷学静,周自朋,郭宇承,等.基于CNN-LSTM混合模型的动态手势识别方法[J].计算机应用与软件,2021,38(11):205-209.

[9] 李泰国,张英志,张天策,等.基于改进YOLOv5s算法的列车驾驶员手势识别[J].铁道学报,2023,45(1):75-83.

[10] 王粉花,黄超,赵波,等.基于YOLO算法的手势识别[J].北京理工大学学报,2020,40(8):873-879.

[11] 孟青云,戴佳蔚,查佳佳,等.基于YOLOv8算法的常用手势识别[J].现代仪器与医疗,2023,29(4):12-20.

[12] 李熙尉,孙志鹏,王鹏,等.基于YOLOv5s改进的井下人员和安全帽检测算法研究[J].煤,2023,32(3):22-25.

[13] WOO S,PARK J,LEE J Y,et al.CBAM:convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV).Munich: ECCV,2018:3-19.

[14] 胡宗承,段晓威,周亚同,等.基于多模态融合的动态手势识别研究[J].计算机工程与科学,2023,45(4):665-673.

[15] 胡宗承,周亚同,史宝军,等.结合注意力机制与特征融合的静态手势识别算法[J].计算机工程,2022,48(4):240-246.

[16] KAPITANOV A,MAKHLYARCHUK A,KVANCHIANI K.HaGRID - HAnd gesture recognition image dataset[EB/OL].2022:arXiv:2206.08219.http://arxiv.org/abs/2206.08219.pdf

[17] 潘雪荧,吴庆达.基于Qt的仿蚕机器人上位机软件设计与实现[J].现代制造技术与装备,2023,59(8):193-196.

[18] 夏田,张大为,代斌斌.全向移动的送餐机器人控制系统研究与仿真[J].制造业自动化,2022,44(5):17-20.

[19] 张申毅,樊绍胜,程嘉翊,等.基于STM32的軌道式巡检机器人控制系统的设计[J].仪表技术与传感器,2020(9):93-97,116.

[20] 刘成涛,郭帅.基于手势识别的智能小车无线控制系统设计[J].现代电子技术,2023,46(16):182-186.

【通联编辑:唐一东】

猜你喜欢
手势识别
基于手势识别的工业机器人操作控制方法