i4h-workflow-dataset-annotate について
i4h-workflow-dataset-annotateは、ワークフロー録画から抽出したカメラフレームを自然言語の成功基準で評価するスキルです。HDF5エピソードを確認するユーザー向けに、VLMの判定をシミュレーター上の成功状態と分けて扱います。
主な機能
- 01各エピソードの抽出フレームを評価
- 02自然言語の基準を使用
- 03OpenAI互換のビジョンエンドポイントに対応
- 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 ファイルを 1 つ、基準を 1 つ選択します。
- カメラのサンプリングとビジョンエンドポイントをテストします。
- 選択したすべてのエピソードについて、評価と必要に応じたフィルタリングを実行します。
- 判定と出力件数を比較します。
入力と基準を解決する
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 互換のビジョンエンドポイント/モデルを指定している場合は、まずそれを使用してください。ローカル Agent では、その設定は I4H_AGENT_VL_BASE_URL、I4H_AGENT_VL_MODEL、および I4H_AGENT_VL_API_KEY または I4H_AGENT_API_KEY として公開されています。認証情報を表示せずに、これらの汎用エージェント変数をアノテーターに割り当ててください。
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" を追加してください。要約のみを求めるプロンプトでは、少なくとも 1 件の成功を必須とせずに、すべてのエピソードを評価してください。認証情報は環境変数に保持し、決して表示しないでください。
この実行で起動した場合に限り、ローカル VLM を停止してください。
tools/annotator/scripts/vllm.sh stop
検証
アノテーターの概要を確認してください。フィルタリングが要求された場合は、フィルタリング後のファイルも確認してください。
uv run --project tools/dataset i4h-dataset inspect "$RUN_DIR/filtered.hdf5" --segments
選択したすべてのエピソードに判定があることを確認し、合格/不合格の件数と、該当する場合はフィルタリング後の件数を照合してください。エンドポイントのエラー、カメラの欠落、部分的な書き込み、説明のつかないエピソード数 0 の出力は失敗として扱ってください。要約のみを求めるプロンプトでは、すべて不合格という判定結果でも評価の完了として有効です。ただし、有効なフィルタリング済みデータセットとは見なせません。
トラブルシューティング
エンドポイント/認証エラーを確認する前に、カメラのサンプリングを確認してください。部分的な書き込みや、説明のつかない件数 0 のフィルタリング済みファイルを受け入れてはいけません。
前提条件
カメラフレームを含む、読み取り可能なワークフロー HDF5 ファイルと、ドライラン以外の場合は到達可能な OpenAI 互換ビジョンエンドポイントが必要です。
制限事項
視覚的な評価では、欠落したフレームを復元できず、視認できないシミュレーターの状態を証明することもできません。
例
Run annotation on all recorded episodes and summarize.→ 現在の HDF5 ファイルを選択し、すべてのエピソードを評価して、フィルタリング後のファイルを検証し、合格/不合格の件数を報告します。
完了条件
ソース HDF5、選択した基準/カメラ/モデル/エンドポイントの由来、評価したエピソードの合格/不合格件数、要求された場合はフィルタリング後のパス/件数、使用した場合はドライランの結果、ローカルサービスの停止状況を報告してください。