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

TensorFlow.js MoveNet输出形状不符:为何返回[1,6,56]而非[1,1,17,3]

姿态检测模型输出形状不符问题解答

输入要求

视频帧或图像需表示为形状为192x192x3的int32张量,通道顺序为RGB,值范围为[0, 255]。

输出说明

应为形状为[1, 1, 17, 3]的float32张量:

  • 最后维度的前两个通道代表17个关键点的归一化yx坐标(范围[0.0, 1.0]),关键点顺序为:
    • nose
    • left eye
    • right eye
    • left ear
    • right ear
    • left shoulder
    • right shoulder
    • left elbow
    • right elbow
    • left wrist
    • right wrist
    • left hip
    • right hip
    • left knee
    • right knee
    • left ankle
    • right ankle
  • 最后维度的第三个通道代表每个关键点的预测置信度,范围为[0.0, 1.0]

运行代码

const MODEL_PATH = './model';
const EXAMPLE_IMG = document.getElementById('exampleImg');

let movenet = undefined;

async function loadAndRunModel() {
  movenet = await tf.loadGraphModel(MODEL_PATH, {fromTFHub: true});
  
  let imageTensor = tf.browser.fromPixels(EXAMPLE_IMG);
  console.log(imageTensor.shape);
  
  let cropStartPoint = [15, 170, 0];
  let cropSize = [345, 345, 3];
  let croppedTensor = tf.slice(imageTensor, cropStartPoint, cropSize);

  let resizedTensor = tf.image
    .resizeBilinear(croppedTensor, [192, 192], true)
    .toInt();
  console.log(resizedTensor.shape);

  let tensorOutput = movenet.predict(tf.expandDims(resizedTensor));
  // 修正:tensorOutput是Tensor对象,需用array()或data()获取数据
  let arrayOutput = await tensorOutput.array();

  console.log(arrayOutput);
}

loadAndRunModel();

问题描述

运行上述代码后,得到的输出张量形状为[1,6,56],与文档描述的[1,1,17,3]不符,请问出现该差异的原因是什么?

原因分析

  1. 模型版本不匹配:你加载的是Movenet的MultiPose多姿态检测模型,但文档描述的是SinglePose单姿态检测模型的输出格式。

    • MultiPose模型的设计目标是检测图像中最多6个人的姿态,因此输出形状为[1, 6, 56]:
      • 第一个维度1表示批量大小;
      • 第二个维度6是模型支持的最大检测人数;
      • 第三个维度56包含每个检测目标的完整数据:17个关键点的(x,y,置信度)(共51维)加上检测框的坐标与置信度(共5维),总和为56。
    • 而SinglePose模型仅专注于检测单个人的姿态,输出结构为[1,1,17,3],完全匹配文档描述的格式。
  2. 代码细节修正:原代码中let arrayOutput = await tensorOutput;存在错误,tensorOutput是Tensor对象而非Promise,正确获取输出数组的方式应为await tensorOutput.array()或await tensorOutput.data()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:25:08