i4h-workflow-dataset-convert について
記録された HDF5 デモを、アクション、状態、カメラデータ、タスクテキスト、具現化ラベルを保ってローカルの LeRobot データセットに変換するワークフロースキルです。メタデータ、エピソードデータ、動画、特徴量幅も検証します。
主な機能
- 01記録と具現化メタデータの特定
- 02選択した成功エピソードの変換
- 03アクション、状態、カメラ、タスクテキストの保持
- 04メタデータ、データ、動画、特徴量幅の検証
活用シーン
- 01ポリシー学習用にワークフロー記録を変換
- 02変換したエピソードの利用前にデータセットを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia/ skills --skill i4h-workflow-dataset-convertインストール後、Claude Code で/i4h-workflow-dataset-convertを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.json詳細
Workflow HDF5 を LeRobot に変換
目的
記録されたアクション、状態、カメラ、タスクテキスト、エンボディメントのラベルを、ローカルの LeRobot データセットに保持します。
手順
- チェックアウトリゾルバーを実行し、ソース HDF5 を選択します。
- ワークフロー、Scene、エンボディメント、指示を確認します。
- 選択した成功エピソードを変換します。
- メタデータ、parquet、動画、特徴量の幅を確認します。
解決と確認
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"
HDF5_PATH=/absolute/path/to/recording.hdf5
uv run --project tools/dataset i4h-dataset inspect "$HDF5_PATH" --segments
上記のリゾルバーはスキルの契約の一部として扱ってください。ホストされたコピーはベースリポジトリ外で実行される場合があるため、現在のチェックアウトに workflows/i4h_workflows が存在すると決めつけないでください。I4H_WORKFLOWS_REPO_URL でクローン元を指定します。I4H_WORKFLOWS が未設定の場合は、その URL からフォールバック先のディレクトリを導出します。特定の保存先を再利用または選択する場合に限り、I4H_WORKFLOWS を設定してください。既存のチェックアウトを置き換えないでください。
明示された、または現在のチェーンにある記録を使用します。記録のメタデータ/コンテキストからワークフローと Scene を解決し、Scene マニフェストを読んでエンボディメントと指示を確認します。ラベルにはエンボディメントマニフェストを使用します。状態の幅がアクションの幅と同じだと決めつけないでください。コンバーターが記録から両方を導出します。
変換
RUN_DIR="$(pwd)/runs/<workflow>/$(date +%Y%m%d_%H%M%S)"
DATASET_DIR="$RUN_DIR/lerobot/local/<name>"
mkdir -p "$(dirname "$DATASET_DIR")"
[ ! -e "$DATASET_DIR" ] || { echo "Destination already exists: $DATASET_DIR" >&2; exit 2; }
uv run --project tools/dataset i4h-dataset convert \
"$HDF5_PATH" "$DATASET_DIR" \
--robot <embodiment> \
--repo-id "local/<name>" \
--successful-only \
--task "<instruction>"
ユーザーから指示があった場合、またはソースメタデータに根拠がある場合に限り、--fps または --skip-frames を使用してください。GR00T の高速な decord ローダーとの互換性を保つため、既定の H.264 動画コーデックを使用してください。別の --video-codec を選択するのは、対象のコンシューマーが必要とする場合に限ります。
変換により、下流のポリシーローダー向けに集計済みの meta/stats.json が書き込まれます。ネイティブの G1 ルールベース WBC 記録には、すでに 43-D の状態と 50-D のアクションが含まれています。コンバーターはこの仕様を認識し、GR00T が必要とする意味的な meta/modality.json を自動的に書き込みます。レガシーの 23-D Pink/キーボード仕様で作成された G1 記録を、50-D G1 WBC ポリシー Task 向けにする場合は、--g1-wbc-policy-actions を追加してください。この明示的なマッピングでは、計測された 43 関節の状態と、記録されたナビゲーション、ベース高、胴体のコマンドを組み合わせます。ソースのアクション幅が 23、状態幅が 43 であることを必須とします。
検証
次を必須とします。
meta/info.jsonmeta/stats.json- 対象のトレーナーが意味的なモダリティスライスを必要とする場合は
meta/modality.json - エピソードの parquet データ
- 記録された各カメラの動画ファイル
- 変換後のエピソード数が、選択した成功ソースの数と一致していること
- アクション/状態の特徴量の幅と名前が、記録およびエンボディメント記述子と一致していること
G1 では、次の両方の対応パスについてモダリティメタデータを必須とします。ネイティブの state=43/action=50、または明示的にマッピングされた state=43/source-action=23/output-action=50 です。meta/modality.json のないネイティブ 50-D データセットは不完全として扱ってください。
入力がない場合、または変換されたエピソードが 0 件の場合は失敗として扱います。変換によって出力先が不完全な状態で残った場合は、再試行する前にその不完全なディレクトリを隔離するか削除してください。使用可能なものとして報告してはいけません。
トラブルシューティング
次元エラーが発生した場合は、ソースのワークフローとエンボディメントを再度解決してください。動画が見つからない場合は、変換前にフレームが存在していたことを確認してください。
前提条件
読み取り可能な HDF5 記録と、それに対応する Scene およびエンボディメントのマニフェストを必須とします。
制限事項
変換では、欠落したカメラ、アクション、状態、タスクテキスト、成功エピソードを復元できません。
例
Convert my scissor pick-and-place recording into a LeRobot dataset.→so101を解決し、成功エピソードを変換して、メタデータ、parquet、両方のカメラ動画を検証します。
完了条件
ソース HDF5/ワークフロー、エンボディメント、タスクテキスト、ソース/変換済み/スキップ数、アクション/状態の幅、出力ディレクトリ/repo id、集計済み統計/モダリティ/parquet/動画の検査結果、および欠落しているモダリティを報告します。