**摘要:**手语识别可以真正建立聋哑人和正常人之间的沟通桥梁,促进文明城市无障碍环境建设。本文结合姿态估计和XGBoost提出一种孤立手语识别方法,同时引入投票机制来提升最终准确性。经实验验证本文方法在SpredTheSign100数据集上达到97.38%的准确性。同时本文方法具有运行速度快的优点,可以满足视频实时处理需求。
**关键词:**姿态估计;手语识别;XGBoost
中图分类号: TP 391.41 **文献标识码:**A
Isolated sign language recognition based on pose estimation and XGBoost
**Abstract:**Sign language recognition can really build a bridge between deaf mute and normal people, and promote the construction of Accessibility in civilized cities.This article proposes an isolated sign language recognition method combining pose estimation and XGboost, while introducing a voting mechanism to improve the final accuracy.Through experimental verification, the method proposed in this paper achieves an accuracy of 97.38% on the SpredTheSign100 dataset.At the same time, this method has the advantage of fast running speed and can meet the real-time video processing requirements.
Key words: pose estimation; sign language recognition; XGboost
0 引言
聋哑人是全球范围内的弱势群体之一,他们面临着沟通障碍、教育和就业机会不足等问题。世界卫生组织最新数据显示,目前全球约有4.66亿人患有残疾性听力损失。在中国,聋哑人口数量超过百万,但由于缺乏专业的教育和就业机会,他们往往被边缘化。手语识别技术可以帮助聋哑人更好地融入社会,提高他们的生活质量。因此,手语识别技术的研发和普及对于聋哑人来说是非常必要的。
手语是一种结合手势变换、脸部表情、身体姿态等多因素综合作用的语言体系[1]。为了能够充分利用每个身体部位的有效信息,本文提出一种基于姿态估计与XGBoost的孤立手语识别方法。通过姿态估计可以获取脸部、手部、身体的关键点坐标,结合不同视频帧之间的姿态坐标变换就可以形成手语的特征向量表示,将其输入XGBoost进行分类,最终实现孤立手语识别。
本文的主要贡献如下:
(1)本文贡献了一个中文孤立手语数据集SpredTheSign100。
(2)本文提出一种结合姿态估计和XGBoost的孤立手语识别方法,并提出投票机制,大大提升识别精度。
(3)通过在SpredTheSign100数据集上进行测试,本文方法可以达到97.38%的准确性。
1 相关研究
王增峥[2]提出的基于MYO臂环的手语孤立词识别,硬件依赖度太高。潘威[3]设计了图卷积神经网络(Graph Convolutional Network,GCN)特征提取器,用于从地面、墙面、摄像头平面这三个平面中提取图数据特征,同时设计了时域网络和空域网络来整合多维度信息,但是该方法计算量太大,难以进行实时处理,同时还要进行关键帧的提取,操作复杂冗余。胡瑛[4]提出了一种新颖的3D卷积神经网络孤立词手语识别模型,3D卷积网络存在训练慢、推理速度慢等诸多问题。江勇军[5]提出结合关键点特征和手部SURF特征、HOG特征的思想进行孤立手语识别,手语特征更偏向骨节点的位置特征,SURF和HOG特征引入纹理,边缘等特征,存在大量特征冗余。
为提高手语识别准确率、降低模型复杂度并提高整体推理速度。本文提出了基于关键点提取身体姿态特征,后续识别模型只需对姿态特征进行处理而不需要继续处理视频图像。这样的预处理不仅降低了数据量还可以提供有效、直接的数据给后续算法融合模型。识别模型基于连续10帧图像的姿态特征进行识别,充分利用时序维度特征,同时XGBoost相比深度学习的方法运算量少、速度实时、小样本学习效果好、流程简单、易于操作部署。
2 整体流程

图3.1 手语识别流程图
整个手语识别流程包含姿态估计、手语识别2个大模块。输入的一系列视频帧首先经过姿态估计模型处理,输出每一视频帧对应的人体骨骼关键点,将多帧关键点拼接为姿态特征向量。将姿态特征向量输入XGBoost模型进行分类,对输出分类结果基于多数投票的原则进行投票,得到最终手语预测结果。
3 姿态估计

图4.1 身体关键点

图4.2 手部关键点
姿态估计包含两个任务,分别是身体关键点检测、姿态特征表示。
身体关键点[7]基于MediaPipe进行实现。MediaPipe集成了姿势、面部和手部组件的独立模型,每个组件都针对其特定领域进行了优化,尽量降低内存传输成本,并根据质量/速度的权衡。
对于任意一段视频,假设视频帧数为n。首先通过MediaPipe实现每一帧图像的手部21个关键点(两只手42个关键点)、脸部11个关键点、身体22个关键点的检测,也就是一帧图像可以得到75个关键点坐标(x,y)。从第0帧图像开始,每连续10帧的坐标结果组成一个特征向量,用于表示手语的姿态,不足10帧的,使用-1补齐特征向量。这样每个特征向量的维度为1500维。将一张图像对应的特征向量定义为f,一段n帧的视频最终将得到特征向量序列F={f1,f2......f┌n/10┑}
4 手语识别

