借助 MediaPipe 手势识别器任务,你可以实时识别手势; 提供识别出的手势结果以及 检测到手部设备。您可以使用此任务从 用户,并调用与这些手势对应的应用功能。
此任务使用机器学习 (ML) 模型对图片数据进行操作,并接受 静态数据或连续流。该任务以 图片坐标, 世界坐标中的手形地标, 用手习惯 (左/右)以及多只手的手势类别。
<ph type="x-smartling-placeholder"></ph> 试试看!
开始使用
使用此任务时,请先按照以下某个实施指南操作 目标平台这些针对具体平台的指南将向您介绍 使用推荐的模型来实现此任务,并提供代码示例 以及建议的配置选项:
。任务详情
本部分介绍功能、输入、输出和配置 此任务的选项。
功能
- 输入图像处理 - 处理包括图像旋转、大小调整 标准化和颜色空间转换。
- 得分阈值 - 根据预测得分过滤结果。
- 标签许可名单和拒绝名单 - 指定手势类别 模型识别的字词。
任务输入 | 任务输出 |
---|---|
手势识别器接受以下某种数据类型的输入: <ph type="x-smartling-placeholder">
|
手势识别程序输出以下结果: <ph type="x-smartling-placeholder">
|
配置选项
此任务具有以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 | |
---|---|---|---|---|
running_mode |
设置任务的运行模式。共有三种
模式: IMAGE:单图输入的模式。 VIDEO:视频已解码帧的模式。 LIVE_STREAM:输入流媒体直播模式 例如来自相机的数据。在此模式下,resultListener 必须为 调用以设置监听器以接收结果 异步执行。 |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
|
num_hands |
最多能检测出手的数量
GestureRecognizer 。
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
手部检测要计算的最低置信度分数 在手掌检测模型中被认为是成功的。 | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
手部存在状态分数的最低置信度分数 特征点检测模型。在手势识别程序的视频模式和直播模式下, 如果来自手部特征码模型的手部存在信心得分低于 达到此阈值后,就会触发手掌检测模型。否则, 轻量级的手部跟踪算法用于确定 进行后续地标检测。 | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
要考虑的手部跟踪的最低置信度分数 成功。这是两只手之间的边界框 IoU 阈值, 分别表示当前帧和最后一帧。处于视频模式和直播模式 手势识别程序,如果追踪失败,手势识别程序会触发手部 检测。否则,系统会跳过手部检测。 | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
用于配置预设手势分类器行为的选项。预设的手势为 ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
用于配置自定义手势分类器行为的选项。 |
|
|
|
result_callback |
设置结果监听器以接收分类结果
在手势识别器处于直播模式时异步执行。
仅在跑步模式设为“LIVE_STREAM ”时才能使用 |
ResultListener |
不适用 | 不适用 |
模型
手势识别程序使用的模型包和两个预封装的模型包: 手势分类模型包和手势分类模型包。通过 地标模型可以检测到手部和手部几何图形的存在, 识别模型根据手部几何形状来识别手势。
<ph type="x-smartling-placeholder">模型名称 | 输入形状 | 量化类型 | 模型卡片 | 版本 |
---|---|---|---|---|
<ph type="x-smartling-placeholder"></ph> HandGestureClassifier | 192 x 192、224 x 224 | 浮点数 16 | <ph type="x-smartling-placeholder"></ph> 信息 | <ph type="x-smartling-placeholder"></ph> 最新 |
此任务还支持使用 Model Maker 修改模型包。 如需详细了解如何使用 Model Maker 为这项任务自定义模型, 请参阅为手势识别器自定义模型页面。
手部特征点模型包
手部特征点模型包检测 21 只手关节的关键点定位 坐标。该模型是使用 大约 3 万张真实图像,以及几张已渲染的合成手部 不同背景下的 BERT 模型。请参阅以下 21 个地标的定义:
手部地标模型包包含手掌检测模型和 手势特征的检测模型。手掌检测模型可以根据 从整个输入图片中选取的手,而手部特征点检测模型 由手掌检测模型定义的已剪裁手部图像上的特征点。
由于手掌检测模型要比较耗时,因此在“视频”模式或“实时”模式下 手势识别器会使用由检测到的手定义的边界框 用于定位下一个帧中的手部区域 帧。这样可以减少手势识别器触发手掌检测模型的次数。 仅当手部特征点模型无法再识别足够的必需元素时 或手部跟踪失败,手掌检测模型 来重新定位指针位置。
手势分类模型包
手势分类模型包可以识别以下常见的手势:
0 - Unrecognized gesture, label: Unknown
1 - Closed fist, label: Closed_Fist
2 - Open palm, label: Open_Palm
3 - Pointing up, label: Pointing_Up
4 - Thumbs down, label: Thumb_Down
5 - Thumbs up, label: Thumb_Up
6 - Victory, label: Victory
7 - Love, label: ILoveYou
如果模型检测到手,但无法识别手势,相应手势 识别器返回“None”的结果。如果模型未检测到手, 手势识别器返回空值。
手势分类模型包包含两步神经网络流水线 一个手势嵌入模型,然后是一个手势分类模型。 如需了解详情,请参阅手势分类模型卡片。
手势嵌入模型将图片特征编码为特征向量, 分类模型是一个轻量级手势分类器, 作为输入。提供的手势分类模型包包含 预设手势分类器,用于检测引入的 7 种常用手势 。你可以通过训练来扩展模型包,从而识别更多手势 自定义手势分类器。如需了解详情,请参阅以下内容 自定义模型部分。
包含预设手势分类器和自定义手势分类器的手势识别器 如果两个分类器都识别出同一手势,则优先选择自定义手势 其类别。如果只有一个手势分类器识别出该手势, 手势识别程序会直接输出识别出的手势。
任务基准
以下是根据上述内容确定的整个流水线的任务基准 预先训练的模型。延迟时间结果是使用以下参数在 Pixel 6 上的平均延迟时间: CPU / GPU。
模型名称 | CPU 延迟时间 | GPU 延迟时间 |
---|---|---|
GestureRecognizer | 16.76 毫秒 | 20.87 毫秒 |
自定义模型
如果您想改进或更改本演示文稿中提供的模型功能,
您可以使用 Model Maker 修改现有模型。使用的自定义模型
必须采用 .task
格式,这是一个模型软件包文件。您
应考虑使用 Model Maker 修改为完成此任务提供的模型
然后再自行构建
如需详细了解如何为此任务自定义模型,请参阅 为手势识别器自定义模型。