mcpField
T
tao-train-ocrnet

tao-train-ocrnet

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

tao-train-ocrnet について

tao-train-ocrnet は、NVIDIA TAO で切り出した文字領域画像を認識するためのスキルです。CTC とアテンション方式のデコーダーに対応し、データセット変換、学習、TensorRT デプロイのワークフローを扱います。

主な機能

  1. 01切り出した領域の文字認識
  2. 02CTC とアテンション方式のデコーダー
  3. 03生データから LMDB への変換
  4. 04学習・評価・推論
  5. 05TensorRT デプロイのワークフロー

活用シーン

  1. 01切り出した画像領域内の文字を認識
  2. 02画像とアノテーションを LMDB に変換
  3. 03モデルをエクスポートして TensorRT エンジンを生成

インストール

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

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

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

同梱ファイル

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

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
skill_info.yaml
spec_template_dataset_convert.yaml
spec_template_deploy_experiment.yaml
spec_template_evaluate.yaml
spec_template_export.yaml
spec_template_gen_trt_engine.yaml
spec_template_inference.yaml
spec_template_prune.yaml
spec_template_quantize.yaml
spec_template_retrain.yaml
spec_template_train.yaml
tao-deploy-ocrnet.md
tao-deploy-ocrnet.skill_info.yaml
schemas/
dataset_convert.schema.json
evaluate.schema.json
export.schema.json
gen_trt_engine.schema.json
inference.schema.json
manifest.json
prune.schema.json
quantize.schema.json
retrain.schema.json
train.schema.json

詳細

OCRNet

OCRNet はシーンテキスト認識用です。切り抜かれたテキスト領域の画像からテキスト内容を認識します。CTC デコーダーとアテンションベースのデコーダーに対応しています。

事前学習済み OCR 重みを使用するには、train.pretrained_model_path を設定してください。

TAO Deploy の TensorRT アクション(gen_trt_engine、TensorRT の evaluate、TensorRT の inference)については、まず references/tao-deploy-ocrnet.md を読んでください。デプロイ仕様テンプレートは、このスキルの references/ フォルダーにあり、ファイル名のプレフィックスは spec_template_deploy_*.yaml です。

データクラススキーマ

生成された TAO Core スキーマは schemas/<action>.schema.json にパッケージ化されており、利用可能なアクションは schemas/manifest.json に記載されています。各生成スキーマでは、スキーマ最上位の default フィールドから references/spec_template_<action>.yaml も生成されます。AutoML の有効化は、automl_enabled を介して references/skill_info.yaml のモデルレイヤーで宣言されます。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 経由で train アクションを実行してください。データセット、仕様、出力ディレクトリ、GPU/プラットフォーム設定、親チェックポイント、automl_policy に対するワークフロー/アプリケーションの上書きを維持してください。直接モデルをトレーニングするのは、automl_policy: off の場合、またはパッケージ化された train スキーマ/テンプレートがない場合に限ってください。スキーマがない場合は、AutoML は有効ですが、スキーマが生成されるまではこのモデルで実行できないことを報告してください。

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

トレーニング要件

  • データセットタイプ: ocrnet
  • 形式: default
  • 監視指標: val_acc
アクションごとのデータセット要件
アクションSpec Keyソースファイルリスト?
dataset_convertdataset_convert.input_img_diridいいえ
dataset_convertdataset_convert.gt_fileidいいえ
evaluatedataset.character_list_fileeval_datasetcharacter_listいいえ
evaluateevaluate.test_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbいいえ
exportdataset.character_list_fileeval_datasetcharacter_listいいえ
gen_trt_enginegen_trt_engine.tensorrt.calibration.cal_image_dircalibration_datasetはい
inferencedataset.character_list_fileeval_datasetcharacter_listいいえ
inferenceinference.inference_dataset_direval_datasettest.tar.gzいいえ
prunedataset.character_list_fileeval_datasetcharacter_listいいえ
quantizedataset.train_dataset_dirtrain_datasetsresults/{dataset_convert_job_id}/dataset_convert/lmdbはい
quantizedataset.val_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbいいえ
quantizedataset.character_list_fileeval_datasetcharacter_listいいえ
quantizedataset.quant_calibration_dataset.images_dirtrain_datasetstrain.tar.gzいいえ
retraindataset.train_dataset_dirtrain_datasetsresults/{dataset_convert_job_id}/dataset_convert/lmdbはい
retraindataset.val_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbいいえ
retraindataset.character_list_fileeval_datasetcharacter_listいいえ
traindataset.train_dataset_dirtrain_datasetsresults/{dataset_convert_job_id}/dataset_convert/lmdbはい
traindataset.val_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbいいえ
traindataset.character_list_fileeval_datasetcharacter_listいいえ
一般的な Spec のオーバーライド

データソースのオーバーライドはすべてのアクションで必須です。エージェントは、上記の「アクションごとのデータセット要件」表からデータソースのパスを構成し、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.batch_size": 16,
    "dataset.train_dataset_dir": [f"{S3_TRAIN}/results/{dataset_convert_job_id}/dataset_convert/lmdb"],
    "dataset.val_dataset_dir": f"{S3_EVAL}/results/{dataset_convert_job_id}/dataset_convert/lmdb",
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}

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

