You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于MediaPipe Model Maker实现双手手势识别与预测

MediaPipe手势识别支持双手的解决方案

Android端配置调整

仅修改defaultNumResults无法实现双手检测,因为Gesture Recognizer依赖HandLandmarker完成手部检测,需同时配置HandLandmarker的参数:

// 构建基础配置
val baseOptions = BaseOptions.builder()
    .setModelAssetPath("your_custom_model.task")
    .build()

// 配置手部检测器,设置检测2只手
val handLandmarkerOptions = HandLandmarkerOptions.builder()
    .setBaseOptions(baseOptions)
    .setNumHands(2)
    .build()

// 配置手势识别器,关联手部检测器并设置结果数
val gestureRecognizerOptions = GestureRecognizerOptions.builder()
    .setHandLandmarkerOptions(handLandmarkerOptions)
    .setDefaultNumResults(2)
    .build()

// 创建手势识别器实例
val gestureRecognizer = GestureRecognizer.createFromOptions(context, gestureRecognizerOptions)

Python训练端调整

MediaPipe Model Maker默认基于单手数据训练,要支持双手需从数据集和模型配置两方面修改:

  1. 准备双手数据集:每个样本需包含两只手的关键点标注,双手组合手势需单独定义标签(例如"双手比心")。

  2. 自定义模型规格:通过ModelSpec设置num_hands=2,确保训练时模型适配双手特征:

from mediapipe_model_maker import gesture_recognizer

# 加载双手标注的数据集
data = gesture_recognizer.Dataset.from_folder(dirname="your_two_hand_dataset")
train_data, rest_data = data.split(0.8)
validation_data, test_data = rest_data.split(0.5)

# 配置支持双手的模型规格
spec = gesture_recognizer.ModelSpec(
    model_name="gesture_recognizer",
    hparams=gesture_recognizer.HParams(num_hands=2)
)

# 训练模型
model = gesture_recognizer.GestureRecognizer.create(
    train_data=train_data,
    validation_data=validation_data,
    model_spec=spec,
    epochs=10
)

# 导出适配双手的模型文件
model.export_model("two_hand_gesture_recognizer.task")

关键注意事项

  • 训练时的num_hands参数必须与Android端的setNumHands值保持一致(均为2)。
  • 双手组合手势的标签需在数据集中明确标注,模型才能学习到对应的特征组合。

内容的提问来源于stack exchange,提问作者Muhammad Hazrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:53:19