tao-train-ocrnet

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

OCRNet

OCRNet

OCRNet for scene text recognition. Recognizes text content from cropped text region images. Supports CTC and attention-based decoders.
Set train.pretrained_model_path for pretrained OCR weights.
For TAO Deploy TensorRT actions (
gen_trt_engine
, TensorRT
evaluate
, and TensorRT
inference
), read
references/tao-deploy-ocrnet.md
first. Deploy spec templates live in this skill's
references/
folder with the
spec_template_deploy_*.yaml
prefix.
用于场景文本识别的OCRNet。可识别裁剪后文本区域图像中的文本内容,支持CTC和基于注意力的解码器。
设置train.pretrained_model_path以指定预训练OCR权重。
对于TAO Deploy TensorRT操作(
gen_trt_engine
、TensorRT
evaluate
和TensorRT
inference
),请先阅读
references/tao-deploy-ocrnet.md
。部署规格模板位于该技能的
references/
文件夹中,前缀为
spec_template_deploy_*.yaml

Dataclass Schemas

数据类模式

Generated TAO Core schemas are packaged in
schemas/<action>.schema.json
, with
schemas/manifest.json
listing available actions. Each generated schema also emits
references/spec_template_<action>.yaml
from the schema top-level
default
field. AutoML enablement is declared at the model layer in
references/skill_info.yaml
via
automl_enabled
. Runnable AutoML still requires
schemas/train.schema.json
and
references/spec_template_train.yaml
to exist and parse. Use the packaged train schema for
automl_default_parameters
,
automl_disabled_parameters
, defaults, min/max bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect
~/tao-core
at runtime; maintainers regenerate schemas/templates before packaging the skill bank.
生成的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
、默认值、最小/最大边界、枚举、选项权重、数学条件、依赖关系和常用参数。运行时不要依赖
~/tao-core
;维护人员在打包技能库前会重新生成模式/模板。

Train Action Policy

训练操作策略

This model is AutoML-enabled at the model layer. Before handling any train-stage request, read
references/skill_info.yaml
and resolve the run override from either an explicit
automl_policy
value or the user's workflow request. Treat phrases like "turn off AutoML", "disable AutoML", "no HPO", or "plain training" as
automl_policy: off
for this run only; otherwise default to
auto
. When
automl_policy: auto
,
automl_enabled: true
, and both
schemas/train.schema.json
and
references/spec_template_train.yaml
are packaged, route the train action through
tao-skill-bank:tao-run-automl
by default with this model's
skill_dir
. Preserve workflow/application overrides for datasets, specs, output directories, GPU/platform settings, parent checkpoints, and
automl_policy
. Use direct model training only when
automl_policy: off
or the packaged train schema/template is missing; in the missing-schema case, report that AutoML is enabled but not runnable for this model until schemas are generated.
Non-train actions such as
evaluate
,
inference
,
export
, and deploy flows stay in this model skill. The per-run
automl_policy
override does not change model metadata.
该模型在模型层支持AutoML。处理任何训练阶段请求前,请阅读
references/skill_info.yaml
,并从显式的
automl_policy
值或用户的工作流请求中解析运行覆盖配置。将“turn off AutoML”、“disable AutoML”、“no HPO”或“plain training”等短语视为本次运行的
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
覆盖配置不会更改模型元数据。

Training Requirements

训练要求

  • Dataset type: ocrnet
  • Formats: default
  • Monitoring metric: val_acc
  • 数据集类型: ocrnet
  • 格式: default
  • 监控指标: val_acc

Per-Action Dataset Requirements

各操作的数据集要求

ActionSpec KeySourceFilesList?
dataset_convertdataset_convert.input_img_diridNo
dataset_convertdataset_convert.gt_fileidNo
evaluatedataset.character_list_fileeval_datasetcharacter_listNo
evaluateevaluate.test_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbNo
exportdataset.character_list_fileeval_datasetcharacter_listNo
gen_trt_enginegen_trt_engine.tensorrt.calibration.cal_image_dircalibration_datasetYes
inferencedataset.character_list_fileeval_datasetcharacter_listNo
inferenceinference.inference_dataset_direval_datasettest.tar.gzNo
prunedataset.character_list_fileeval_datasetcharacter_listNo
quantizedataset.train_dataset_dirtrain_datasetsresults/{dataset_convert_job_id}/dataset_convert/lmdbYes
quantizedataset.val_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbNo
quantizedataset.character_list_fileeval_datasetcharacter_listNo
quantizedataset.quant_calibration_dataset.images_dirtrain_datasetstrain.tar.gzNo
retraindataset.train_dataset_dirtrain_datasetsresults/{dataset_convert_job_id}/dataset_convert/lmdbYes
retraindataset.val_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbNo
retraindataset.character_list_fileeval_datasetcharacter_listNo
traindataset.train_dataset_dirtrain_datasetsresults/{dataset_convert_job_id}/dataset_convert/lmdbYes
traindataset.val_dataset_direval_datasetresults/{dataset_convert_job_id}/dataset_convert/lmdbNo
traindataset.character_list_fileeval_datasetcharacter_listNo
操作规格键来源文件是否为列表?
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

