mcpField
T
tao-train-ocrnet

tao-train-ocrnet

github.com/nvidiaデータ・データベース3.8k1.6k 回インストール今日更新
リポジトリ

tao-train-ocrnet について

切り抜いたテキスト領域の画像から文字を認識する OCRNet のトレーニングを支援する TAO スキルです。CTC とアテンションデコーダーに対応し、TAO ワークフローで評価、推論、エクスポート、モデル最適化も案内します。

主な機能

  1. 01切り抜いた画像領域の文字を認識
  2. 02CTC とアテンションデコーダーに対応
  3. 03トレーニング、評価、推論を案内
  4. 04エクスポート、プルーニング、量子化に対応
  5. 05TensorRT デプロイを案内

活用シーン

  1. 01ラベル付きテキスト領域画像で OCRNet をトレーニング
  2. 02テストセットで学習済みチェックポイントを評価
  3. 03切り抜いたテキスト画像で推論を実行
  4. 04学習済みモデルをエクスポートまたは最適化

インストール

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

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

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

同梱ファイル

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

BENCHMARK.md
skill-card.md
skill.oms.sig
config/
skillspector-baseline.yaml
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

単独でインストールする場合 このセッションが TAO skill bank プラグインによって初期化されていない場合は、まず tao-setup スキルを実行してください(ホストの事前確認、認証情報、スキル間の検出)。

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

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

TAO Deploy の TensorRT アクション(gen_trt_engine、TensorRT の evaluate、TensorRT の inference)については、最初に references/tao-deploy-ocrnet.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/<action>.schema.json と references/spec_template_<action>.yaml が存在し、解析可能である必要があります。automl_default_parameters、automl_disabled_parameters、デフォルト値、最小値/最大値の境界、列挙値、オプションの重み、数式条件、依存関係、主要なパラメーターには、パッケージ済みの選択アクション用スキーマを使用してください。実行時に ~/tao-core が存在することを前提にしないでください。メンテナーはスキルバンクをパッケージ化する前に、スキーマ/テンプレートを再生成します。

Train アクションのポリシー

このモデルでは、モデルレイヤーで AutoML が有効になっています。トレーニング段階のリクエストに対応する前に、references/skill_info.yaml を読み、明示的な automl_policy の値、またはユーザーのワークフローのリクエストから実行時の上書き値を決定してください。デフォルトでは automl_policy: on を使用し、新しい起動プロンプトでは on/off のみを提示してください。「AutoML をオフにする」「AutoML を無効にする」「HPO なし」「通常のトレーニング」といった表現は、この実行に限り automl_policy: off として扱います。automl_policy: on、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 の上書きによって、モデルのメタデータが変更されることはありません。

トレーニング要件

  • データセットの種類: ocrnet
  • 形式: デフォルト
  • AutoML トレーニング指標: val_acc、direction=maximize。TAO はこのキーを status.json に書き込みます
  • Lightning の進捗状況の別名: val_acc_1
  • 単独評価指標: test_acc、direction=maximize
