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. 02支持 CTC 与注意力解码器
  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 和基于注意力的解码器。

设置 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。

数据类架构

生成的 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;维护者会在打包技能库之前重新生成架构/模板。

训练操作策略

此模型在模型层启用了 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 时,默认通过 tao-skill-bank:tao-run-automl 执行训练操作,并使用此模型的 skill_dir。保留工作流/应用对数据集、规范、输出目录、GPU/平台设置、父检查点和 automl_policy 的覆盖设置。仅当 automl_policy: off 或缺少已打包的训练架构/模板时,才直接训练模型;如果缺少架构,请说明此模型已启用 AutoML,但在生成架构之前无法运行 AutoML。

evaluate、inference、export 和部署流程等非训练操作仍由此模型技能处理。每次运行的 automl_policy 覆盖设置不会更改模型元数据。

训练要求

  • 数据集类型: ocrnet
  • 格式: 默认
  • 监控指标: val_acc
各操作的数据集要求
操作规格键来源文件列表?
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否
常见规格覆盖项

每个操作都必须覆盖数据源——Agent 必须根据上方「各操作的数据集要求」表构建数据源路径,并将其包含在 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",
}

评估数据集

可选。测试数据以单独的 tar 包形式提供。

重要参数

  • 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 会启动工作进程)。

规格键描述默认值
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 以上显存。OCR 文本识别的计算开销较低,通常单个 GPU 即可满足需求。

错误模式

需要 dataset_convert:如果使用原始图像和 gt 文件,先运行 dataset_convert,以生成 LMDB 格式的数据。

字符列表不匹配:训练数据中的所有字符都必须包含在 character_list 文件中。

Spec 参数 / 父模型推断

特定模型的推断映射应放在此 MD 文件中,而不是 config.json 中。生成的运行器应读取本节,并在调用 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当前作业的结果目录
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 部署工作流。

评论

支持 Markdown