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

