You need to enable JavaScript to run this app.
文档中心
AI 数据湖服务

AI 数据湖服务

复制全文
下载 pdf
空间标注
手部姿态估计
复制全文
下载 pdf
手部姿态估计
面向图片和视频提供人手姿态估计,识别左右手、手部检测框和 21 点关键点。支持单目图片、单目视频和基于真实标定及同步时间轴的双目视频,可返回二维、腕部相对三维及相机坐标,并按需输出相机轨迹和手部世界坐标,适用于具身数据标注和手部动作分析。​
算子介绍​
算子 ID:las_handpose_estimation​
适用场景​
​
​
场景​
描述​
具身数据标注​
从图片或视频中提取手部检测框、左右手、关键点和轨迹。​
手部动作分析​
使用逐帧 21 点姿态及轨迹 ID 分析手部动作。​
双目三维分析​
基于真实标定和同步时间轴的双目视频,获取相机坐标及配对质量。​
​
核心能力​
  • 单目图片:直接在 Poll 结果中返回手部检测框、左右手识别结果,以及 21 点二维和腕部相对三维关键点。​
  • 单目视频:返回可下载的 JSON 结果文件,包含每个采样帧中的手部对象、跨帧轨迹标识和时间信息。可通过视频片段参数(video_clip)只处理指定时段,也可通过时序平滑参数(task_context.temporal.smoothing)控制关键点平滑策略。​
  • 双目视频:支持输入左右目独立视频或左右目水平拼接视频。通过双目设备与标定信息(task_context.stereo.rig_manifest)提供左右目媒体组织方式、真实相机标定和同步时间轴,结果包含手部三维关键点及左右目帧配对质量。​
  • 相机与世界坐标:支持提供针孔相机或 KB4 鱼眼相机的内参(task_context.camera),也可请求服务自动估计相机参数。视频可通过世界坐标开关(task_context.world_coordinates.enabled)按需返回逐帧相机位置和姿态(camera_pose),以及手部 21 点世界坐标(keypoints_3d_world)。​
效果展示​
​​
【示例 1:单目视频】​
  • 输入示例​
  • 单目视频​
  • ​
    Audio/video is not supported Please TryRefresh
    Replay
    Play
    00:00 / 00:00 Live
    00:00
    Fullscreen
    Cssfullscreen
    1x
    • 2x
    • 1.5x
    • 1x
    • 0.75x
    • 0.5x
    Click and hold to drag
    ​
    ​
  • 任务代码-核心参数示例​
  • ​
    "data": {​
    "task_template": "mono_hand_pose_estimation@v1",​
    "media": {​
    "uri": "https://example.com/mono-hand.mp4",​
    "type": "video",​
    "fps": 10,​
    "max_frames": 3600​
    }​
    }​
    ​
  • 输出结果示例​
  • 基于输出结果视频标注展示​
  • ​
    Replay
    Play
    00:00 / 00:10 Live
    00:00
    Fullscreen
    Cssfullscreen
    1x
    • 2x
    • 1.5x
    • 1x
    • 0.75x
    • 0.5x
    Click and hold to drag
    ​
    ​
——注意,本算子不直接返回视频结果,以上为基于算子处理结果 manifest 在原视频上进行标注后的示例。​
​
​​
【示例 2:双目任务】​
  • 输入示例​
  • 左目视频、时间戳、鱼眼相机参数​
  • ​
    Audio/video is not supported Please TryRefresh
    Replay
    Play
    00:00 / 00:00 Live
    00:00
    Fullscreen
    Cssfullscreen
    1x
    • 2x
    • 1.5x
    • 1x
    • 0.75x
    • 0.5x
    Click and hold to drag
    ​
    ​
  • ​
  • 右目视频、时间戳、鱼眼相机参数​
  • ​
    Replay
    Play
    00:00 / 00:10 Live
    00:00
    Fullscreen
    Cssfullscreen
    1x
    • 2x
    • 1.5x
    • 1x
    • 0.75x
    • 0.5x
    Click and hold to drag
    ​
    ​
  • ​
  • 左相机坐标系到右相机坐标系的刚体变换​
  • 任务代码-核心参数示例​
  • ​
    "data": {​
    "task_template": "stereo_hand_pose_estimation@v1",​
    "media": {​
    "uri": "https://example.com/left.mp4",​
    "type": "video",​
    "fps": 10,​
    "max_frames": 3600​
    },​
    "task_context": {​
    "stereo": {​
    "rig_manifest": {​
    "uri": "https://example.com/stereo-rig.json"​
    }​
    },​
    "temporal": {​
    "smoothing": "auto"​
    },​
    "world_coordinates": {​
    "enabled": false​
    }​
    }​
    }​
    ​
  • stereo_rig.json 须为完整的 stereo_rig@v1 文档,包含右目视频地址、左右目时间戳、真实相机标定和右目相对左目的外参;不能只提供 schema。​
  • 输出结果示例​
  • 基于输出结果视频标注展示​
  • ​
    Replay
    Play
    00:00 / 00:10 Live
    00:00
    Fullscreen
    Cssfullscreen
    1x
    • 2x
    • 1.5x
    • 1x
    • 0.75x
    • 0.5x
    Click and hold to drag
    ​
    ​
