关于 i4h-workflow-dataset-annotate
i4h-workflow-dataset-annotate 用于依据自然语言成功标准,为工作流录制中抽取的相机帧评分。它面向检查 HDF5 片段的用户,并将 VLM 判定与模拟器成功状态区分开来。
主要功能
- 01对各片段抽样帧评分
- 02使用自然语言标准
- 03支持 OpenAI 兼容视觉端点
- 04提供相机抽样试运行
- 05可按判定筛选录制数据
适用场景
- 01为所选 HDF5 文件中的每个片段评分
- 02发送图像前检查相机抽样
- 03评分后生成筛选录制文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nvidia/ skills --skill i4h-workflow-dataset-annotate安装后在 Claude Code 中输入/i4h-workflow-dataset-annotate确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.json详细介绍
标注工作流录制
目的
根据自然语言成功标准对抽样的摄像头帧进行评分,同时将 VLM 标签与模拟器成功状态分开。
说明
- 运行检出目录解析器,并选择一个 HDF5 文件和一项标准。
- 测试摄像头采样和视觉端点。
- 对每个选定的回合运行评分,并按需进行筛选。
- 比较判定结果和输出数量。
解析输入和标准
export I4H_WORKFLOWS_REPO_URL="${I4H_WORKFLOWS_REPO_URL:-https://github.com/isaac-for-healthcare/i4h-workflows}"
I4H_REPO_DIR_NAME="${I4H_WORKFLOWS_REPO_URL%/}"
I4H_REPO_DIR_NAME="${I4H_REPO_DIR_NAME##*/}"
I4H_REPO_DIR_NAME="${I4H_REPO_DIR_NAME##*:}"
I4H_REPO_DIR_NAME="${I4H_REPO_DIR_NAME%.git}"
[ -n "$I4H_REPO_DIR_NAME" ] || { echo "Cannot derive a checkout name from I4H_WORKFLOWS_REPO_URL" >&2; exit 2; }
ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/i4h_workflows" ]; then
ROOT="${I4H_WORKFLOWS:-$HOME/$I4H_REPO_DIR_NAME}"
[ -d "$ROOT/workflows/i4h_workflows" ] || git clone "$I4H_WORKFLOWS_REPO_URL" "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"
cd "$ROOT"
find runs -name '*.hdf5' -type f -printf '%T@ %p\n' | sort -nr | head
将上方的解析器视为技能契约的一部分:托管副本可能在基础仓库之外运行,因此绝不要假设当前检出目录中包含 workflows/i4h_workflows。I4H_WORKFLOWS_REPO_URL 用于选择克隆源。未设置 I4H_WORKFLOWS 时,根据该 URL 推导回退目录;只有在要复用或选择特定目标位置时,才设置 I4H_WORKFLOWS。绝不要替换现有检出目录。
使用显式指定或当前链中的 HDF5 文件。“所有已录制回合”是指所选文件中的每个回合,而不是所有历史运行。检查该文件;如果用户提供了明确的成功标准,则使用该标准;否则,将源 Scene 清单说明与工作流中可见的终点目标语义结合起来。描述放置成功时,应表述为物体到达目标并保持在目标位置,而不是机器人继续抓住物体。
解析端点
优先使用调用方提供的 OpenAI 兼容视觉端点/模型。Local Agent 通过 I4H_AGENT_VL_BASE_URL、I4H_AGENT_VL_MODEL 以及 I4H_AGENT_VL_API_KEY 或 I4H_AGENT_API_KEY 提供此配置。将这些通用 Agent 变量映射到标注器,但不要打印凭据:
VLM_ARGS=()
if [ -n "${I4H_AGENT_VL_BASE_URL:-}" ] && [ -n "${I4H_AGENT_VL_MODEL:-}" ]; then
I4H_VLM_URL="${I4H_AGENT_VL_BASE_URL%/}"
case "$I4H_VLM_URL" in */v1) ;; *) I4H_VLM_URL="$I4H_VLM_URL/v1" ;; esac
export I4H_VLM_URL
export OPENAI_API_KEY="${I4H_AGENT_VL_API_KEY:-${I4H_AGENT_API_KEY:-EMPTY}}"
VLM_ARGS=(--model "$I4H_AGENT_VL_MODEL")
fi
如果没有调用方提供的端点/模型,则启动仓库的本地服务:
tools/annotator/scripts/vllm.sh ensure
记录此次调用是否启动了该服务。不要在技能中硬编码模型名称;除非用户提供模型,否则使用 CLI/服务默认值。
按需进行试运行采样
uv run --project tools/annotator i4h-annotator \
--task "<success criterion>" \
--dry-run \
offline /absolute/path/to/recording.hdf5
用此操作在不传输图像的情况下验证摄像头和抽样帧。
评分和筛选
RUN_DIR="$(pwd)/runs/<workflow>/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$RUN_DIR"
uv run --project tools/annotator i4h-annotator \
--task "<success criterion>" \
"${VLM_ARGS[@]}" \
offline /absolute/path/to/recording.hdf5 \
--write
仅在选择使用时,才添加全局 --base-url、--model、--camera 或 --frames。仅在请求指定片段时,才添加离线 --node。仅在请求筛选时,才添加 --filter "$RUN_DIR/filtered.hdf5";仅要求总结的提示词应对所有回合评分,无需至少有一个成功回合。将凭据保存在环境变量中;绝不要打印凭据。
只有此次调用启动了本地 VLM,才停止它:
tools/annotator/scripts/vllm.sh stop
验证
检查标注器摘要。如果请求了筛选,还要检查筛选后的文件:
uv run --project tools/dataset i4h-dataset inspect "$RUN_DIR/filtered.hdf5" --segments
确保每个选定回合都有判定,并核对通过/失败数量,以及适用时的筛选后数量。将端点错误、摄像头缺失、部分写入和无法解释的零回合输出视为失败。对于仅要求总结的提示词,全部判定为失败也属于有效的已完成评分运行;但这不构成有效的筛选数据集。
故障排除
在检查端点/身份验证错误之前,先检查摄像头采样。绝不要接受部分写入,或数量为零且无法解释的筛选文件。
前置条件
需要可读取且包含摄像头帧的工作流 HDF5 文件;除试运行外,还需要可访问的 OpenAI 兼容视觉端点。
限制
视觉评分无法恢复缺失帧,也无法证明画面中不可见的模拟器状态。
示例
Run annotation on all recorded episodes and summarize.→ 选择当前 HDF5 文件,对每个回合评分,验证筛选后的文件,并报告通过/失败数量。
完成门槛
报告源 HDF5 文件、选定的标准/摄像头/模型/端点来源、评分后的通过/失败数量、按需报告筛选路径/数量、使用试运行时的结果,以及本地服务清理情况。