{
    "gen_trt_engine.tensorrt.data_type": "fp16",
    "gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}"],
}

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

{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
    "evaluate.test_dataset_dir": f"{S3_EVAL}/results/{dataset_convert_job_id}/dataset_convert/lmdb",
}

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

{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}

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

{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
    "inference.inference_dataset_dir": f"{S3_EVAL}/test.tar.gz",
}

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

{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}

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

{
    "dataset.train_dataset_dir": [f"{S3_TRAIN}/results/{dataset_convert_job_id}/dataset_convert/lmdb"],
    "dataset.val_dataset_dir": f"{S3_EVAL}/results/{dataset_convert_job_id}/dataset_convert/lmdb",
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
    "dataset.quant_calibration_dataset.images_dir": f"{S3_TRAIN}/train.tar.gz",
}

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

{
    "dataset.train_dataset_dir": [f"{S3_TRAIN}/results/{dataset_convert_job_id}/dataset_convert/lmdb"],
    "dataset.val_dataset_dir": f"{S3_EVAL}/results/{dataset_convert_job_id}/dataset_convert/lmdb",
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}

評価データセット

任意です。テストデータは別の tarball として提供されます。

重要なパラメーター

  • dataset.character_list_file:サポートする文字セットを定義する文字リストのパスです。出力語彙のサイズを決定します。
  • model.backbone:デフォルトは ResNet です。
  • model.prediction:デコーダーの種類です。CTC または Attn(アテンションベース)を指定します。
  • train.optim.lr:学習率です。デフォルトは 1.0(Adadelta オプティマイザー)です。デフォルト値が高いのは Adadelta 固有の設定です。
  • dataset.batch_size:GPU ごとのバッチサイズです。デフォルトは 16 です。

マルチ GPU/マルチノード

起動方法: Lightning による管理(単一の python プロセスで、Lightning がワーカーを起動します)。

Spec Key説明デフォルト
train.num_gpusGPU の数1
train.gpu_idsGPU デバイスのインデックス[0]
train.distributed_strategyストラテジー名auto
  • ストラテジー:シングル GPU では auto を使用し、マルチ GPU では設定から train.distributed_strategy を読み込みます
  • 学習スクリプトに明示的な num_nodes の指定はありません。単一ノード向けです
  • 軽量なモデルのため、通常は単一 GPU で十分です

ハードウェア

最低 1 GPU、推奨 1 GPU です。GPU ごとに 8GB 以上の VRAM が必要です。OCR の文字認識は軽量です。通常は単一 GPU で十分です。

エラーパターン

dataset_convert が必要: 生画像と gt ファイルを使用する場合は、まず dataset_convert を実行して LMDB 形式に変換してください。

文字リストの不一致: 学習データ内のすべての文字が character_list ファイルに含まれている必要があります。

仕様パラメーター/親モデルの推論

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

TAO Core の ocrnet.config.json に基づく推論マッピング:

アクション仕様フィールド推論関数意味
dataset_convertresults_diroutput_dir現在のジョブの結果ディレクトリ
evaluateencryption_keykey暗号化キー
evaluateevaluate.checkpointparent_model親ジョブの結果フォルダーから推論されるモデルファイル
evaluateevaluate.trt_engineparent_model親ジョブの結果フォルダーから推論されるモデルファイル
evaluatemodel.pruned_graph_pathpruned_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.tensorrt.calibration.cal_cache_filecreate_cal_cacheキャリブレーションキャッシュのパス
gen_trt_enginegen_trt_engine.trt_enginecreate_engine_file出力 TensorRT エンジンのパス
gen_trt_engineresults_diroutput_dir現在のジョブの結果ディレクトリ
inferenceencryption_keykey暗号化キー
inferenceinference.checkpointparent_model親ジョブの結果フォルダーから推論されるモデルファイル
inferenceinference.trt_engineparent_model親ジョブの結果フォルダーから推論されるモデルファイル
inferencemodel.pruned_graph_pathpruned_model親のプルーニング済みモデル
inferenceresults_diroutput_dir現在のジョブの結果ディレクトリ
pruneencryption_keykey暗号化キー
pruneprune.checkpointparent_model親ジョブの結果フォルダーから推論されるモデルファイル
pruneprune.pruned_filecreate_pth_file出力 PTH パス
pruneresults_diroutput_dir現在のジョブの結果ディレクトリ
quantizeencryption_keykey暗号化キー
quantizequantize.model_pathparent_model親ジョブの結果フォルダーから推論されるモデルファイル
quantizeresults_diroutput_dir現在のジョブの結果ディレクトリ
retrainencryption_keykey暗号化キー
retrainmodel.pruned_graph_pathparent_model親ジョブの結果フォルダーから推論されるモデルファイル
retrainresults_diroutput_dir現在のジョブの結果ディレクトリ
trainencryption_keykey暗号化キー
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-ocrnet — TAO Deploy を使用した TensorRT エンジン生成、TensorRT 評価、TensorRT 推論の OCRNet デプロイワークフロー。

コメント