mcpField
T
tao-train-centerpose

tao-train-centerpose

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

关于 tao-train-centerpose

tao-train-centerpose 是用于 CenterPose 关键点与姿态估计模型的 TAO 技能,面向模型训练和部署任务。它支持训练、评估、推理、导出及 TensorRT 引擎生成,并将符合条件的训练请求默认交由 AutoML 流程处理。

主要功能

  1. 01检测物体中心并回归关键点
  2. 02支持训练与评估
  3. 03支持推理和模型导出
  4. 04生成 TensorRT 引擎
  5. 05符合条件时默认使用 AutoML

适用场景

  1. 01训练 CenterPose 物体姿态模型
  2. 02评估或推理关键点预测
  3. 03导出模型或生成 TensorRT 引擎

安装

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

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

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

包含的文件

除 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_train.yaml
tao-deploy-centerpose.md
tao-deploy-centerpose.skill_info.yaml
schemas/
evaluate.schema.json
export.schema.json
gen_trt_engine.schema.json
inference.schema.json
manifest.json
train.schema.json

详细介绍

CenterPose

CenterPose 用于关键点/姿态估计。它会检测对象中心并回归关键点位置,用于 6-DoF 对象姿态估计。

设置 model.backbone.pretrained_backbone_path。

对于 TAO Deploy TensorRT 操作(gen_trt_engine、TensorRT evaluate 和 TensorRT inference),请先阅读 references/tao-deploy-centerpose.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;维护者会在打包技能库之前重新生成架构/模板。

Train 操作策略

此模型在模型层启用了 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 覆盖设置不会更改模型元数据。

训练要求

  • 数据集类型: centerpose
  • 格式: 默认
  • 监控指标: val_3DIoU
各操作的数据集要求
操作规范键来源文件列表?
evaluatedataset.test_dataeval_datasettest.tar.gz否
gen_trt_enginegen_trt_engine.tensorrt.calibration.cal_image_dircalibration_datasettrain.tar.gz是
inferencedataset.inference_datainference_datasetval.tar.gz否
traindataset.train_datatrain_datasetstrain.tar.gz否
traindataset.val_dataeval_datasetval.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.category": "bike",
    "dataset.batch_size": 4,
    "dataset.train_data": f"{S3_TRAIN}/train.tar.gz",
    "dataset.val_data": f"{S3_EVAL}/val.tar.gz",
}

evaluate(必需的数据源):

{
    "dataset.category": "bike",
    "dataset.test_data": f"{S3_EVAL}/test.tar.gz",
}

inference(必需的数据源):

{
    "dataset.category": "bike",
    "dataset.inference_data": f"{S3_EVAL}/val.tar.gz",
}

gen_trt_engine(必需的数据源):

{
    "gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}/train.tar.gz"],
}

评估数据集

可选。验证集和测试集以单独的 tar 包提供。

重要参数

  • dataset.num_classes:对象类别数。默认值为 1。
  • dataset.num_joints:每个对象的关键点数。固定为 8(边界框关键点)。有效范围:只能为 8。
  • dataset.input_res:输入分辨率。固定为 512。输出分辨率固定为 128。
  • dataset.category:对象类别名称。默认值为 "cereal_box"。
  • model.backbone.model_type:默认值为 fan_small。主干网络选项受 schema 限制。
  • train.optim.lr:学习率。默认值为 6e-5。使用 MultiStep 调度器,lr_steps=[90, 120],lr_decay=0.1。
  • train.loss_config:丰富的损失配置,包含以下开关:mse_loss、obj_scale、obj_scale_uncertainty、hps_uncertainty、reg_bbox、hm_hp。权重:wh_weight=0.1、off_weight=1、hp_weight=1。
  • inference.use_pnp:使用 PnP 进行 6-DoF 位姿估计。默认值为 True。需要相机内参(focal_length_x/y、principle_point_x/y)。
  • export.input_width:导出输入尺寸。固定为 512x512。opset_version=16。

多 GPU / 多节点

**启动方式:**由 Lightning 管理(单个 python 进程,由 Lightning 启动工作进程)。

Spec KeyDescriptionDefault
train.num_gpusGPU 数量1
train.gpu_idsGPU 设备索引[0]
  • 策略:auto(Lightning 自动选择最佳策略)
  • 没有显式的 num_nodes 或 distributed_strategy 配置——仅支持单节点
  • 不支持 sync_batchnorm

导出 / TRT 默认值

  • 导出输入:512x512(固定),opset 16
  • TRT 数据类型:FP32、FP16、INT8
  • TRT opt_batch_size:4,max_batch_size:8

完整的 TAO Deploy 参考文档:tao-deploy-centerpose。

硬件

至少需要 1 个 GPU,建议使用 2 个 GPU。每个 GPU 需要 16GB 及以上显存。CenterPose 的内存占用适中,具体取决于输入分辨率和关键点数量。

错误模式

num_joints 不匹配:确保 dataset.num_joints 与标注中的关键点数量一致。

Spec 参数 / 父模型推断

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

TAO Core centerpose.config.json 中的推断映射:

操作Spec 字段推断函数含义
评估encryption_keykey加密密钥
评估evaluate.checkpointparent_model从父作业结果文件夹推断出的模型文件
评估evaluate.trt_engineparent_model从父作业结果文件夹推断出的模型文件
评估results_diroutput_dir当前作业结果目录
导出encryption_keykey加密密钥
导出export.checkpointparent_model从父作业结果文件夹推断出的模型文件
导出export.onnx_filecreate_onnx_file输出 ONNX 路径
导出results_diroutput_dir当前作业结果目录
生成 TRT 引擎encryption_keykey加密密钥
生成 TRT 引擎gen_trt_engine.onnx_fileparent_model从父作业结果文件夹推断出的模型文件
生成 TRT 引擎gen_trt_engine.tensorrt.calibration.cal_cache_filecreate_cal_cache校准缓存路径
生成 TRT 引擎gen_trt_engine.trt_enginecreate_engine_file输出 TensorRT 引擎路径
生成 TRT 引擎results_diroutput_dir当前作业结果目录
推理encryption_keykey加密密钥
推理inference.checkpointparent_model从父作业结果文件夹推断出的模型文件
推理inference.trt_engineparent_model从父作业结果文件夹推断出的模型文件
推理results_diroutput_dir当前作业结果目录
训练encryption_keykey加密密钥
训练model.backbone.pretrained_backbone_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,也不要修改生成的运行器脚本来猜测检查点路径。

评论

支持 Markdown