mcpField
T
tao-train-mask-grounding-dino

tao-train-mask-grounding-dino

github.com/promptingcompanyデータ・データベース039 回インストール17 週間前に更新
リポジトリ

tao-train-mask-grounding-dino について

tao-train-mask-grounding-dino は、NVIDIA TAO でテキストプロンプトによるオープンセットインスタンスセグメンテーションを扱うスキルです。Grounding DINO にマスク予測ヘッドを加え、学習、量子化、TensorRT デプロイのワークフローを支援します。

主な機能

  1. 01テキストプロンプトによるオープンセット分割
  2. 02Grounding DINO のマスク予測ヘッド
  3. 03学習・評価・推論
  4. 04モデルの量子化とエクスポート
  5. 05TensorRT デプロイのワークフロー

活用シーン

  1. 01テキストプロンプトから画像内の対象を分割
  2. 02マスクアノテーションを使ったインスタンス分割モデルの学習
  3. 03モデルを量子化して TensorRT 推論を実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/promptingcompany/nv-skills --skill tao-train-mask-grounding-dino

インストール後、Claude Code で/tao-train-mask-grounding-dinoを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
skill_info.yaml
spec_template_deploy_evaluate.yaml
spec_template_deploy_gen_trt_engine.yaml
spec_template_deploy_inference.yaml
spec_template_evaluate.yaml
spec_template_export.yaml
spec_template_gen_trt_engine.yaml
spec_template_inference.yaml
spec_template_quantize.yaml
spec_template_train.yaml
tao-deploy-mask-grounding-dino.md
tao-deploy-mask-grounding-dino.skill_info.yaml
schemas/
evaluate.schema.json
export.schema.json
gen_trt_engine.schema.json
inference.schema.json
manifest.json
quantize.schema.json
train.schema.json

詳細

Mask Grounding DINO

グラウンディングされたインスタンスセグメンテーションのための Mask Grounding DINO です。Grounding DINO を拡張し、テキストプロンプトで誘導するオープンセットセグメンテーション用のマスク予測ヘッドを追加しています。

モデル全体の重みには、train.pretrained_model_path を設定してください。

TAO Deploy TensorRT アクション(gen_trt_engine、TensorRT evaluate、TensorRT inference)については、最初に references/tao-deploy-mask-grounding-dino.md をお読みください。デプロイ仕様のテンプレートは、このスキルの references/ フォルダーにあり、spec_template_deploy_*.yaml というプレフィックスが付いています。

Dataclass スキーマ

生成された TAO Core スキーマは schemas/<action>.schema.json にパッケージ化されており、利用可能なアクションは schemas/manifest.json に記載されています。各生成スキーマでは、スキーマのトップレベルの default フィールドから references/spec_template_<action>.yaml も生成されます。AutoML の有効化は、モデルレイヤーの references/skill_info.yaml で automl_enabled によって宣言されています。AutoML を実行可能にするには、schemas/train.schema.json と references/spec_template_train.yaml が存在し、解析できる必要があります。automl_default_parameters、automl_disabled_parameters、デフォルト値、最小値/最大値の制限、列挙値、オプションの重み、数式条件、依存関係、よく使われるパラメーターには、パッケージに含まれる train スキーマを使用してください。実行時に ~/tao-core が存在することを前提にしないでください。メンテナーはスキルバンクをパッケージ化する前に、スキーマ/テンプレートを再生成します。

Train アクションのポリシー

このモデルはモデルレイヤーで AutoML が有効になっています。train ステージのリクエストを処理する前に、references/skill_info.yaml を読み、明示的な automl_policy 値またはユーザーのワークフローのリクエストから、実行時のオーバーライドを解決してください。「AutoML をオフにする」「AutoML を無効にする」「HPO なし」「通常のトレーニング」のようなフレーズは、この実行に限り automl_policy: off として扱ってください。それ以外の場合は、デフォルトで auto にします。automl_policy: auto、automl_enabled: true、および schemas/train.schema.json と references/spec_template_train.yaml の両方がパッケージに含まれている場合、デフォルトでは、このモデルの skill_dir を指定して train アクションを tao-skill-bank:tao-run-automl 経由で実行します。データセット、仕様、出力ディレクトリ、GPU/プラットフォーム設定、親チェックポイント、automl_policy に関するワークフロー/アプリケーションのオーバーライドは保持してください。直接モデルをトレーニングするのは、automl_policy: off の場合、またはパッケージに含まれる train スキーマ/テンプレートが存在しない場合に限ります。スキーマがない場合は、このモデルでは AutoML が有効ですが、スキーマが生成されるまでは実行できないことを報告してください。

