成功标签评估
更新时间:2026-07-29
简介
任务成败判定 + 2D→3D 目标框提升,AIHC 自研,纯 numpy 几何计算、离线 CPU、无模型/GPU 依赖,是 P3 多模态打标链路的关键环节;成败判定为可审计的几何首版,生产可将 eval 模式接入 VLM/奖励模型后端。
功能描述
• eval 模式:由末端 7-DoF 动作序列累积位移(前 3 维平移增量之和的模)+ 可选物体倾斜角,判定任务是否成功(bool)
• lift_bbox_3d 模式:由 2D 检测框 [x1,y1,x2,y2] + 相机内参/外参 + 深度先验,几何提升为一个 3D 目标框(8 个角点)
• 统一输出:两种模式返回同一 struct 结构,每种模式只填对应字段,保证返回类型静态可推断
• 阈值可配:min_displacement / max_tilt_deg / depth_prior / box_half_size / fx / fy 全部参数可配
算子参数
输入
| 输入 | 含义 |
|---|---|
| col_a | eval 模式:action_seq(list<list |
| col_b(可选) | eval 模式:tilt_deg(float,物体倾斜角,度);lift_bbox_3d 模式:camera(list |
输出
| 输出 | 含义 |
|---|---|
| result | struct{success: bool, bbox_3d: list<list |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| mode | str | eval | 工作模式,可选 eval / lift_bbox_3d |
| depth_prior | float | 0.6 | 缺深度时的深度先验(米),用于 2D→3D 提升 |
| box_half_size | float | 0.05 | 3D 框半边长(米) |
| min_displacement | float | 0.05 | eval 判成功的最小末端位移(米) |
| max_tilt_deg | float | 15.0 | eval 判成功允许的最大物体倾斜角(度) |
| fx | float | 1.0 | 归一化像素→相机系的焦距近似(camera 未给内参时使用) |
| fy | float | 1.0 | 归一化像素→相机系的焦距近似(camera 未给内参时使用) |
调用示例
Python
1from __future__ import annotations
2import os
3import daft
4from daft import col
5from daft.aihc.common.udf import aihc_udf
6from daft.aihc.functions.embodied.success_label_eval import SuccessLabelEval
7
8if __name__ == "__main__":
9 if os.getenv("DAFT_RUNNER", "native") == "ray":
10 import ray
11 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
12 daft.set_runner_ray()
13 daft.set_execution_config(min_cpu_per_task=0)
14
15 # eval 模式:一条累计位移足够的序列(成功)与一条几乎不动的序列(失败)
16 moving = [[0.02, 0.0, 0.0]] * 5 # 累计 dx=0.10 >= 0.05
17 still = [[0.001, 0.0, 0.0]] * 5 # 累计 0.005 < 0.05
18 samples = {"a": [moving, still]}
19 ds = daft.from_pydict(samples)
20 ds = ds.with_column(
21 "res",
22 aihc_udf(
23 SuccessLabelEval,
24 construct_args={"mode": "eval", "min_displacement": 0.05},
25 num_cpus=1, concurrency=1, batch_size=2,
26 )(col("a")),
27 )
28 ds.show()
评价此篇文章
