mcpField
T
tao-train-ocdnet

tao-train-ocdnet

github.com/promptingcompany数据与数据库039 次安装17 周前更新
代码仓库

关于 tao-train-ocdnet

用于在自然图像中进行场景文字检测的 TAO skill,支持任意方向的文字区域检测。涵盖训练、评估、推理、导出及 TensorRT 部署操作。

主要功能

  1. 01检测任意方向的文字
  2. 02采用可微分二值化
  3. 03支持 AutoML 训练
  4. 04提供评估与推理操作
  5. 05支持导出及 TensorRT 部署

适用场景

  1. 01检测自然图像中的文字
  2. 02使用标注文字数据集训练
  3. 03评估文字检测模型
  4. 04准备 TensorRT 推理

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/tao-train-ocdnet确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
skill_info.yaml
spec_template_deploy_evaluate.yaml
spec_template_deploy_gen_trt_engine.yaml
spec_template_deploy_inference.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-ocdnet.md
tao-deploy-ocdnet.skill_info.yaml
schemas/
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

详细介绍

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。

Dataclass 架构

生成的 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 值或用户的工作流请求确定本次运行的策略。将“关闭 AutoML”“禁用 AutoML”“不使用 HPO”或“普通训练”等表述视为仅对本次运行设置 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 覆盖值不会更改模型元数据。

训练要求

  • 数据集类型: ocdnet
  • 格式: 默认
  • 监控指标: hmean
各操作的数据集要求
操作规范键来源文件列表?
evaluatedataset.validate_dataset.data_patheval_datasettest.tar.gz是
gen_trt_enginegen_trt_engine.tensorrt.calibration.cal_image_dircalibration_datasettrain/img.tar.gz是
inferenceinference.input_foldereval_datasettest/img.tar.gz否
prunedataset.validate_dataset.data_patheval_datasettest.tar.gz是
quantizedataset.train_dataset.data_pathtrain_datasetstrain.tar.gz是
quantizedataset.validate_dataset.data_patheval_datasettest.tar.gz是
quantizedataset.quant_calibration_dataset.images_dirtrain_datasetstrain/img.tar.gz否
retraindataset.train_dataset.data_pathtrain_datasetstrain.tar.gz是
retraindataset.validate_dataset.data_patheval_datasettest.tar.gz是
traindataset.train_dataset.data_pathtrain_datasetstrain.tar.gz是
traindataset.validate_dataset.data_patheval_datasettest.tar.gz是
典型规格覆盖项

每个操作都必须覆盖数据源——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.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 派生工作进程)。

规格键描述默认值
train.num_gpusGPU 数量1
train.gpu_idsGPU 设备索引[0]
train.distributed_strategyddp、fsdp 或 deepspeed_stage_3_offloadddp
  • 使用激活检查点时的 ddp:find_unused_parameters=False
  • 不使用激活检查点时的 ddp:find_unused_parameters=True
  • fsdp 强制使用 FP16
  • deepspeed_stage_3_offload 是 OCDNet 独有的受支持模式(强制使用 FP16)
  • FAN 主干网络会自动启用 sync_batchnorm

硬件

最低需要 1 个 GPU,建议使用 1 个 GPU。每个 GPU 需有 8GB 以上显存。OCDNet 轻量,单个 GPU 足以应对大多数数据集。

错误模式

检测率低:调整 postprocess.thresh 和 box_thresh。默认阈值对某些数据集可能过于严格。

规范参数/父模型推断

特定于模型的推断映射应放在此 MD 文件中,而不是 config.json 中。生成的运行器应读取本节,并在调用 create_job() 前使用 SDK 辅助函数应用这些映射。这与旧版微服务的 infer_params.py 流程一致。

来自 TAO Core ocdnet.config.json 的推断映射:

操作规范字段推断函数含义
评估evaluate.checkpointparent_model从父作业结果文件夹推断出的模型文件
评估evaluate.trt_engineparent_model从父作业结果文件夹推断出的模型文件
评估model.pruned_graph_pathpruned_model父作业的剪枝模型
评估results_diroutput_dir当前作业结果目录
导出export.checkpointparent_model从父作业结果文件夹推断出的模型文件
导出export.onnx_filecreate_onnx_file输出 ONNX 路径
导出results_diroutput_dir当前作业结果目录
生成 TensorRT 引擎gen_trt_engine.onnx_fileparent_model从父作业结果文件夹推断出的模型文件
生成 TensorRT 引擎gen_trt_engine.tensorrt.calibration.cal_cache_filecreate_cal_cache校准缓存路径
生成 TensorRT 引擎gen_trt_engine.trt_enginecreate_engine_file输出 TensorRT 引擎路径
生成 TensorRT 引擎results_diroutput_dir当前作业结果目录
推理inference.checkpointparent_model从父作业结果文件夹推断出的模型文件
推理inference.trt_engineparent_model从父作业结果文件夹推断出的模型文件
推理model.pruned_graph_pathpruned_model父作业的剪枝模型
推理results_diroutput_dir当前作业结果目录
剪枝prune.checkpointparent_model从父作业结果文件夹推断出的模型文件
剪枝results_diroutput_dir当前作业结果目录
量化quantize.model_pathparent_model从父作业结果文件夹推断出的模型文件
量化results_diroutput_dir当前作业结果目录
重新训练model.pruned_graph_pathparent_model父作业的剪枝模型
重新训练results_diroutput_dir当前作业结果目录
训练model.pretrained_model_pathptm_if_no_resume_model不存在恢复检查点时使用的 PTM
训练results_diroutput_dir当前作业结果目录
训练train.resume_training_checkpoint_pathresume_model从当前作业结果文件夹推断出的模型文件

对于 parent_model 或 parent_model_folder,将上游训练/导出/AutoML 子作业 ID 作为 parent_job_id 传入。SDK 会列出父作业结果文件夹,筛选检查点制品,并返回选定的模型文件或文件夹。不要将这些映射重新添加到 config.json,也不要修改生成的运行器脚本来猜测检查点路径。

部署

  • tao-deploy-ocdnet — 使用 TAO Deploy 生成 TensorRT 引擎、执行 TensorRT 评估和 TensorRT 推理的 OCDNet 部署工作流。

评论

支持 Markdown