——注意,本算子不直接返回视频结果,以上为基于算子处理结果 manifest 在原左视频上进行标注后的示例。​
​
​​
【示例 3:手部世界坐标】​
  • 输入示例​
  • 单目头戴视频​
  • ​
    Replay
    Play
    00:00 / 00:05 Live
    00:00
    Fullscreen
    Cssfullscreen
    1x
    • 2x
    • 1.5x
    • 1x
    • 0.75x
    • 0.5x
    Click and hold to drag
    ​
    ​
  • 任务代码-核心参数示例​
  • ​
    {​
    "data": {​
    "task_template": "mono_hand_pose_estimation@v1",​
    "media": {​
    "uri": "https://example.com/mono-headset.mp4",​
    "type": "video",​
    "fps": 10,​
    "max_frames": 50​
    },​
    "task_context": {​
    "camera": {​
    "enable_estimation": true,​
    "model": "pinhole"​
    },​
    "world_coordinates": {​
    "enabled": true,​
    "quality": {​
    "min_tracking_coverage": 0.8,​
    "min_valid_hand_frame_coverage": 0.5​
    }​
    }​
    }​
    }​
    }​
    ​
  • 本示例由 LAS 估计针孔相机内参。如果已有与输入画面匹配的针孔相机内参,也可通过 task_context.camera 直接提供。​
  • 基于输出结果的世界坐标标注展示​
  • ​
    Replay
    Play
    00:00 / 00:05 Live
    00:00
    Fullscreen
    Cssfullscreen
    1x
    • 2x
    • 1.5x
    • 1x
    • 0.75x
    • 0.5x
    Click and hold to drag
    ​
    ​
  • 输出的 Hand Pose manifest 1.1 包含逐帧相机位姿 camera_pose 和 21 点手部世界坐标 keypoints_3d_world。使用结果前,需检查 world_coordinates.status 和逐手 keypoints_3d_world.valid。​
——注意,本算子不直接返回视频结果,以上输出视频为基于 Hand Pose manifest 1.1 在原视频上叠加世界坐标标注后的示例。世界坐标以首个有效相机位姿为原点,单目尺度为估计值,仅适合分析同一请求内的相对位移和运动趋势。​
​
​​
支持的地域​
  • 北京:cn-beijing​
  • 上海:cn-shanghai​
算子性能​
​
​
细分项​
限制或说明​
视频采样​
0.1~30 FPS,默认 10 FPS,且不得高于源视频 FPS。​
采样帧上限​
默认 10800 帧;单目长视频最大 54000 帧,World 和双目最大 10800 帧。​
耗时​
与输入帧数、采样 FPS、单目/双目模式及是否启用世界坐标相关。​
RPM 与并发度​
并发达到限制时返回 Connection.TooMany。​
​
输入与输出要求​
输入要求​
​
​
细分项​
详细要求​
支持的数据模态​
  • 图片​
  • 视频​
图片​
  • 格式:bmp、gif、jpeg、jpg、png、tif、tiff、webp。​
  • 不接受 fps、max_frames、video_clip 或世界坐标参数。​
视频​
  • 格式:avi、m4v、mkv、mov、mp4、mpeg、mpg、webm。​
  • 单目长视频要求输入或裁剪结果为 CFR,最长 1800 秒,且不能同时开启世界坐标。​
  • 双目最多 10800 帧,左右目分辨率相同,基线为 0.02~0.30 米。​
输入路径​
  • 公网 URL:使用 LAS 服务可直接访问的 HTTP/HTTPS 地址;使用签名 URL 时,有效期须覆盖任务排队和执行过程。​
  • TOS 路径:使用 tos://bucket/key 格式。TOS Bucket 须与 LAS 服务属于同一主账号、同一地域,并授予 LAS 服务目标对象的读取权限。​
  • 单目媒体、左右目水平拼接视频或双目独立视频的左目媒体通过 media.uri 提供;双目独立视频的右目媒体通过双目设备与标定信息中的 task_context.stereo.rig_manifest.source.right_media_uri 提供,路径要求相同。​
​
输出要求​
​
​
细分项​
详细要求​
支持的数据模态​
* 文本(JSON)​
文本(JSON)​
  • 图片任务:Poll 的 data.frames 内联返回手部检测框、左右手、轨迹标识和 21 点关键点;未识别到手时,当前帧的 objects 为空数组。​
  • 视频任务:Poll 的 data.result_manifest_url 返回完整 JSON 结果文件地址。结果按采样帧返回手部对象、轨迹标识、时间信息和关键点;双目任务还可返回帧配对质量。​
  • 世界坐标任务:使用结果前须同时检查整体可用状态 world_coordinates.status 和逐手结果有效标记 keypoints_3d_world.valid。单目估计尺度不能直接作为测量级距离,也不能直接跨视频对齐。​
输出路径​
  • 平台托管:不传 output.destination 时,由平台托管视频结果文件,最终地址通过 Poll 的 data.result_manifest_url 返回;地址存在有效期,请及时保存所需结果。​
  • TOS:通过 output.destination 指定 tos://bucket/prefix 格式的输出目录。TOS Bucket 须与 LAS 服务属于同一主账号、同一地域,并授予 LAS 服务目标目录的写入权限;该参数是目录前缀,不是具体文件名,最终文件地址以 Poll 的 data.result_manifest_url 为准。​
​
计费说明​
  • 计费标准​
  • ​
  • ​
    细分项​
    计费标准说明​
    计费项​
    按有效目标实际处理的采样帧数计费。您可以通过 poll接口返回的 prompt_frame_count 参数查看当前任务的有效目标实际处理的采样帧数​
    计费类型​
    按量计费,按实际的计费用量每小时出账。​
    单价​
    手部姿态预估任务的计费受单价和 FPS 系数影响,费用 = 单价 * FPS 系数 * 用量,详情见下文。​
    ​
  • 计费单价​
  • ​
  • ​
    单价​
    FPS 系数​
    1.6 元/千帧​
    与请求参数 media.fps 的设置结果有关:​
    • [1 , 5] :系数为 5​
    • (6 , 10]:系数为 7​
    • (11 , 30] :系数为 10​
    ​
  • 计费示例​
  • 提交了一个手部姿态估计任务,请求参数的 media.fps 设置为 15,poll 接口返回的 prompt_frame_count 取值为 600,则,FPS 系数为 10,目标检测与分割费用 = 1.6元/千帧 * 10 * 600帧/1000 = 9.6 元。​
