tao-train-ocdnet について
自然画像のシーンテキスト検出に使う TAO スキルです。任意方向の文字領域に対応し、トレーニング、評価、推論、エクスポート、TensorRT デプロイを扱います。
主な機能
- 01任意方向の文字検出
- 02微分可能な二値化
- 03AutoML トレーニング
- 04評価と推論のアクション
- 05エクスポートと TensorRT デプロイ
活用シーン
- 01自然画像内の文字検出
- 02ラベル付き文字データでの学習
- 03文字検出モデルの評価
- 04TensorRT 推論の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ promptingcompany/ nv-skills --skill tao-train-ocdnetインストール後、Claude Code で/tao-train-ocdnetを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.jsonreferences/skill_info.yamlspec_template_deploy_evaluate.yamlspec_template_deploy_gen_trt_engine.yamlspec_template_deploy_inference.yamlspec_template_evaluate.yamlspec_template_export.yamlspec_template_gen_trt_engine.yamlspec_template_inference.yamlspec_template_prune.yamlspec_template_quantize.yamlspec_template_retrain.yamlspec_template_train.yamltao-deploy-ocdnet.mdtao-deploy-ocdnet.skill_info.yamlschemas/evaluate.schema.jsonexport.schema.jsongen_trt_engine.schema.jsoninference.schema.jsonmanifest.jsonprune.schema.jsonquantize.schema.jsonretrain.schema.jsontrain.schema.json詳細
OCDNet
シーンテキスト検出用の OCDNet です。微分可能な二値化アプローチを使用して、自然画像内の任意の向きのテキスト領域を検出します。
事前学習済み重みを使用するには、train.pretrained_model_path を設定してください。
TAO Deploy の TensorRT アクション(gen_trt_engine、TensorRT の evaluate、TensorRT の inference)については、まず references/tao-deploy-ocdnet.md をお読みください。デプロイ仕様テンプレートは、このスキルの 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 が存在するとは想定しないでください。メンテナーはスキルバンクをパッケージ化する前に、スキーマ/テンプレートを再生成してください。
学習アクションのポリシー
このモデルでは、モデルレイヤーで AutoML が有効になっています。学習ステージのリクエストを処理する前に、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 を指定し、学習アクションを tao-skill-bank:tao-run-automl 経由で実行してください。データセット、仕様、出力ディレクトリ、GPU/プラットフォーム設定、親チェックポイント、automl_policy に対するワークフロー/アプリケーションのオーバーライドは維持してください。automl_policy: off の場合、またはパッケージ化された学習スキーマ/テンプレートがない場合にのみ、モデルの直接学習を使用してください。スキーマがない場合は、このモデルで AutoML は有効になっていますが、スキーマが生成されるまで実行できないことを報告してください。
evaluate、inference、export、デプロイのフローなど、学習以外のアクションはこのモデルのスキル内にとどまります。実行ごとの automl_policy オーバーライドによって、モデルのメタデータが変更されることはありません。
学習要件
- データセットタイプ: ocdnet
- 形式: デフォルト
- 監視メトリック: hmean
アクションごとのデータセット要件
| アクション | 仕様キー | ソース | ファイル | リスト? |
|---|---|---|---|---|
| evaluate | dataset.validate_dataset.data_path | eval_dataset | test.tar.gz | はい |
| gen_trt_engine | gen_trt_engine.tensorrt.calibration.cal_image_dir | calibration_dataset | train/img.tar.gz | はい |
| inference | inference.input_folder | eval_dataset | test/img.tar.gz | いいえ |
| prune | dataset.validate_dataset.data_path | eval_dataset | test.tar.gz | はい |
| quantize | dataset.train_dataset.data_path | train_datasets | train.tar.gz | はい |
| quantize | dataset.validate_dataset.data_path | eval_dataset | test.tar.gz | はい |
| quantize | dataset.quant_calibration_dataset.images_dir | train_datasets | train/img.tar.gz | いいえ |
| retrain | dataset.train_dataset.data_path | train_datasets | train.tar.gz | はい |
| retrain | dataset.validate_dataset.data_path | eval_dataset | test.tar.gz | はい |
| train | dataset.train_dataset.data_path | train_datasets | train.tar.gz | はい |
| train | dataset.validate_dataset.data_path | eval_dataset | test.tar.gz | はい |
典型的な 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.loader.batch_size": 16,
"dataset.train_dataset.data_path": [f"{S3_TRAIN}/train.tar.gz"],
"dataset.validate_dataset.data_path": [f"{S3_EVAL}/test.tar.gz"],
}
gen_trt_engine(必須データソース):
{
"gen_trt_engine.tensorrt.data_type": "INT8",
"gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}/train/img.tar.gz"],
}
evaluate(必須データソース):
{
"dataset.validate_dataset.data_path": [f"{S3_EVAL}/test.tar.gz"],
}
inference(必須データソース):
{
"inference.input_folder": f"{S3_EVAL}/test/img.tar.gz",
}
prune(必須データソース):
{
"dataset.validate_dataset.data_path": [f"{S3_EVAL}/test.tar.gz"],
}
quantize(必須データソース):
{
"dataset.train_dataset.data_path": [f"{S3_TRAIN}/train.tar.gz"],
"dataset.validate_dataset.data_path": [f"{S3_EVAL}/test.tar.gz"],
"dataset.quant_calibration_dataset.images_dir": f"{S3_TRAIN}/train/img.tar.gz",
}
retrain(必須データソース):
{
"dataset.train_dataset.data_path": [f"{S3_TRAIN}/train.tar.gz"],
"dataset.validate_dataset.data_path": [f"{S3_EVAL}/test.tar.gz"],
}
評価データセット
任意です。テストデータセットは別の tarball として提供されます。
重要なパラメーター
- model.backbone:デフォルトは deformable_resnet18 です。変形可能畳み込みにより、不規則なテキストのテキスト領域検出が向上します。
- train.optimizer.args.lr:学習率です。デフォルトは 0.001(Adam)です。
- postprocess.thresh:テキスト領域抽出の二値化しきい値です。
- postprocess.box_thresh:検出結果のフィルタリングに使用するボックスの信頼度しきい値です。
マルチ GPU/マルチノード
起動方法: Lightning 管理(単一の python プロセスで、Lightning がワーカーを起動します)。
| Spec Key | 説明 | デフォルト |
|---|---|---|
train.num_gpus | GPU の数 | 1 |
train.gpu_ids | GPU デバイスのインデックス | [0] |
train.distributed_strategy | ddp、fsdp、または deepspeed_stage_3_offload | ddp |
ddpとアクティベーションチェックポイントを使用する場合:find_unused_parameters=Falseddpとアクティベーションチェックポイントを使用しない場合:find_unused_parameters=Truefsdpは FP16 を強制しますdeepspeed_stage_3_offloadは OCDNet でのみサポートされています(FP16 を強制します)- FAN バックボーンでは
sync_batchnormが自動的に有効になります
ハードウェア
最低 1 GPU、推奨 1 GPU です。GPU あたり 8GB 以上の VRAM が必要です。OCDNet は軽量です。ほとんどのデータセットでは、単一 GPU で十分です。
エラーパターン
検出率が低い場合: postprocess.thresh と box_thresh を調整します。デフォルトのしきい値では、一部のデータセットで厳しすぎる場合があります。
Spec Param / 親モデルの推論
モデル固有の推論マッピングは、config.json ではなくこの MD ファイルに記述します。生成されたランナーはこのセクションを読み込み、create_job() の前に SDK ヘルパーを使ってマッピングを適用してください。これは、以前のマイクロサービスにおける infer_params.py のフローを再現するものです。
TAO Core の ocdnet.config.json からの推論マッピング:
| アクション | Spec フィールド | 推論関数 | 意味 |
|---|---|---|---|
| 評価 | evaluate.checkpoint | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| 評価 | evaluate.trt_engine | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| 評価 | model.pruned_graph_path | pruned_model | 親のプルーニング済みモデル |
| 評価 | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| エクスポート | export.checkpoint | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| エクスポート | export.onnx_file | create_onnx_file | 出力 ONNX パス |
| エクスポート | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| 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.checkpoint | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| 推論 | inference.trt_engine | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| 推論 | model.pruned_graph_path | pruned_model | 親のプルーニング済みモデル |
| 推論 | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| プルーニング | prune.checkpoint | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| プルーニング | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| 量子化 | quantize.model_path | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| 量子化 | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| 再トレーニング | model.pruned_graph_path | parent_model | 親ジョブの結果フォルダーから推論されるモデルファイル |
| 再トレーニング | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| トレーニング | model.pretrained_model_path | ptm_if_no_resume_model | 再開用チェックポイントがない場合の PTM |
| トレーニング | results_dir | output_dir | 現在のジョブの結果ディレクトリ |
| トレーニング | train.resume_training_checkpoint_path | resume_model | 現在のジョブの結果フォルダーから推論されるモデルファイル |
parent_model または parent_model_folder の場合は、上流の train/export/AutoML 子ジョブの ID を parent_job_id として渡します。SDK は親の結果フォルダーを一覧表示し、チェックポイントのアーティファクトをフィルタリングして、選択されたモデルファイルまたはフォルダーを返します。これらのマッピングを config.json に戻したり、チェックポイントのパスを推測するために生成されたランナースクリプトを修正したりしないでください。
デプロイ
- tao-deploy-ocdnet — TAO Deploy を使用した TensorRT エンジン生成、TensorRT 評価、TensorRT 推論の OCDNet デプロイワークフロー。