图5.1 基于XGBoost进行多数投票识别
手势识别[8,9]模块基于XGBoost进行实现。XGBoost(eXtreme Gradient Boosting)是一种基于决策树的机器学习算法,在XGBoost技术中,采用自适应梯度提升算法,在当前模型的基础上构建出下一个模型,从而提高整体模型的预测精度。XGBoost技术的特点是高效、准确、可扩展,并且具有很好的模型解释性,广泛应用于各种数据挖掘和机器学习任务中。
手势识别的过程包含训练和推理2个阶段。
训练阶段,根据提取到的视频特征向量F,将其输入XGBoost模型进行训练。训练完成后就可以得到训练好的手语识别XGBoost模型。
推理阶段,特征向量F中的每一个特征f都会输入XGBoost模型进行推理得到输出结果r,最终形成整段视频输出结果集合R={r1,r2......r┌n/10┑}以及每一个结果对应的概率得分S={s1,s2......s┌n/10┑},最终手语预测结果Result = Vote(R,S)。其中Vote表示改进的多数投票法,具体的求每个类别r对应的平均得分s,取平均得分最高的类别作为最终预测类别。如图5.1所示,airbag预测平均得分0.78,half an hour的预测平均得分0.91,所以最终投票识别结果为half an hour,识别结果得分为0.91。
5 数据集
手语识别的目标是将手语视频自动翻译成相应的手语注释。根据所使用的数据集不同,手语识别可以细分为孤立词手语识别和连续手语词识别[6]。
孤立词手语识别[10]是一种细粒度的动作识别,每个视频只对应一个手语词汇的注释,通常只需将一个手语视频翻译为一个手语词汇即可。
连续手语识别[11]中,通常一个视频对应一个完整的句子,这时就需要将一个手语视频翻译为一个手语句子。相较于孤立词手语识别,连续手语识别增加了句子内部各个单词之间的排列组合关系。
手语数据集采用SpredTheSign,通过爬虫技术爬取10000个手语词汇视频,然后从中随机选择100个视频。对于任意一段手语视频,从第0帧开始,每连续10帧组成一段新的手语视频,最终形成孤立手语数据集SpredTheSign100。该数据集共计7866段视频,每个手语词汇对应60-80段视频不等。其中80%手语视频当作训练集,20%当作测试集。
6 实验结果与分析
在模型训练时设置的主要参数包括,树的最大深度max_depth为2,学习率learning_rate为0.1,最大迭代次数n_estimators为500,L1正则化项reg_alpha为0.01,损失函数objective为'multi:softprob'。
训练过程中loss变化如图6.1所示,准确性变化如图6.2所示。从图中可以看出随着实验的进行accuracy在逐步提升,loss在不断下降,最终保持收敛,模型整体能力表现良好,最终在测试集上达到97.38%的准确性。

图6.1 loss变化曲线图

图6.2 准确性变化曲线图

混淆矩阵
7 结论
针对孤立手语识别问题,本文提
出一种结合姿态估计与XGBoost的手语识别方法。通过在SpredTheSign100上的实验分析可以看出本文的方法具有良好的识别精度。后续在手语数据积累到一定的规模后,可以引入深度学习的方法,构建手语识别模型,进一步提高孤立手语的识别精度。
参考文献
[1]闫思伊,薛万利,袁甜甜.手语识别与翻译综述[J].计算机科学与探索,2022,16(11):2415-2429.
[2]王增峥.基于MYO臂环的手语孤立词识别[D].大连理工大学,2019.
[3]潘威.面向孤立手语识别任务的关键帧算法研究和系统设计[D].中国科学技术大学,2022.
[4]胡瑛,罗银,张瀚文,杨萌浩.基于注意力机制的3D卷积神经网络孤立词手语识别[J].湖南工程学院学报(自然科学版),2022,32(01):55-60.
[5]江勇军.基于Kinect的孤立词手语识别系统研究[D].中国科学技术大学,2015.
[6]米娜瓦尔·阿不拉,阿里甫·库尔班,解启娜,耿丽婷.手语识别方法与技术综述[J].计算机工程与应用,2021,57(18):1-12.
[7]陈雅茜,吴非,赵丁皓.基于身体姿态关键点检测及算法融合的连续手语识别[J].西南民族大学学报(自然科学版),2023,49(02):165-172.
[8]杨全,彭进业.基于多特征SVMs分类器的手语识别[J].电子产品世界,2009,16(04):39-43.
[9]章田.基于最优化特征选择的空间坐标三维手势识别方法[D].杭州电子科技大学,2018.
[10]刘宇.基于信道状态信息的中国手语孤立词识别方法研究[D].燕山大学,2018.
[11]吴晓越.多终端连续中文手语识别系统开发及算法研究[D].东北电力大学,2022.
系统界面:

系统支持本地图片、本地视频、联网视频3种模式的实时手语识别。
软件采用python、QT、开发。
目前实现一个基于单张图片识别的手语识别版,包括基本QT界面,基于单张图片识别,基于本地视频视频,基于实时视频识别。
目前的数据集包括cry,drink,eat,good,happy,people,play,sleep,walk,you共10个类型。
由于目前数据集种类和数量都不高,训练过程中80%做训练集,20%做测试集,测试集可以达到90%+准确性。
主要技术路线,首先基于单张图片进行人脸+手部+身体的关键点检测,得到所有关键点坐标后,将其输入xgboost模型中进行训练,
训练完成后会得到训练模型,实际使用的时候,就使用该训练模型进行识别。
实际测试时候,整个视频中的每一帧都会进行关键点检测+xgb的手语识别,然后输出识别结果。
运行代码:
#设计界面qt指令
qt5-tools designer ui_mainwindow.ui
pyuic5 ui_mainwindow.ui -o ui_mainwindow.py
#代码运行指令
python frame.py
代码链接:https://download.csdn.net/download/qq_14845119/90448337