说明​
如果您希望在调用算子前预估任务处理的用量(prompt_frame_count)值,可通过以下方式进行预估。​
prompt_frame_count ≈ 视频时长(秒) * FPS 系数​
注意,以上仅为预估取值,实际用量需以 poll 接口和最终账单为准。​
注意与前提​
申请开白​
当前功能处于白名单阶段,使用前需提交工单申请开通。​
其他​
​
​
细分项​
注意与前提​
开通 LAS​
  • 如果您是一个全新的火山引擎用户,此前未开通过 LAS 产品,您可先开通 LAS。不使用 LAS 的计费功能、仅开通 LAS 产品不会产生费用,操作参见准备工作。​
费用​
调用算子前,请先了解 LAS 算子相关费用,详情参见大模型调用计费。本算子不调用视觉语言模型。​
鉴权(API Key)​
调用算子前,请先生成 LAS API Key,并建议配置为环境变量,详情参见获取 API Key 并配置。本算子无需传入方舟 API Key。​
BaseURL​
调用算子前,请根据 LAS 服务所在地域获取对应的 Base URL,详情参见获取 Base URL。下文示例仅供参考,实际调用时需替换为对应地域的地址。​
​
Rest API 调用​
API 调用说明​
通过 Submit 提交异步任务并取得 task_id,再使用相同算子身份和账号调用 Poll。仅在 task_status=COMPLETED 且 business_code=0 时读取结果。​
Submit​
请求参数​
operator_id string 必选 示例值: las_handpose_estimation​
算子 ID,固定为 las_handpose_estimation。​
​
operator_version string 必选 示例值: v1​
算子版本,固定为 v1。​
​
data HandPoseEstimationInfo 必选​
手部姿态估计请求。​
task_template string 必选 示例值: mono_hand_pose_estimation@v1​
手部姿态估计任务模版,单目使用 mono_hand_pose_estimation@v1,双目使用 stereo_hand_pose_estimation@v1。​
​
media HandPoseMedia 必选​
输入媒体。​
uri string 必选 示例值: tos://your-bucket/input.mp4​
可读取的 HTTP/HTTPS 或 TOS 媒体地址。​
​
type string Conditional 示例值: video​
image 或 video;省略时按后缀推断。​
​
fps float Optional 示例值: 10​
仅视频,默认 10,范围 [0.1,30],不得高于源 FPS。​
​
max_frames integer Optional 示例值: 300​
默认 10800。单目普通视频范围 [1,54000];单目 World 和双目范围 [1,10800]。​
​
​
video_clip VideoClip Optional​
仅单目视频支持的裁剪片段。​
start float 必选 示例值: 5.0​
开始秒数,须大于等于 0。​
​
end float 必选 示例值: 20.0​
结束秒数,须大于 start,片段最长 1800 秒。​
​
​
task_context HandPoseTaskContext Conditional​
任务模版的上下文参数,可通过 camera 提供相机标定参数或请求估计内参,通过 world_coordinates 请求世界坐标。单目任务可省略;双目任务必须提供 stereo 参数。​
camera CameraInput Optional​
仅单目任务使用;为 media.uri 中输入的图片或视频提供相机标定参数。不传且未启用内参估计(enable_estimation=false)时,使用模型的虚拟相机。​
enable_estimation boolean Optional 示例值: true​
是否请求服务估计相机内参,默认 false。已提供 camera 时直接使用 camera 参数提供的相机内参数据。​
​
model string Optional 示例值: pinhole​
相机模型,支持 pinhole、kb4(原始鱼眼输入)、auto(仅用于 enable_estimation=true 的估计场景),默认 pinhole。如果开启世界坐标模式(world_coordinates.enabled=true),只接受已完成去畸变的针孔画面和对应的 pinhole 内参,或设置 camera.enable_estimation=true 请求估计针孔内参。​
​
intrinsics array of float Conditional 示例值: [915.2,914.8,960.0,540.0]​
相机内参 [fx,fy,cx,cy],单位为像素,必须是 4 个有限数值,且 fx、fy 大于 0。一条请求中的所有帧共用该内参;暂不支持逐帧内参。内参必须与输入媒体的实际画面一致,媒体经过缩放、裁剪或旋转时需同步调整。没有可靠内参时应省略整个 camera,不要填写估算值。​
​
distortion_coefficients array of float Conditional 示例值: []​
KB4 鱼眼模型的 [k1,k2,k3,k4],必须是 4 个有限数值。model=kb4 时必选;针孔模型必须省略或传空数组。​
​
calibration_resolution array of integer Conditional 示例值: [1920,1080]​
标定内参对应的 [width,height],两个值均须为正整数。model=kb4 时必选,针孔模型可省略;提供时必须与服务解码到的媒体尺寸一致。​
​
​
temporal TemporalInput Optional​
smoothing string Optional 示例值: auto​
默认 auto,按 FPS 选择窗口;on 使用完整平滑窗口;off 仅关闭参数平滑,不关闭轨迹关联或短缺口补全。on、off 仅用于单目视频,图片和双目只支持 auto。​
​
​
world_coordinates WorldCoordinatesInput Optional​
世界坐标配置,仅视频使用。开启后计算相机轨迹及手部世界坐标,并发布 Hand Pose manifest 1.1;开启时,必须显式提供 media.max_frames。单目任务要求针孔相机内参或针孔/自动估计,显式 max_frames 不超过 10800。​
enabled boolean Optional 示例值: true​
是否计算世界坐标,默认 false。设为 false 时不得传 quality。​
​
quality WorldQualityInput Optional​
世界坐标质量门。客户端参数只能在服务端最低门限基础上收紧,不能放宽。​
min_tracking_coverage float Optional 示例值: 0.8​
相机轨迹覆盖率最低要求,默认 0.8,范围 [0.8,1]。​
​
min_valid_hand_frame_coverage float Optional 示例值: 0.5​
有效手部世界坐标帧覆盖率最低要求,默认 0.5,范围 [0.5,1]。​
​
​
required boolean Optional 示例值: false​
仅双目使用。为 true 时要求世界坐标正式采用、至少一帧有效且轨迹质量未拒绝;否则任务失败。为 false 时允许基础 HandPose 成功。​
​
​
stereo StereoInput Conditional​
双目模板必填;单目不能填写。双目任务场景下,需将请求参数 media.uri 设置为左目视频,并在 stereo 中配置右目视频、左右目时间戳等其他输入参考。​
rig_manifest RigManifestReference 必选​
完整 stereo_rig@v1,只提供 schema 无效。可通过 uri 引用可读取的 HTTPS/TOS JSON,或通过 content 内联完整对象,两者二选一;URI 引用可同时提供 64 位小写十六进制 sha256。​
uri string Conditional 示例值: https://example.com/document.json​
与 content 二选一,填写可读取的 HTTPS/TOS JSON 地址。​
​
content StereoRigManifest Conditional​
与 uri 二选一,内联完整的双目设备、标定和时间轴信息;使用内联对象时不能再填 sha256。​
schema string 必选 示例值: stereo_rig@v1​
固定为 stereo_rig@v1。​
​
rig_id string 必选 示例值: rig-001​
稳定设备标识,长度 1~256。​
​
calibration_version string 必选 示例值: v1​
标定版本,长度 1~128。​
​
reference_view string 必选 示例值: left​
固定为 left。​
​
source StereoSource 必选​
媒体组织方式。​
packing string 必选 示例值: side_by_side​
side_by_side 表示水平拼接,separate 表示左右两路独立视频。​
​
view_resolution array of integer Conditional 示例值: [960,540]​
水平拼接时必填的单目 [宽,高];整帧必须为 [2×宽,高]。​
​
view_order array of string Conditional 示例值: ["left","right"]​
水平拼接时必填,只能为 [left,right] 或 [right,left]。​
​
right_media_uri string Conditional 示例值: https://example.com/right.mp4​
独立视频模式必填的右目 HTTPS/TOS 地址。​
​
right_media_sha256 string Optional​
右目媒体的 64 位小写十六进制 SHA-256。​
​
​
timeline StereoTimeline Conditional​
独立视频模式必填;水平拼接可省略并使用同一媒体时间线。​
timestamps TimestampReference Optional​
水平拼接的共享时间戳;省略时从媒体推断。与左右目时间戳引用一样,支持 uri 或内联 content。​
uri string Conditional 示例值: https://example.com/document.json​
与 content 二选一,填写可读取的 HTTPS/TOS JSON 地址。​
​
content FrameTimestamps Conditional​
与 uri 二选一,内联时间戳文档。​
schema string 必选 示例值: frame_timestamps@v1​
固定为 frame_timestamps@v1。​
​
timestamp_unit string 必选 示例值: ns​
固定为纳秒 ns。​
​
clock_id string 必选 示例值: rig-clock​
时钟标识;独立视频的左右目必须相同。​
​
clock_domain string Optional 示例值: soc_shared_clock​
默认 soc_shared_clock;独立视频必须使用该值。​
​
event string Optional 示例值: exposure_end​
默认 exposure_end;独立视频必须表示曝光结束。​
​
source string Optional 示例值: hardware_exposure​
默认 hardware_exposure;SBS 也可使用 container_pts 或 frame_index_fps。​
​
frame_order string 必选 示例值: presentation​
固定为 presentation。​
​
timestamps array of integer 必选 示例值: [0,33333333]​
逐帧非负、严格递增的 int64 纳秒时间戳,数量须与视频帧匹配。​
​
​
sha256 string Optional​
仅 uri 引用可填,为 64 位小写十六进制摘要。​
​
​
left_timestamps TimestampReference Conditional​
独立视频模式必填的左目 frame_timestamps@v1。​
uri string Conditional 示例值: https://example.com/document.json​
与 content 二选一,填写可读取的 HTTPS/TOS JSON 地址。​
​
content FrameTimestamps Conditional​
与 uri 二选一,内联时间戳文档。​
schema string 必选 示例值: frame_timestamps@v1​
固定为 frame_timestamps@v1。​
​
timestamp_unit string 必选 示例值: ns​
固定为纳秒 ns。​
​
clock_id string 必选 示例值: rig-clock​
时钟标识,须与右目相同。​
​
clock_domain string Optional 示例值: soc_shared_clock​
独立视频必须使用 soc_shared_clock。​
​
event string Optional 示例值: exposure_end​
独立视频必须表示曝光结束。​
​
source string Optional 示例值: hardware_exposure​
独立视频使用硬件曝光时间。​
​
frame_order string 必选 示例值: presentation​
固定为 presentation。​
​
timestamps array of integer 必选 示例值: [0,33333333]​
逐帧非负、严格递增的 int64 纳秒时间戳,数量须与左目视频帧匹配。​
​
​
sha256 string Optional​
仅 uri 引用可填,为 64 位小写十六进制摘要。​
​
​
right_timestamps TimestampReference Conditional​
独立视频模式必填,须与左目使用同一共享 SoC 时钟、曝光事件和单位。​
uri string Conditional 示例值: https://example.com/document.json​
与 content 二选一,填写可读取的 HTTPS/TOS JSON 地址。​
​
content FrameTimestamps Conditional​
与 uri 二选一,内联时间戳文档。​
schema string 必选 示例值: frame_timestamps@v1​
固定为 frame_timestamps@v1。​
​
timestamp_unit string 必选 示例值: ns​
固定为纳秒 ns。​
​
clock_id string 必选 示例值: rig-clock​
时钟标识,须与左目相同。​
​
clock_domain string Optional 示例值: soc_shared_clock​
独立视频必须使用 soc_shared_clock。​
​
event string Optional 示例值: exposure_end​
独立视频必须表示曝光结束。​
​
source string Optional 示例值: hardware_exposure​
独立视频使用硬件曝光时间。​
​
frame_order string 必选 示例值: presentation​
固定为 presentation。​
​
timestamps array of integer 必选 示例值: [0,33333333]​
逐帧非负、严格递增的 int64 纳秒时间戳,数量须与右目视频帧匹配。​
​
​
sha256 string Optional​
仅 uri 引用可填,为 64 位小写十六进制摘要。​
​
​
​
cameras StereoCameras 必选​
左右相机真实标定。​
left StereoCamera 必选​
左目标定;右目 right 使用相同字段。​
model string 必选 示例值: pinhole​
支持 pinhole、kb4 或 double_sphere。​
​
resolution array of integer 必选 示例值: [960,540]​
单目 [width,height],须与实际输入视图一致。​
​
parameters CameraParameters 必选​
相机模型参数。​
fx float 必选 示例值: 700.0​
水平焦距,单位像素,须大于 0。​
​
fy float 必选 示例值: 700.0​
垂直焦距,单位像素,须大于 0。​
​
cx float 必选 示例值: 480.0​
主点横坐标,单位像素。​
​
cy float 必选 示例值: 270.0​
主点纵坐标,单位像素。​
​
k1 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
k2 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
k3 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
k4 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
xi float Conditional 示例值: -0.15​
Double Sphere 模型必填。​
​
alpha float Conditional 示例值: 0.66​
Double Sphere 模型必填,范围 0<alpha<1。​
​
​
​
right StereoCamera 必选​
右目标定,分辨率和模型参数必须对应右目真实画面。​
model string 必选 示例值: pinhole​
支持 pinhole、kb4 或 double_sphere。​
​
resolution array of integer 必选 示例值: [960,540]​
单目 [width,height],须与实际输入视图一致。​
​
parameters CameraParameters 必选​
相机模型参数。​
fx float 必选 示例值: 700.0​
水平焦距,单位像素,须大于 0。​
​
fy float 必选 示例值: 700.0​
垂直焦距,单位像素,须大于 0。​
​
cx float 必选 示例值: 480.0​
主点横坐标,单位像素。​
​
cy float 必选 示例值: 270.0​
主点纵坐标,单位像素。​
​
k1 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
k2 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
k3 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
k4 float Conditional 示例值: 0.0​
KB4 必填的畸变系数。​
​
xi float Conditional 示例值: -0.15​
Double Sphere 模型必填。​
​
alpha float Conditional 示例值: 0.66​
Double Sphere 模型必填,范围 0<alpha<1。​
​
​
​
​
extrinsic StereoExtrinsic 必选​
右目相对左目的外参。​
convention string 必选 示例值: right_from_left​
固定为 right_from_left。​
​
translation_unit string 必选 示例值: meter​
固定为 meter。​
​
rotation_xyzw array of float 必选 示例值: [0,0,0,1]​
单位四元数 [x,y,z,w],提交前须归一化。​
​
translation array of float 必选 示例值: [0.06,0,0]​
平移 [x,y,z],单位米;基线长度范围 [0.02,0.30] 米。​
​
​
frame_provenance ProvenanceReference Optional​
可选逐帧来源文档,适用于插帧或重采样素材。​
uri string Conditional 示例值: https://example.com/document.json​
与 content 二选一,填写可读取的 HTTPS/TOS JSON 地址。​
​
content FrameProvenance Conditional​
与 uri 二选一,内联逐帧来源文档。​
schema string 必选 示例值: frame_provenance@v1​
固定为 frame_provenance@v1。​
​
views ProvenanceViews 必选​
左右目逐帧来源。​
left array of ProvenanceFrame 必选​
数量与左目时间戳一致;右目 right 数组使用相同字段。​
source_frame_index integer 必选 示例值: 0​
源帧编号,每个视图从 0 连续排列。​
​
origin string 必选 示例值: native​
native 表示原生采集,synthesized 表示合成或插值。​
​
capture_time_ns integer 必选 示例值: 0​
非负采集纳秒,须与时间戳文档逐项一致。​
​
source_indices array of integer Conditional 示例值: [0,2]​
仅合成帧必填,至少包含两个源帧编号。​
​
interpolation_weights array of float Conditional 示例值: [0.5,0.5]​
仅合成帧必填,与 source_indices 等长,非负且总和约为 1。​
​
​
right array of ProvenanceFrame 必选​
数量与右目时间戳一致。​
source_frame_index integer 必选 示例值: 0​
源帧编号,每个视图从 0 连续排列。​
​
origin string 必选 示例值: native​
native 表示原生采集,synthesized 表示合成或插值。​
​
capture_time_ns integer 必选 示例值: 0​
非负采集纳秒,须与时间戳文档逐项一致。​
​
source_indices array of integer Conditional 示例值: [0,2]​
仅合成帧必填,至少包含两个源帧编号。​
​
interpolation_weights array of float Conditional 示例值: [0.5,0.5]​
仅合成帧必填,与 source_indices 等长,非负且总和约为 1。​
​
​
​
​
sha256 string Optional​
仅 uri 引用可填,为 64 位小写十六进制摘要。​
​
​
​
sha256 string Optional​
仅 uri 引用可填,为 64 位小写十六进制摘要。​
​
​
sgbm_skin_filter_enabled boolean Optional 示例值: false​
在 SGBM 双目深度路径中启用皮肤区域筛选;不选择定位算法,也不保证所有素材均改善。​
​
left_media_sha256 string Optional​
64 位小写十六进制摘要;水平拼接校验完整视频,独立模式校验左目视频。​
​
​
​
output HandPoseOutput Optional​
输出配置。​
destination string Optional 示例值: tos://your-bucket/results​
可写 TOS 输出前缀,不是精确文件名。​
​
​
​
​
​
示例​
单目图片:​
​
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \​
--header "Content-Type: application/json" \​
--header "Authorization: Bearer $LAS_API_KEY" \​
--data '{​
"operator_id": "las_handpose_estimation",​
"operator_version": "v1",​
"data": {​
"task_template": "mono_hand_pose_estimation@v1",​
"media": {​
"uri": "https://example.com/hand.jpg",​
"type": "image"​
}​
}​
}'​
​
单目视频:​
​
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \​
--header "Content-Type: application/json" \​
--header "Authorization: Bearer $LAS_API_KEY" \​
--data '{​
"operator_id": "las_handpose_estimation",​
"operator_version": "v1",​
"data": {​
"task_template": "mono_hand_pose_estimation@v1",​
"media": {​
"uri": "tos://your-bucket/input.mp4",​
"type": "video",​
"fps": 10,​
"max_frames": 300​
}​
}​
}'​
​
单目世界坐标:​
​
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \​
--header "Content-Type: application/json" \​
--header "Authorization: Bearer $LAS_API_KEY" \​
--data '{​
"operator_id": "las_handpose_estimation",​
"operator_version": "v1",​
"data": {​
"task_template": "mono_hand_pose_estimation@v1",​
"media": {​
"uri": "tos://your-bucket/input.mp4",​
"type": "video",​
"fps": 10,​
"max_frames": 300​
},​
"task_context": {​
"camera": {​
"enable_estimation": true,​
"model": "pinhole"​
},​
"world_coordinates": {​
"enabled": true,​
"quality": {​
"min_tracking_coverage": 0.8,​
"min_valid_hand_frame_coverage": 0.5​
}​
}​
}​
}​
}'​
​
单目视频裁剪:​
​
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \​
--header "Content-Type: application/json" \​
--header "Authorization: Bearer $LAS_API_KEY" \​
--data '{​
"operator_id": "las_handpose_estimation",​
"operator_version": "v1",​
"data": {​
"task_template": "mono_hand_pose_estimation@v1",​
"media": {​
"uri": "tos://your-bucket/input.mp4",​
"type": "video",​
"fps": 10,​
"max_frames": 300​
},​
"video_clip": {​
"start": 5.0,​
"end": 20.0​
},​
"task_context": {​
"temporal": {​
"smoothing": "auto"​
}​
}​
}​
}'​
​
双目水平拼接视频:​
​
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \​
--header "Content-Type: application/json" \​
--header "Authorization: Bearer $LAS_API_KEY" \​
--data '{​
"operator_id": "las_handpose_estimation",​
"operator_version": "v1",​
"data": {​
"task_template": "stereo_hand_pose_estimation@v1",​
"media": {​
"uri": "tos://your-bucket/stereo-sbs.mp4",​
"type": "video",​
"fps": 10,​
"max_frames": 300​
},​
"task_context": {​
"stereo": {​
"rig_manifest": {​
"content": {​
"schema": "stereo_rig@v1",​
"rig_id": "rig-001",​
"calibration_version": "v1",​
"reference_view": "left",​
"source": {​
"packing": "side_by_side",​
"view_resolution": [960, 540],​
"view_order": ["left", "right"]​
},​
"cameras": {​
"left": {​
"model": "pinhole",​
"resolution": [960, 540],​
"parameters": {"fx": 700.0, "fy": 700.0, "cx": 480.0, "cy": 270.0}​
},​
"right": {​
"model": "pinhole",​
"resolution": [960, 540],​
"parameters": {"fx": 700.0, "fy": 700.0, "cx": 480.0, "cy": 270.0}​
}​
},​
"extrinsic": {​
"convention": "right_from_left",​
"translation_unit": "meter",​
"rotation_xyzw": [0.0, 0.0, 0.0, 1.0],​
"translation": [0.06, 0.0, 0.0]​
}​
}​
}​
},​
"temporal": {"smoothing": "auto"},​
"world_coordinates": {"enabled": false}​
}​
}​
}'​
​
双目独立视频:​
​
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \​
--header "Content-Type: application/json" \​
--header "Authorization: Bearer $LAS_API_KEY" \​
--data '{​
"operator_id": "las_handpose_estimation",​
"operator_version": "v1",​
"data": {​
"task_template": "stereo_hand_pose_estimation@v1",​
"media": {​
"uri": "https://example.com/left.mp4",​
"type": "video",​
"fps": 10,​
"max_frames": 300​
},​
"task_context": {​
"stereo": {​
"rig_manifest": {​
"content": {​
"schema": "stereo_rig@v1",​
"rig_id": "rig-001",​
"calibration_version": "v1",​
"reference_view": "left",​
"source": {​
"packing": "separate",​
"right_media_uri": "https://example.com/right.mp4"​
},​
"timeline": {​
"left_timestamps": {"uri": "https://example.com/left-timestamps.json"},​
"right_timestamps": {"uri": "https://example.com/right-timestamps.json"}​
},​
"cameras": {​
"left": {​
"model": "pinhole",​
"resolution": [960, 540],​
"parameters": {"fx": 700.0, "fy": 700.0, "cx": 480.0, "cy": 270.0}​
},​
"right": {​
"model": "pinhole",​
"resolution": [960, 540],​
"parameters": {"fx": 700.0, "fy": 700.0, "cx": 480.0, "cy": 270.0}​
}​
},​
"extrinsic": {​
"convention": "right_from_left",​
"translation_unit": "meter",​
"rotation_xyzw": [0.0, 0.0, 0.0, 1.0],​
"translation": [0.06, 0.0, 0.0]​
}​
}​
}​
},​
"temporal": {"smoothing": "auto"},​
"world_coordinates": {"enabled": false}​
}​
}​
}'​
​
返回数据​
metadata TaskMetadata​
任务受理信息,不包含推理结果。​
task_id string​
任务 ID;Submit 成功后用于 Poll。​
​
task_status string​
任务状态,包括 PENDING、RUNNING、COMPLETED、FAILED、EXPIRED 和 CANCELLED;UNKNOWN 按异常状态处理。​
​
business_code string​
0 表示成功;非 0 时须结合 HTTP 状态和 error_msg 判断。​
​
error_msg string​
成功时为空字符串,失败时为错误说明。​
​
submit_time string Optional​
提交时间,ISO 8601 格式。​
​
end_time string Optional​
终态结束时间,ISO 8601 格式。​
​
​
​
​
{​
"metadata": {​
"task_id": "task-id",​
"task_status": "PENDING",​
"business_code": "0",​
"error_msg": ""​
}​
}​
​
错误码​
​
​
HttpStatusCode​
错误码​
错误信息​
描述​
400​
Parameter.Invalid​
The parameter is invalid.​
参数、模板、媒体或组合不合法;核对 max_frames、相机及双目 Rig。​
401​
Authorization.Missing​
Missing Authorization.​
缺少 Authorization: Bearer 请求头。​
401​
ApiKey.Invalid​
The api key is invalid.​
API Key 不合法或与目标环境不匹配。​
400​
Connection.TooMany​
too many connection​
服务并发达到限制,按 Retry-After 退避。​
500​
InternalError​
Internal error.​
服务内部异常,保留 task_id 供排查。​
​
Poll​
请求参数​
​
​
名称​
类型​
是否必选​
示例值​
描述​
operator_id​
string​
是​
las_handpose_estimation​
固定为 las_handpose_estimation。​
operator_version​
string​
是​
v1​
固定为 v1。​
task_id​
string​
是​
task-xxx​
Submit 返回的任务 ID。​
​
返回数据​
metadata TaskMetadata​
任务状态和错误信息。​
task_id string​
任务 ID。​
​
task_status string​
任务状态;仅 COMPLETED 且 business_code=0 时读取结果。​
​
business_code string​
0 表示成功;非 0 时结合 HTTP 状态和 error_msg 判断。​
​
error_msg string​
错误说明,成功时为空字符串。​
​
submit_time string Optional​
提交时间,ISO 8601 格式。​
​
end_time string Optional​
终态结束时间,ISO 8601 格式。​
​
​
data HandPoseResult​
仅成功终态读取。​
frame_count integer​
实际输出采样帧数。​
​
prompt_frame_count integer​
折算计量帧数。​
​
video_duration float​
视频或处理片段时长,单位秒。​
​
resolution string​
处理画面分辨率。​
​
frames list of ImageFrame​
仅图片内联返回,与 result_manifest_url 二选一。​
source_frame_index integer​
图片固定为 0。​
​
timestamp float​
图片固定为 0 秒。​
​
objects list of ImageHand​
手对象;未识别到手时为空数组。​
object_id string​
手部实例标识。​
​
handedness_score float​
左右手识别置信度,范围 [0,1]。​
​
track_id string​
轨迹 ID,仅在当前任务内解释。​
​
handedness string​
left 左手或 right 右手。​
​
bbox list of float Optional​
源画面像素框 [x0,y0,x1,y1];补全对象可能省略。​
​
score float Optional​
检测置信度,范围 [0,1];补全对象可能省略。​
​
observation string​
observed 实测、bbox_interpolated 框插值、infilled 时序补全。​
​
pose HandPose​
21 点手部姿态,字段定义见下文。​
​
​
​
result_manifest_url string​
仅视频返回的结果 JSON 地址,与 frames 二选一。单目 manifest 版本为 1.1,双目版本为 1.0,两者应分别按合同解析,不能用版本数字比较新旧。​
​
​
​
​
HandPose 及视频 manifest 的公开字段如下。​
HandPose object​
21 点手部姿态。​
skeleton string​
图片内联骨架类型;视频读取顶层 skeleton_definition。​
​
joint_names list of string​
图片内联的 21 个关节名;视频读取顶层定义。​
​
edges list of list​
图片内联关节连线;视频读取顶层定义。​
​
root_joint_index integer​
腕部根节点,固定为 0。​
​
keypoints_2d Keypoints2D​
21 点二维关键点。​
space string​
坐标空间;图片内联结果为 source_pixel,视频按顶层 coordinate_systems 解释。​
​
values list of list​
21 个 [x,y] 源像素坐标。​
​
in_frame list of boolean​
21 个关键点是否位于画面内的标记。​
​
​
keypoints_3d Keypoints3D​
腕部相对三维关键点。​
space string​
坐标空间;图片内联结果为腕部相对相机轴。​
​
unit string​
三维单位,按返回值解释。​
​
metric_calibrated boolean​
是否为真实米制标定。​
​
values list of list​
21 个 [x,y,z];双目相机坐标可能含 null。​
​
quality object Optional​
质量信息,须结合逐点有效性证据使用。​
​
​
keypoints_3d_camera Keypoints3D Optional​
相机坐标关键点;单目尺度仍可能为模型估计。双目结果可含 null,不得仅按字段非空判断有效。​
​
keypoints_3d_world WorldKeypoints3D Optional​
世界坐标关键点。​
valid boolean​
当前帧该手的世界坐标是否可用;消费前必须检查。​
​
values list of list Optional​
21 个 [x,y,z];无效时可能省略或保留候选值,不能代替 valid。​
​
reason string Optional​
valid=false 时的不可用原因。​
​
quality object Optional​
世界坐标质量信息;单目和双目结构不同。​
​
​
​
VideoManifest object​
视频完整结果。​
version string​
单目固定 1.1,双目固定 1.0。​
​
frame_count integer​
等于 frames 长度。​
​
video_duration float​
处理视频或片段时长,单位秒。​
​
resolution string​
处理画面分辨率 WIDTHxHEIGHT;双目结果参考左目。​
​
skeleton_definition SkeletonDefinition​
顶层骨架定义。​
name string​
固定为 hand_21。​
​
joint_names list of string​
21 个关节名,所有关键点值均按此顺序。​
​
edges list of list​
关键点下标连线。​
​
root_joint_index integer​
腕部根节点,固定为 0。​
​
​
coordinate_systems CoordinateSystems​
统一坐标定义;估计单位不代表测量级真实距离。​
bbox CoordinateDefinition​
检测框坐标定义。​
​
keypoints_2d CoordinateDefinition​
二维关键点坐标定义。​
​
keypoints_3d CoordinateDefinition​
腕部相对三维坐标定义。​
​
keypoints_3d_camera CoordinateDefinition​
相机坐标关键点定义;双目使用原始左目作为参考视图。​
​
keypoints_3d_world CoordinateDefinition​
世界坐标关键点定义。​
​
camera_pose CoordinateDefinition​
世界坐标下的相机位姿定义。​
​
space string​
坐标空间,例如 source_pixel、wrist_relative_camera_axes、camera、virtual_camera 或 local_world。​
​
unit string Optional​
三维单位,按实际返回值读取。​
​
metric_calibrated boolean Optional​
是否为真实米制标定;提供内参不代表单目尺度已标定。​
​
frame string Optional​
双目相机坐标的参考视图。​
​
origin string Optional​
相机位姿坐标原点。​
​
axis_convention string Optional​
坐标轴约定。​
​
​
camera CameraMetadata​
实际使用的相机信息。​
model string​
实际使用的 pinhole 或 kb4。​
​
intrinsics list of float​
实际 [fx,fy,cx,cy] 内参,单位像素。​
​
source string​
内参来源,例如 provided、estimated、gopro_metadata 或 default。​
​
intrinsics_calibrated boolean​
内参是否已标定。​
​
distortion_coefficients list of float Optional​
KB4 的 4 个畸变系数。​
​
calibration_resolution list of integer Optional​
内参对应的 [width,height]。​
​
​
frames list of VideoFrame​
逐帧结果;未识别到手时仍保留 objects=[]。​
source_frame_index integer​
处理视频的帧序号;裁剪时以片段为处理视频。​
​
timestamp float​
相对处理视频或片段起点的秒数;映射回原视频时加 video_clip.start。​
​
objects list of VideoHand​
逐帧手部对象。​
track_id string​
轨迹 ID,仅在当前任务内解释。​
​
handedness string​
left 左手或 right 右手。​
​
bbox list of float Optional​
源画面像素框 [x0,y0,x1,y1]。​
​
score float Optional​
检测置信度。​
​
observation string​
实测、框插值或时序补全状态。​
​
pose HandPose​
21 点手部姿态。​
​
identity object Optional​
双目轨迹身份信息。​
​
​
camera_pose CameraPose Optional​
世界坐标请求的当前帧相机位姿。​
position list of float​
世界坐标下的相机位置 [x,y,z]。​
​
rotation_matrix list of list​
3×3 旋转矩阵。​
​
valid boolean​
当前帧相机位姿是否有效。​
​
reason string Optional​
无效原因;无效时不得消费位置或旋转数值。​
​
​
pair_quality object Optional​
双目当前帧的配对质量。​
​
​
stereo_input StereoInputSummary Optional​
双目输入摘要。​
rig_id string​
Rig 标识。​
​
calibration_version string​
标定版本。​
​
packing string​
输入组织形式。​
​
timestamp_contract object​
实际采用的时钟、事件、单位和来源合同。​
​
sampled_frame_count integer​
输出采样帧数。​
​
paired_frame_count integer​
实际成功配对帧数。​
​
pair_coverage float​
配对帧数占采样帧数的比例。​
​
input_digests object​
输入媒体和文档摘要。​
​
​
world_coordinates WorldSummary Optional​
世界坐标整体状态。​
status string​
applied 表示通过整体质量门,degraded 表示降级,unavailable 表示不可用;即使为 applied 也必须检查逐手 valid。​
​
reason string Optional​
非 applied 的原因。​
​
recommended_action string Optional​
建议处理方式;双目结果不保证存在。​
​
valid_frame_count integer​
有效世界坐标帧数。​
​
invalid_frame_count integer​
无效世界坐标帧数。​
​
pose_source string Optional​
双目位姿来源。​
​
scale_source string Optional​
双目尺度来源。​
​
quality object Optional​
双目世界坐标质量信息,不与单目结构混用。​
​
​
​
​
​
请求示例:​
​
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/poll" \​
--header "Content-Type: application/json" \​
--header "Authorization: Bearer $LAS_API_KEY" \​
--data '{​
"operator_id": "las_handpose_estimation",​
"operator_version": "v1",​
"task_id": "task-id"​
}'​
​
返回示例:​
​
{​
"metadata": {​
"task_id": "task-id",​
"task_status": "COMPLETED",​
"business_code": "0",​
"error_msg": "",​
"submit_time": "2026-10-20T12:00:00+08:00",​
"end_time": "2026-10-20T12:01:00+08:00"​
},​
"data": {​
"frame_count": 300,​
"prompt_frame_count": 210,​
"video_duration": 30.0,​
"resolution": "1920x1080",​
"result_manifest_url": "https://example.com/manifest.json"​
}​
}​
​
错误码​
​
​
HttpStatusCode​
错误码​
错误信息​
描述​
400​
TaskId.Invalid​
The task id is invalid.​
任务不存在或不属于当前账号。​
400​
Parameter.Invalid​
The parameter is invalid.​
参数、模板、媒体或组合不合法;核对 max_frames、相机及双目 Rig。​
401​
Authorization.Missing​
Missing Authorization.​
缺少 Authorization: Bearer 请求头。​
401​
ApiKey.Invalid​
The api key is invalid.​
API Key 不合法或与目标环境不匹配。​
400​
Connection.TooMany​
too many connection​
服务并发达到限制,按 Retry-After 退避。​
500​
InternalError​
Internal error.​
服务内部异常,保留 task_id 供排查。​
​
执行阶段媒体下载、解码、采样超限、模型推理或发布失败,由终态 metadata.business_code 和 error_msg 描述;HTTP 成功不等于任务成功。World 降级需在 manifest 中检查,不能仅看 COMPLETED。​
​
最近更新时间:2026.10.29 10:23:23
这个页面对您有帮助吗?
有用
有用
无用
无用