アクションごとのデータセット要件
アクション仕様キーソースファイルリスト?
dataset_convertdataset_convert.input_img_dirtrain_datasets または eval_dataset切り抜いたテキスト画像を含む展開済みフォルダーいいえ
dataset_convertdataset_convert.gt_filetrain_datasets または eval_datasettrain/gt_new.txt または test/gt_new.txtいいえ
evaluatedataset.character_list_fileeval_datasetcharacter_listいいえ
evaluateevaluate.test_dataset_direval_dataset展開済みのテスト画像フォルダーいいえ
evaluateevaluate.test_dataset_gt_fileeval_datasettest/gt_new.txtいいえ
evaluateevaluate.checkpoint親の train/AutoML ジョブbest_accuracy.pth または指定されたエポックのチェックポイントいいえ
exportdataset.character_list_fileeval_datasetcharacter_listいいえ
exportexport.checkpoint親の train/AutoML ジョブbest_accuracy.pth または指定されたエポックのチェックポイントいいえ
deploy/gen_trt_enginegen_trt_engine.tensorrt.calibration.cal_image_dircalibration_datasetINT8 キャリブレーション用の展開済みキャリブレーション画像フォルダーはい
deploy/gen_trt_enginegen_trt_engine.onnx_file親の export ジョブエクスポートされた .onnx アーティファクトいいえ
deploy/gen_trt_enginedataset.character_list_fileeval_datasetcharacter_listいいえ
inferencedataset.character_list_fileeval_datasetcharacter_listいいえ
inferenceinference.inference_dataset_dirinference_dataset展開済みの推論画像フォルダーいいえ
inferenceinference.checkpoint親の train/AutoML ジョブbest_accuracy.pth または指定されたエポックのチェックポイントいいえ
prunedataset.character_list_fileeval_datasetcharacter_listいいえ
pruneprune.checkpoint親の train/AutoML ジョブbest_accuracy.pth または指定されたエポックのチェックポイントいいえ
quantizedataset.train_dataset_dirdataset_convert の train ジョブdata.mdb と lock.mdb を含む LMDB フォルダーはい
quantizedataset.val_dataset_dirdataset_convert の eval ジョブdata.mdb と lock.mdb を含む LMDB フォルダーいいえ
quantizedataset.character_list_fileeval_datasetcharacter_listいいえ
quantizedataset.quant_calibration_dataset.images_dirtrain_datasets展開済みのキャリブレーション画像フォルダーいいえ
quantizequantize.model_path親の train/AutoML ジョブリゾルバーが選択したチェックポイントいいえ
retraindataset.train_dataset_dirdataset_convert の train ジョブdata.mdb と lock.mdb を含む LMDB フォルダーはい
retraindataset.val_dataset_dirdataset_convert の eval ジョブdata.mdb と lock.mdb を含む LMDB フォルダーいいえ
retraindataset.character_list_fileeval_datasetcharacter_listいいえ
retrainmodel.pruned_graph_path親の prune ジョブプルーニング済みの .pth アーティファクトいいえ
traindataset.train_dataset_dirdataset_convert の train ジョブdata.mdb と lock.mdb を含む LMDB フォルダーはい
traindataset.train_gt_filetrain_datasetsLMDB の代わりに生のフォルダーを使用する場合の train/gt_new.txtいいえ
traindataset.val_dataset_dirdataset_convert の eval ジョブdata.mdb と lock.mdb を含む LMDB フォルダーいいえ
traindataset.val_gt_fileeval_datasetLMDB の代わりに生のフォルダーを使用する場合の test/gt_new.txtいいえ
traindataset.character_list_fileeval_datasetcharacter_listいいえ
チェックポイントの選択

OCRNet のトレーニングでは、best_accuracy.pth と、model_epoch_000_step_00003.pth などのエポック/ステップのチェックポイントが書き込まれます。references/skill_info.yaml の spec_params マッピングを通じて SDK/モデルのチェックポイントリゾルバーを使用してください。最新の .pth を並べ替えて推測しないでください。

  • 最良チェックポイントを使用する evaluate、inference、export、prune のリクエストには、best_accuracy.pth を使用してください。
  • エポック/ステップを指定する操作には、指定された正確な model_epoch_*_step_*.pth を使用してください。
  • 再開トレーニングには train.resume_training_checkpoint_path のみを使用し、プルーニングの出力から再トレーニングする場合は model.pruned_graph_path を使用してください。PyT イメージの OCRNet には、独立した ocrnet retrain CLI サブタスクはありません。モデルスキルの retrain アクションは、プルーニング済みグラフのパスを設定した状態で ocrnet train -e を実行します。
  • OCRNet の quantize は PyTorch を通じてモデルを読み込みます。同じローカル実行で作成された信頼できるチェックポイントに対して、PyTorch 2.6 以降が重みのみの読み込みを拒否する場合は、TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1 を設定してください。
一般的な Spec オーバーライド

データソースのオーバーライドは、すべてのアクションで必須です。トレーニング用と検証用のスプリットに対して、それぞれ dataset_convert を実行してください。その後、data.mdb と lock.mdb が直接格納された LMDB フォルダーを、train、quantize、retrain に渡してください。リモートストレージの tarball は、画像ディレクトリとして使用する前に展開する必要があります。

TRAIN_IMAGES = "<extracted train image folder>"
TRAIN_GT = "<train gt_new.txt>"
EVAL_IMAGES = "<extracted eval image folder>"
EVAL_GT = "<eval gt_new.txt>"
TRAIN_LMDB = "<train dataset_convert results_dir>"
EVAL_LMDB = "<eval dataset_convert results_dir>"
CHAR_LIST = "<character_list>"

dataset_convert(スプリットごとに 1 回実行):

{
    "dataset_convert.input_img_dir": TRAIN_IMAGES,
    "dataset_convert.gt_file": TRAIN_GT,
}

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": [TRAIN_LMDB],
    "dataset.val_dataset_dir": EVAL_LMDB,
    "dataset.train_gt_file": "",
    "dataset.val_gt_file": "",
    "dataset.character_list_file": CHAR_LIST,
}

deploy/gen_trt_engine(データソースの指定が必須):