evaluate、inference、export などの train 以外のアクションとデプロイフローは、このモデルのスキル内にとどまります。実行ごとの automl_policy オーバーライドによって、モデルのメタデータが変わることはありません。

トレーニング要件

  • データセットタイプ: セグメンテーション
  • 形式: odvg、coco、coco_raw
  • モニタリング指標: [bbox] val_mAP@50
アクションごとのデータセット要件
アクション仕様キーソースファイルリスト?
evaluatedataset.test_data_sourceseval_datasetimage_dir: images.tar.gz, json_file: annotations.jsonいいえ
inferencedataset.infer_data_sourcesinference_datasetimage_dir: images.tar.gz, classmap: label_map.txt, json_file: inference.jsonl, captions: inference.jsonlいいえ
quantizedataset.train_data_sourcestrain_datasetsimage_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.jsonはい
quantizedataset.val_data_sourceseval_datasetimage_dir: images.tar.gz, json_file: annotations.jsonいいえ
quantizedataset.quant_calibration_data_sourcestrain_datasetsimage_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.jsonいいえ
traindataset.train_data_sourcestrain_datasetsimage_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.jsonはい
traindataset.val_data_sourceseval_datasetimage_dir: images.tar.gz, json_file: annotations.jsonいいえ
一般的な Spec オーバーライド

データソースのオーバーライドはすべてのアクションで必須です。エージェントは、上記の「アクションごとのデータセット要件」テーブルに基づいてデータソースのパスを構築し、spec_overrides に含める必要があります。

S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"

train(必須データソース):

