tao-train-optical-inspection について
Siamese ネットワークで画像ペアを比較し、製造上の欠陥を検出する TAO スキルです。モデルのトレーニング、評価、推論、エクスポート、TensorRT デプロイに対応します。
主な機能
- 01Siamese による画像ペア比較
- 02欠陥・異常の検出
- 03CSV によるデータセット入力
- 04AutoML トレーニング
- 05TensorRT デプロイ操作
活用シーン
- 01画像比較による製造欠陥の検出
- 02検査画像の異常検知
- 03画像ペアとラベルを使った学習
- 04TensorRT 推論の実行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ promptingcompany/ nv-skills --skill tao-train-optical-inspectionインストール後、Claude Code で/tao-train-optical-inspectionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.jsonreferences/skill_info.yamlspec_template_deploy_experiment.yamlspec_template_evaluate.yamlspec_template_export.yamlspec_template_gen_trt_engine.yamlspec_template_inference.yamlspec_template_train.yamltao-deploy-optical-inspection.mdtao-deploy-optical-inspection.skill_info.yamlschemas/evaluate.schema.jsonexport.schema.jsongen_trt_engine.schema.jsoninference.schema.jsonmanifest.jsontrain.schema.json詳細
光学検査
シャムネットワークを使用した、欠陥検出のための光学検査です。画像ペアを比較して、製造上の欠陥、異常、品質上の問題を検出します。
事前学習済みのシャムネットワークの重みに、train.pretrained_model_path を設定してください。
TAO Deploy の TensorRT アクション(gen_trt_engine、TensorRT の evaluate、および TensorRT の inference)については、まず references/tao-deploy-optical-inspection.md をお読みください。Deploy の仕様テンプレートは、このスキルの references/ フォルダーにあり、接頭辞は spec_template_deploy_*.yaml です。
データクラススキーマ
生成された 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、Deploy フローなどの train 以外のアクションは、このモデルスキル内で引き続き実行してください。実行ごとの automl_policy オーバーライドによって、モデルのメタデータが変更されることはありません。
トレーニング要件
- データセットの種類: optical_inspection
- 形式: デフォルト
- モニタリング指標: val_acc
アクションごとのデータセット要件
| アクション | 仕様キー | ソース | ファイル | リスト? |
|---|---|---|---|---|
| evaluate | dataset.test_dataset.images_dir | eval_dataset | images.tar.gz | いいえ |
| evaluate | dataset.test_dataset.csv_path | eval_dataset | dataset.csv | いいえ |
| gen_trt_engine | gen_trt_engine.tensorrt.calibration.cal_image_dir | calibration_dataset | images.tar.gz | はい |
| inference | dataset.infer_dataset.images_dir | inference_dataset | images.tar.gz | いいえ |
| inference | dataset.infer_dataset.csv_path | inference_dataset | dataset.csv | いいえ |
| train | dataset.train_dataset.images_dir | train_datasets | images.tar.gz | いいえ |
| train | dataset.train_dataset.csv_path | train_datasets | dataset.csv | いいえ |
| train | dataset.validation_dataset.images_dir | eval_dataset | images.tar.gz | いいえ |
| train | dataset.validation_dataset.csv_path | eval_dataset | dataset.csv | いいえ |
| train | dataset.test_dataset.images_dir | eval_dataset | images.tar.gz | いいえ |
| train | dataset.test_dataset.csv_path | eval_dataset | dataset.csv | いいえ |
典型的な Spec Overrides
データソースのオーバーライドはすべてのアクションで必須です。エージェントは、上記の「アクションごとのデータセット要件」テーブルに基づいてデータソースパスを構築し、spec_overrides に含める必要があります。
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"
train(必須データソース):
{
"train.num_epochs": 30,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"dataset.train_dataset.images_dir": f"{S3_TRAIN}/images.tar.gz",
"dataset.train_dataset.csv_path": f"{S3_TRAIN}/dataset.csv",
"dataset.validation_dataset.images_dir": f"{S3_EVAL}/images.tar.gz",
"dataset.validation_dataset.csv_path": f"{S3_EVAL}/dataset.csv",
"dataset.test_dataset.images_dir": f"{S3_EVAL}/images.tar.gz",
"dataset.test_dataset.csv_path": f"{S3_EVAL}/dataset.csv",
}
gen_trt_engine(必須データソース):
{
"gen_trt_engine.tensorrt.data_type": "fp16",
"gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}/images.tar.gz"],
}
evaluate(必須データソース):
{
"dataset.test_dataset.images_dir": f"{S3_EVAL}/images.tar.gz",
"dataset.test_dataset.csv_path": f"{S3_EVAL}/dataset.csv",
}
inference(必須データソース):
{
"dataset.infer_dataset.images_dir": f"{S3_EVAL}/images.tar.gz",
"dataset.infer_dataset.csv_path": f"{S3_EVAL}/dataset.csv",
}
評価データセット
任意です。評価データセットも同じ形式(画像 + CSV)を使用します。
重要なパラメーター
- model.model_type:Siamese のバリアントです。Siamese、Siamese_3 などがあります。
- model.model_backbone:デフォルトは custom です。
- model.embedding_vectors:埋め込み次元数です。デフォルトは 5 です。
- train.optim.lr:学習率です。デフォルトは 5e-4 です。
- dataset.num_input:比較ごとの入力画像数です。
- dataset.input_map:入力チャネル/画像ペアのマッピングです。
マルチ GPU/マルチノード
起動方法: Lightning による管理(単一の python プロセスで Lightning がワーカーを起動します)。
| Spec Key | 説明 | デフォルト |
|---|---|---|
train.num_gpus | GPU 数 | 1 |
train.gpu_ids | GPU デバイスのインデックス | [0] |
- ストラテジー:
auto(Lightning が最適なストラテジーを自動的に選択します) - 明示的な
num_nodesまたはdistributed_strategyの設定はありません。シングルノードのみです。 - Siamese ネットワークは軽量なため、通常は単一の GPU で十分です。
ハードウェア
最低 1 GPU、推奨 1 GPU です。GPU あたり 8GB 以上の VRAM が必要です。検査用の Siamese ネットワークは軽量です。単一の GPU で十分です。
エラーパターン
CSV 形式エラー: dataset.csv で画像ペアのパスとラベルに正しい列形式が使用されていることを確認してください。
Spec Param / 親モデルの推論
モデル固有の推論マッピングは、config.json ではなくこの MD ファイルに記述します。生成されたランナーはこのセクションを読み込み、create_job() の前に SDK ヘルパーを使用してマッピングを適用します。これは、以前のマイクロサービスにおける infer_params.py のフローを踏襲しています。
TAO Core の optical_inspection.config.json からの推論マッピング:
| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| evaluate | encryption_key | key | 暗号化キー |
| evaluate | evaluate.checkpoint | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| evaluate | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| export | encryption_key | key | 暗号化キー |
| export | export.checkpoint | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| export | export.onnx_file | create_onnx_file | 出力 ONNX パス |
| export | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| gen_trt_engine | encryption_key | key | 暗号化キー |
| gen_trt_engine | gen_trt_engine.onnx_file | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| gen_trt_engine | gen_trt_engine.tensorrt.calibration.cal_cache_file | create_cal_cache | キャリブレーションキャッシュのパス |
| gen_trt_engine | gen_trt_engine.trt_engine | create_engine_file | 出力 TensorRT エンジンのパス |
| gen_trt_engine | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| inference | encryption_key | key | 暗号化キー |
| inference | inference.checkpoint | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| inference | inference.trt_engine | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| inference | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| train | encryption_key | key | 暗号化キー |
| train | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| train | train.pretrained_model_path | ptm_if_no_resume_model | 再開チェックポイントがない場合の PTM |
| train | train.resume_training_checkpoint_path | resume_model | 現在のジョブの結果フォルダーから推論されるモデルファイル |
parent_model または parent_model_folder の場合は、上流の train/export/AutoML 子ジョブ ID を parent_job_id として渡します。SDK は親の結果フォルダーを一覧表示し、チェックポイント成果物を絞り込み、選択されたモデルファイルまたはフォルダーを返します。これらのマッピングを config.json に戻したり、チェックポイントパスを推測するよう生成されたランナースクリプトにパッチを適用したりしないでください。
デプロイ
- tao-deploy-optical-inspection — TAO Deploy を使用した TensorRT エンジンの生成、TensorRT 評価、TensorRT 推論のための Optical Inspection デプロイワークフローです。