{
    "gen_trt_engine.onnx_file": "<selected export ONNX>",
    "gen_trt_engine.trt_engine": "<output engine path>",
    "gen_trt_engine.tensorrt.calibration.cal_cache_file": "<output calibration cache path>",
    "gen_trt_engine.tensorrt.data_type": "fp16",
    "gen_trt_engine.tensorrt.calibration.cal_image_dir": [TRAIN_IMAGES],
    "dataset.character_list_file": CHAR_LIST,
}

evaluate(データソースの指定が必須):

{
    "evaluate.checkpoint": "<selected train/AutoML checkpoint>",
    "dataset.character_list_file": CHAR_LIST,
    "evaluate.test_dataset_dir": EVAL_IMAGES,
    "evaluate.test_dataset_gt_file": EVAL_GT,
}

export(データソースの指定が必須):

{
    "export.checkpoint": "<selected train/AutoML checkpoint>",
    "export.onnx_file": "<output ONNX path>",
    "dataset.character_list_file": CHAR_LIST,
}

inference(データソースの指定が必須):

{
    "inference.checkpoint": "<selected train/AutoML checkpoint>",
    "dataset.character_list_file": CHAR_LIST,
    "inference.inference_dataset_dir": EVAL_IMAGES,
}

prune(データソースの指定が必須):

{
    "prune.checkpoint": "<selected train/AutoML checkpoint>",
    "prune.pruned_file": "<output pruned PTH path>",
    "dataset.character_list_file": CHAR_LIST,
}

quantize(データソースの指定が必須):

{
    "dataset.train_dataset_dir": [TRAIN_LMDB],
    "dataset.val_dataset_dir": EVAL_LMDB,
    "dataset.character_list_file": CHAR_LIST,
    "dataset.quant_calibration_dataset.images_dir": TRAIN_IMAGES,
    "quantize.model_path": "<selected train/AutoML checkpoint>",
}

retrain(データソースの指定が必須):

{
    "dataset.train_dataset_dir": [TRAIN_LMDB],
    "dataset.val_dataset_dir": EVAL_LMDB,
    "dataset.character_list_file": CHAR_LIST,
    "model.pruned_graph_path": "<selected prune output>",
}

評価用データセット

任意です。テストデータは別の 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 を読み込みます。
  • train スクリプトには明示的な num_nodes がありません。単一ノードを想定しています。
  • 軽量なモデルのため、通常は単一 GPU で十分です。

ハードウェア

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

エラーパターン

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

dataset_convert の出力フォルダー:ocrnet dataset_convert を直接実行すると、data.mdb と lock.mdb は dataset_convert.results_dir の直下に書き込まれます。そのフォルダー自体を dataset.train_dataset_dir、dataset.val_dataset_dir、量子化、および再トレーニングの入力に使用してください。SDK を使用した実行では、同じ LMDB フォルダーがジョブのアーティファクトディレクトリー内に格納される場合があります。data.mdb と lock.mdb がある実際のフォルダーを確認してください。

GT ファイルの BOM:一部のテキスト認識用 GT ファイルでは、最初のファイル名の前に UTF-8 BOM が付いていることがあります。データセット変換のログに、最初の画像名の前に見えないプレフィックスが付いたパスが見つからないと表示された場合は、変換または評価の前に、GT ファイルのローカルコピーから BOM を削除してください。

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

エクスポート/プルーニングでは出力フィールドが必要です:export.onnx_file と prune.pruned_file は、書き込み可能な出力パスである必要があります。これらは references/skill_info.yaml で宣言されているため、SDK を使用したモデル実行でパスが自動的に作成されます。

TensorRT は deploy にあります:PyT OCRNet CLI で公開されているのは dataset_convert、evaluate、export、inference、prune、quantize、train であり、gen_trt_engine は含まれていません。TensorRT エンジンの生成、および TensorRT を使用した評価/推論には、references/tao-deploy-ocrnet.md と deploy/skill_info.yaml を使用してください。

Spec パラメータ / 親モデル推論

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

TAO Core の ocrnet.config.json からの推論マッピング:

アクションSpec フィールド推論関数意味
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現在のジョブの結果ディレクトリ
deploy/gen_trt_engineencryption_keykey暗号化キー
deploy/gen_trt_enginegen_trt_engine.onnx_fileparent_model親の export ジョブの結果フォルダから推論される ONNX ファイル
deploy/gen_trt_enginegen_trt_engine.tensorrt.calibration.cal_cache_filecreate_cal_cacheキャリブレーションキャッシュのパス
deploy/gen_trt_enginegen_trt_engine.trt_enginecreate_engine_file出力 TensorRT エンジンのパス
deploy/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 に戻さないでください。また、チェックポイントパスを推測するために生成されたランナースクリプトにパッチを当てないでください。

デプロイ

コメント