基于MediaPipe 的数字手势识别

2022-08-17 09:17刘德发
电子制作 2022年14期
关键词:指腹手部关键点

刘德发

(西京学院 信息工程学院,陕西西安,710000)

0 引言

随着科学技术的飞速发展,计算机在科学技术领域发挥着愈加重要的能力。相应地,计算机的交互性改善日益成为科学研究领域的热点之一,在这种技术要求的背景下,研究的主要目的就是创建一个和谐自然的人机交互自然环境,让用户即时地与设备进行通信,让计算机可以准确表达出各种人类的表情及情绪。

而今,通过手势来赋予计算机简单指令的交互形式已经成为计算机的一个重要研究领域。手势主要由手部动作组成,作为人类社会理解和表达的一部分,不同于与键盘和鼠标之间的交互,手势检测中对人们使用计算机中和网络来说更容易、更高效。本文基于Mediapipe 框架,利用OpenCV 视觉库实现了一种数字手势识别的方法,能有效识别手部的一些简单手势,且响应较快,具有较高性能。

1 MediaPipe 介绍

作为谷歌学术研究部所开发的一个开源框架,基于图形数据处理的目的,MediaPipe 主要用于处理构建使用了多种形式的数据源(如视频、音频和各种其它传感器数据和时间序列数据)[1]。MediaPipe 具有跨平台操作的优势,能在多个平台上运行,并支持计算机使用GPU 处理。通过MediaPipe,待处理的图像可以被分解成由图形模块表示的多个数据流管道,具有很高的性能。

图1 Mediapipe 姿态预测流程

Mediapipe 手势识别的部分都是使用内部Bazel 工具构建的。用户可以免费使用这个跨平台构建工具。同时,Mediapipe 利用Machine Learning 技术从一帧中推断出手部21 个3D 地标,实时性能较高,还可以针对多手识别的情况进行处理。

图2 手部关键点坐标

借助MediaPipe,能够把数据流构建成模块化的组图,将视频或者音频流数据输入到图形中,利用各个功能模块构建的图形模型管道对这些数据进行相关处理,并从图形中输出最终结果数据[2]。使得整体处理流程更加流畅。因此,开发人员可以将MediaPipe 用作迭代优化改进其应用程序的环境,最终得到的结果也能在不同的设备和平台上重现。

2 手势识别具体设计流程

■2.1 检测流程

在本文的实验中,原始模型是通过计算机摄像头捕捉到的实时视频作为输入,利用MediaPipe 框架中的检测模块跟踪手部动作并识别手势。根据官方文件,手势识别的平均准确率为95.7%。为了更好地覆盖手掌位置并额外监控手掌的几何特性,我们在不同背景下进行了实验,具体实验过程如下:

图3 实验流程图

(1)创建手部检测模型。该部分由Mediapipe 模块中的手掌检测模型BlazePalm Detector 直接实现,BlazePalm 可以高效识别手的整体轮廓和运动方向,具有较大的覆盖范围和较高的检测精度,适用于不同场景中不同大小的手部检测。

图4 手部检测代码部分

(2)手部关键点定位。Mediapipe 配备了Hand Landmark 模型,用于识别3D 手节点。操作手掌检测模型Blazepalm 定义的手部图像区域,可以高精度地返回手部关键点。在识别出的手部区域,该模型通过回归算法将关键点精确定位在手部的三维关节坐标上,并且对部分可见和遮挡的手部动作具有很高的鲁棒性。

图5 手部关键点坐标检测代码部分

图6 手部关键点标注代码部分

(3)构建数字手势识别模块。在得到手部关键点的坐标后,MediaPipe 通过内置算法来推断手势动作。我们可以通过手指的弯曲角度来确定手势的状态,将这组状态映射到内置的一系列预定义的手势进行匹配,从而实现数字手势的简单识别。通过这种简单直接的方法,我们可以有效评估基础的数字手势,并通过响应速度来验证检测的质量。

图7 数字手势推导代码部分

■2.2 识别实验

本文识别实验在Windows 10 平台上运行,使用的开发语言为 Python,辅助的视觉库为OpenCV。在本文实验中,初步对单手数字0~5 的手势进行了测试识别,通过交互实时的响应速度来检验实验质量。

起初,我们利用MediaPipe 内置的手部检测模型Blazepalm Detector 创建一个针对手部检测的模块,然后利用Hand Landmark Model 进行手部的定位,以此得到手部21 个关键点的坐标。通过观察,我们可以发现针对除大拇指外的其余四根手指,在正常情况下指尖的纵坐标大于指腹的纵坐标,而在闭合的情况下却小于指腹的纵坐标。因此通过一个简单的坐标比较我们可以判断出食指、中指、无名指、小指的状态。而针对大拇指而言,观察可以得到,大拇指竖起与放下时指尖与指腹的坐标大小刚好相反。还可以利用大拇指与其他手指间的角度来进行判断。这里我们采用的是比较其指尖与指腹的横坐标来判断其状态的变化。实验结果如图9 所示。

图8 待识别数字手势

图9 数字手势识别实验

■2.3 实验数据分析

由上述实验可知,基于MediaPipe 框架的手势识别能够有效地针对手的局部运动进行识别判定。在响应速度方面,识别响应时间及时,实验过程中FPS 保持在20~30 左右。同时在实验中出现多只手识别的情况下,MediaPipe 能够很好地避免无关手的干扰,使目标的输入尽可能为所要求手的信息,具有一定的抗干扰性能。由于数据的输入为连续的视频流,从而导致在实验过程中仍存在少许的误识别的现象,同时该方案适用局限性大,在一些复杂手势的识别上效果仍有待提高。

3 结束语

本文简要讨论了在MediaPipe 框架下实现的简单数字手势识别。对整体检测流程做了基础性描述,该框架对于手部的局部运动可以有效识别,且识别性能较高。手势识别由于其方便简洁的特点在人类与计算机的交互中具有良好的研究前景。在不远的未来,相信研究人员会进一步深入地研究手势识别领域,将识别准确率提高,加快手势的识别速度,扩展其手势库,并实现更高效更灵活的发展。

图10 多手识别结果

猜你喜欢
指腹手部关键点
论建筑工程管理关键点
水利水电工程施工质量控制的关键点
高通联手Ultraleap 为XR2提供手部交互解决方案
厨房料理小妙招——山药去皮手不痒的窍门
足部按摩(二十九)
利用定义法破解关键点
机械能守恒定律应用的关键点
焕“发”光彩
改良Moberg岛状皮瓣修复远节指腹缺损
指针减肥法