{
    "train.num_gpus": 1,
    "train.num_epochs": 10,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "val_data_sources.data_type": "OD",
    "model.num_region_queries": 100,
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

evaluate(必須データソース):

{
    "test_data_sources.data_type": "OD",
    "dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

inference(必須データソース):

{
    "infer_data_sources.data_type": "OD",
    "dataset.infer_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "classmap": f"{S3_EVAL}/label_map.txt", "json_file": f"{S3_EVAL}/inference.jsonl", "captions": f"{S3_EVAL}/inference.jsonl"},
}

quantize(必須データソース):

{
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
    "dataset.quant_calibration_data_sources": {"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"},
}

評価用データセット

任意です。トレーニングで ODVG を使用する場合も、検証では COCO 形式のアノテーションを使用します。

重要なパラメーター

  • model.backbone:デフォルトは swin_tiny_224_1k です。Grounding DINO と同じバックボーンのオプションを使用できます。
  • train.optim.lr:学習率です。デフォルトは 2e-4 です。lr_backbone は 2e-5 です。GDINOTrainExpConfig を再利用しており、Grounding DINO と同じトレーニング設定です。
  • model.num_queries:オブジェクトクエリの数です。デフォルトは 900 です。
  • model.has_mask:マスク予測ヘッドを有効にします。デフォルトは True です。mask/dice/rela の損失係数が追加されます。
  • model.num_region_queries:マスク予測用のリージョンクエリの数です。デフォルトは 100 です。
  • model.loss_types:損失の構成要素です。デフォルトは [labels, boxes, masks] です。mask_loss_coef、dice_loss_coef、rela_loss_coef が含まれます。
  • evaluate.ioi_threshold:マスク評価の IoI しきい値です。デフォルトは 0.5 です。
  • evaluate.nms_threshold:NMS のしきい値です。デフォルトは 0.2 です。
  • evaluate.text_threshold:テキストマッチングのしきい値です。デフォルトは 0.3 です。
  • dataset.has_mask:データセットにマスクのアノテーションが含まれるかどうかを指定します。デフォルトは True です。val_data_sources のデフォルトの data_type は "VG" です。

マルチ GPU/マルチノード

起動方法: Lightning による管理です。Grounding DINO と同じ DDP/FSDP の動作です。

Spec Key説明デフォルト
train.num_gpusGPU の数1
train.gpu_idsGPU デバイスのインデックス[0]
train.num_nodesノードの数1
train.distributed_strategyddp または fsdpddp

ハードウェア

最低 1 GPU、推奨 4 GPU です。GPU あたり 24GB 以上の VRAM が必要です(A100 を推奨)。マスク予測ヘッドにより、Grounding DINO よりも負荷が高くなります。GPU メモリは 24GB 以上を推奨します。

エラーパターン

CUDA のメモリ不足:batch_size を減らしてください。マスク予測によって、Grounding DINO に追加の負荷がかかります。

Spec Param / 親モデルの推論

モデル固有の推論マッピングは、config.json ではなくこの MD ファイルに記述します。生成されたランナーはこのセクションを読み取り、create_job() の前に SDK ヘルパーを使用してマッピングを適用してください。これは、以前のマイクロサービスにおける infer_params.py のフローを踏襲したものです。

TAO Core mask_grounding_dino.config.json の推論マッピング:

アクションSpec フィールド推論関数意味
evaluateencryption_keykey暗号化キー
evaluateevaluate.checkpointparent_model親ジョブの結果フォルダーから推定されるモデルファイル
evaluateevaluate.trt_engineparent_model親ジョブの結果フォルダーから推定されるモデルファイル
evaluateresults_diroutput_dir現在のジョブの結果ディレクトリ
exportencryption_keykey暗号化キー
exportexport.checkpointparent_model親ジョブの結果フォルダーから推定されるモデルファイル
exportexport.onnx_filecreate_onnx_file出力 ONNX パス
exportresults_diroutput_dir現在のジョブの結果ディレクトリ
gen_trt_engineencryption_keykey暗号化キー
gen_trt_enginegen_trt_engine.onnx_fileparent_model親ジョブの結果フォルダーから推定されるモデルファイル
gen_trt_enginegen_trt_engine.trt_enginecreate_engine_file出力 TensorRT エンジンパス
gen_trt_engineresults_diroutput_dir現在のジョブの結果ディレクトリ
inferenceencryption_keykey暗号化キー
inferenceinference.checkpointparent_model親ジョブの結果フォルダーから推定されるモデルファイル
inferenceinference.trt_engineparent_model親ジョブの結果フォルダーから推定されるモデルファイル
inferenceresults_diroutput_dir現在のジョブの結果ディレクトリ
quantizeencryption_keykey暗号化キー
quantizequantize.model_pathparent_model親ジョブの結果フォルダーから推定されるモデルファイル
quantizeresults_diroutput_dir現在のジョブの結果ディレクトリ
trainencryption_keykey暗号化キー
trainmodel.pretrained_backbone_pathptm_if_no_resume_model再開用チェックポイントがない場合の PTM
trainresults_diroutput_dir現在のジョブの結果ディレクトリ
traintrain.pretrained_model_pathptm_if_no_resume_model再開用チェックポイントがない場合の PTM
traintrain.resume_training_checkpoint_pathresume_model現在のジョブの結果フォルダーから推定されるモデルファイル

parent_model または parent_model_folder には、上流の train/export/AutoML 子ジョブ ID を parent_job_id として渡します。SDK は親の結果フォルダーを一覧表示し、チェックポイントのアーティファクトを絞り込んで、選択されたモデルファイルまたはフォルダーを返します。これらのマッピングを config.json に戻したり、チェックポイントのパスを推測するために生成されたランナースクリプトを修正したりしないでください。

デプロイ

  • tao-deploy-mask-grounding-dino — TAO Deploy を使用した TensorRT エンジンの生成、TensorRT による評価、TensorRT による推論のための Mask Grounding DINO デプロイワークフロー。

コメント