Typical Spec Overrides

典型规格覆盖配置

Data source overrides are mandatory for every action — the agent MUST construct data source paths from the Per-Action Dataset Requirements table above and include them in
spec_overrides
.
python
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"
train (mandatory data sources):
python
{
    "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 (mandatory data sources):
python
{
    "gen_trt_engine.tensorrt.data_type": "fp16",
    "gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}"],
}
evaluate (mandatory data sources):
python
{
    "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 (mandatory data sources):
python
{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}
inference (mandatory data sources):
python
{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
    "inference.inference_dataset_dir": f"{S3_EVAL}/test.tar.gz",
}
prune (mandatory data sources):
python
{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}
quantize (mandatory data sources):
python
{
    "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 (mandatory data sources):
python
{
    "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",
}
数据源覆盖配置对每个操作都是必需的——Agent必须根据上述各操作数据集要求表构建数据源路径,并将其包含在
spec_overrides
中。
python
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"
train(必需数据源):
python
{
    "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(必需数据源):
python
{
    "gen_trt_engine.tensorrt.data_type": "fp16",
    "gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}"],
}
evaluate(必需数据源):
python
{
    "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(必需数据源):
python
{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}
inference(必需数据源):
python
{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
    "inference.inference_dataset_dir": f"{S3_EVAL}/test.tar.gz",
}
prune(必需数据源):
python
{
    "dataset.character_list_file": f"{S3_EVAL}/character_list",
}
quantize(必需数据源):
python
{
    "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(必需数据源):
python
{
    "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",
}

Eval Dataset

评估数据集

Optional. Test data provided as separate tarball.
可选。测试数据以单独压缩包形式提供。

Important Parameters

重要参数

  • dataset.character_list_file: Path to character list defining the supported character set. This determines the output vocabulary size.
  • model.backbone: Default ResNet.
  • model.prediction: Decoder type. CTC or Attn (attention-based).
  • train.optim.lr: Learning rate. Default 1.0 (Adadelta optimizer). High default is specific to Adadelta.
  • dataset.batch_size: Per-GPU batch size. Default 16.
  • dataset.character_list_file:定义支持字符集的字符列表路径。该参数决定输出词汇量大小。
  • model.backbone:默认值为ResNet。
  • model.prediction:解码器类型,可选CTC或Attn(基于注意力)。
  • train.optim.lr:学习率,默认值为1.0(Adadelta优化器)。较高的默认值是Adadelta优化器的特性。
  • dataset.batch_size:单GPU批次大小,默认值为16。

Multi-GPU / Multi-Node

多GPU / 多节点

Launch method: Lightning-managed (single
python
process, Lightning spawns workers).
Spec KeyDescriptionDefault
train.num_gpus
Number of GPUs1
train.gpu_ids
GPU device indices[0]
train.distributed_strategy
Strategy name
auto
  • Strategy:
    auto
    for single-GPU, reads
    train.distributed_strategy
    from config when multi-GPU
  • No explicit
    num_nodes
    in train script — single-node oriented
  • Lightweight model, single GPU typically sufficient
启动方式: Lightning管理(单个
python
进程,Lightning生成工作进程)。
规格键描述默认值
train.num_gpus
GPU数量1
train.gpu_ids
GPU设备索引[0]
train.distributed_strategy
策略名称
auto
  • 策略:单GPU时使用
    auto
    ,多GPU时从配置中读取
    train.distributed_strategy
  • 训练脚本中无明确的
    num_nodes
    参数——面向单节点场景
  • 模型轻量化,通常单GPU足够

Hardware

硬件要求

Minimum 1 GPU(s), recommended 1 GPU(s). 8GB+ VRAM per GPU. OCR text recognition is lightweight. Single GPU is typically sufficient.
最低1块GPU,推荐1块GPU。每块GPU需8GB以上显存。OCR文本识别属于轻量化任务,通常单GPU即可满足需求。

Error Patterns

常见错误模式

dataset_convert required: If using raw images + gt files, run dataset_convert first to produce LMDB format.
Character list mismatch: All characters in training data must be present in the character_list file.
需先执行dataset_convert:如果使用原始图像+标注文件,需先运行dataset_convert生成LMDB格式数据。
字符列表不匹配:训练数据中的所有字符必须存在于character_list文件中。

Spec Param / Parent Model Inference

规格参数 / 父模型推理

Model-specific inference mappings belong in this MD file, not in
config.json
. Generated runners should read this section and apply the mappings with SDK helpers before
create_job()
. This mirrors the old microservices
infer_params.py
flow.
Inference mappings from TAO Core
ocrnet.config.json
:
ActionSpec FieldInference FunctionMeaning
dataset_convert
results_dir
output_dir
current job results directory
evaluate
encryption_key
key
encryption key
evaluate
evaluate.checkpoint
parent_model
model file inferred from the parent job results folder
evaluate
evaluate.trt_engine
parent_model
model file inferred from the parent job results folder
evaluate
model.pruned_graph_path
pruned_model
parent pruned model
evaluate
results_dir
output_dir
current job results directory
export
encryption_key
key
encryption key
export
export.checkpoint
parent_model
model file inferred from the parent job results folder
export
export.onnx_file
create_onnx_file
output ONNX path
export
results_dir
output_dir
current job results directory
gen_trt_engine
encryption_key
key
encryption key
gen_trt_engine
gen_trt_engine.onnx_file
parent_model
model file inferred from the parent job results folder
gen_trt_engine
gen_trt_engine.tensorrt.calibration.cal_cache_file
create_cal_cache
calibration cache path
gen_trt_engine
gen_trt_engine.trt_engine
create_engine_file
output TensorRT engine path
gen_trt_engine
results_dir
output_dir
current job results directory
inference
encryption_key
key
encryption key
inference
inference.checkpoint
parent_model
model file inferred from the parent job results folder
inference
inference.trt_engine
parent_model
model file inferred from the parent job results folder
inference
model.pruned_graph_path
pruned_model
parent pruned model
inference
results_dir
output_dir
current job results directory
prune
encryption_key
key
encryption key
prune
prune.checkpoint
parent_model
model file inferred from the parent job results folder
prune
prune.pruned_file
create_pth_file
output PTH path
prune
results_dir
output_dir
current job results directory
quantize
encryption_key
key
encryption key
quantize
quantize.model_path
parent_model
model file inferred from the parent job results folder
quantize
results_dir
output_dir
current job results directory
retrain
encryption_key
key
encryption key
retrain
model.pruned_graph_path
parent_model
model file inferred from the parent job results folder
retrain
results_dir
output_dir
current job results directory
train
encryption_key
key
encryption key
train
results_dir
output_dir
current job results directory
train
train.pretrained_model_path
ptm_if_no_resume_model
PTM when no resume checkpoint exists
train
train.resume_training_checkpoint_path
resume_model
model file inferred from the current job results folder
For
parent_model
or
parent_model_folder
, pass the upstream train/export/AutoML child job id as
parent_job_id
. The SDK lists the parent result folder, filters checkpoint artifacts, and returns the selected model file or folder. Do not add these mappings back to
config.json
and do not patch generated runner scripts to guess checkpoint paths.
模型特定的推理映射应放在此MD文件中,而非
config.json
。生成的运行器应读取本节内容,并在
create_job()
前使用SDK助手应用映射。这与旧微服务的
infer_params.py
流程一致。
来自TAO Core
ocrnet.config.json
的推理映射:
操作规格字段推理函数含义
dataset_convert
results_dir
output_dir
当前作业结果目录
evaluate
encryption_key
key
加密密钥
evaluate
evaluate.checkpoint
parent_model
从父作业结果文件夹推断出的模型文件
evaluate
evaluate.trt_engine
parent_model
从父作业结果文件夹推断出的模型文件
evaluate
model.pruned_graph_path
pruned_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
model.pruned_graph_path
pruned_model
父剪枝模型
inference
results_dir
output_dir
当前作业结果目录
prune
encryption_key
key
加密密钥
prune
prune.checkpoint
parent_model
从父作业结果文件夹推断出的模型文件
prune
prune.pruned_file
create_pth_file
输出PTH路径
prune
results_dir
output_dir
当前作业结果目录
quantize
encryption_key
key
加密密钥
quantize
quantize.model_path
parent_model
从父作业结果文件夹推断出的模型文件
quantize
results_dir
output_dir
当前作业结果目录
retrain
encryption_key
key
加密密钥
retrain
model.pruned_graph_path
parent_model
从父作业结果文件夹推断出的模型文件
retrain
results_dir
output_dir
当前作业结果目录
train
encryption_key
key
加密密钥
train
results_dir
output_dir
当前作业结果目录
train
train.pretrained_model_path
ptm_if_no_resume_model
无恢复检查点时使用的预训练模型
train
train.resume_training_checkpoint_path
resume_model
从当前作业结果文件夹推断出的模型文件
对于
parent_model
parent_model_folder
,将上游训练/导出/AutoML子作业ID作为
parent_job_id
传递。SDK会列出父结果文件夹,过滤检查点工件,并返回所选模型文件或文件夹。请勿将这些映射添加回
config.json
,也不要修改生成的运行器脚本来猜测检查点路径。

Deployment

部署

  • tao-deploy-ocrnet — OCRNet deploy workflow for TensorRT engine generation, TensorRT evaluation, and TensorRT inference using TAO Deploy.
  • tao-deploy-ocrnet — 用于TensorRT引擎生成、TensorRT评估和TensorRT推理的OCRNet部署工作流,基于TAO Deploy实现。