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

如何为pose_landmark_gpu.pbtxt添加基于姿态的动作识别Calculator节点

用户提问:MediaPipe姿态检测器新增动作识别节点相关问题

我计划在pose_landmark检测器(pose_landmark_gpu.pbtxt)中新增action_reconition calculator节点实现基于姿态的动作识别,请问当前是否已有适配该需求的Calculator实现?该节点需满足以下要求:

  • 输入:pose landmarks
  • 基于TFLite模型完成推理
  • 输出:对应动作类别的概率值
    我注意到原生姿态关键点检测器使用了tensors_to_landmarks_calculator.cc,我需要一个输入输出类型适配的同类文件,请问是否有可复用的cc模板文件可供我适配修改?

参考pbtxt配置

以下是我添加动作分类节点后的pbtxt配置内容:

# GPU buffer. (GpuBuffer)
input_stream: "input_video"

output_stream: "output_video"  # Output image with rendered results. (GpuBuffer)
output_stream: "pose_landmarks"  # Pose landmarks. (NormalizedLandmarkList)
output_stream: "action_detection"  # Action Probabilities

node {
  calculator: "FlowLimiterCalculator"
  input_stream: "input_video"
  input_stream: "FINISHED:output_video"
  input_stream_info: {
    tag_index: "FINISHED"
    back_edge: true
  }
  output_stream: "throttled_input_video"
}

# Subgraph that detects poses and corresponding landmarks.
node {
  calculator: "PoseLandmarkGpu"
  input_stream: "IMAGE:throttled_input_video"
  output_stream: "LANDMARKS:pose_landmarks"
  output_stream: "DETECTION:pose_detection"
  output_stream: "ROI_FROM_LANDMARKS:roi_from_landmarks"
}

# Subgraph that renders pose-landmark annotation onto the input image.
node {
  calculator: "PoseRendererGpu"
  input_stream: "IMAGE:throttled_input_video"
  input_stream: "LANDMARKS:pose_landmarks"
  input_stream: "ROI:roi_from_landmarks"
  input_stream: "DETECTION:pose_detection"
  output_stream: "IMAGE:output_video"
}

# Subgraph that detects actions from poses
node {
  calculator: "ActionDetectorGPU"
  input_stream: "LANDMARKS:pose_landmarks"
  output_stream: "ACTION:action_detection"
}

提问更新

我已找到名为SigNN的开源项目,其实现逻辑与我的需求一致,仅面向手姿态分类识别美国手语字母,我会参考该项目的实现,也欢迎大家提供其他可行思路。


问题解答

目前MediaPipe官方没有直接匹配该需求的现成Calculator,但有成熟的复用方案:

  1. 快速实现方案(无需自定义Calculator)
    直接用官方自带的三个通用Calculator串联即可满足需求:
    • 第一步用LandmarksToTensorCalculator将输入的NormalizedLandmarkList格式的姿态关键点转换为TFLite模型要求的输入张量
    • 第二步用通用TfLiteInferenceCalculator加载你训练好的动作分类TFLite模型完成推理
    • 第三步用TensorToFloatArrayCalculator将模型输出的张量解析为动作类别概率值输出
  2. 自定义节点开发方案
    如果你要封装为独立的ActionDetectorGPU节点,你提到的tensors_to_landmarks_calculator.cc完全可以作为模板复用,仅需要修改输入解析、推理调用、输出封装三个部分的逻辑即可,官方Calculator的注册机制、流绑定、参数处理框架都可以直接沿用。
  3. 开源参考项目适配方法
    你找到的手姿态分类项目的逻辑可以直接复用,只需要做两处修改:
    • 将输入处理部分针对21个手部关键点的逻辑,替换为适配33个人体姿态关键点的处理
    • 替换为你自己训练的动作分类TFLite模型即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:54:03