tao-train-dinoSkill tao-train-dino

该技能用于TAO DINO二维目标检测模型的训练、评估、导出、蒸馏、量化和推理。DINO是基于Transformer的检测器,支持去噪训练、多尺度特征和知识蒸馏。技能包含数据集要求、AutoML支持、多GPU配置、TensorRT部署参考和错误处理指南。关键词:DINO、目标检测、TAO、Transformer、去噪训练、AutoML、TensorRT、2D目标检测。

视觉模型训练 0 次安装 1 次浏览 更新于 9/6/2026
名称 tao-train-dino
描述 DINO(带有改进去噪锚框的DETR)用于二维目标检测。基于Transformer的检测器,具有去噪训练、多尺度特征和可选的蒸馏支持。当需要为TAO DINO检测器进行训练、评估、导出、蒸馏、量化或运行推理时使用。触发短语包括“train DINO”、“DETR object detection”、“TAO 2D detection”、“DINO with distillation”。
开源协议 Apache-2.0 compatibility: 需要docker + nvidia-container-toolkit。 metadata:
版本 0.1.0
作者 NVIDIA Corporation allowed-tools: Read Bash tags: - object - detection

DINO

独立安装? 如果此会话尚未由TAO技能库插件初始化,请先运行 tao-setup 技能(宿主机预检查、凭据、跨技能发现)。

DINO(DETR with Improved DeNoising Anchor Boxes)用于二维目标检测。基于Transformer的检测器,具有去噪训练、多尺度特征和可选的蒸馏支持。

使用预训练骨干权重(例如ResNet-50 ImageNet)。设置 model.pretrained_backbone_path 仅使用骨干,或 train.pretrained_model_path 使用完整模型。

使用时机

为TAO DINO二维目标检测器训练、评估、导出、蒸馏、量化或运行推理。

对于TAO Deploy TensorRT操作(gen_trt_engine、TensorRT evaluate和TensorRT inference),请先阅读 references/tao-deploy-dino.md。部署规范模板位于此技能的 references/ 文件夹中,前缀为 spec_template_deploy_*.yaml

参考地图

  • references/dino-data-specs.md — 数据集契约、每个操作的数据集要求、每个操作的规范覆盖示例(训练、评估、导出、deploy/gen_trt_engine、推理、量化、蒸馏)、数据源数组、检查点推理和数据集布局。
  • references/dino-actions-errors.md — 重要参数、默认值、评估/导出默认值、硬件以及完整错误模式目录。
  • references/dino-tuning-multigpu.md — 完整的AutoML/HPO说明(指标、超参数、提取器)和多GPU规范一致性。
  • references/dino-automl-sdk.md — AutoML指标、SDK编排内部、数据源差距以及规范参数/父模型推断。
  • references/tao-deploy-dino.md — TensorRT部署工作流。
  • references/detailed-guide.md — 映射到详细模型指南。

数据类架构

生成的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.jsonreferences/spec_template_train.yaml 存在并可解析。使用打包的训练架构获取 automl_default_parametersautoml_disabled_parameters、默认值、最小值/最大值边界、枚举、选项权重、数学条件、依赖关系和流行参数。运行时不要期望 ~/tao-core;维护者在打包技能库之前重建架构/模板。

训练操作策略

此模型在模型层启用了AutoML。在处理任何训练阶段请求之前,请阅读 references/skill_info.yaml,并根据显式的 automl_policy 值或用户的工作流请求解析运行覆盖。默认使用 automl_policy: on,仅在新启动提示中暴露 on / off。将诸如“关闭AutoML”、“禁用AutoML”、“无HPO”或“普通训练”等短语视为本次运行的 automl_policy: off。当 automl_policy: onautoml_enabled: trueschemas/train.schema.jsonreferences/spec_template_train.yaml 都已打包时,默认通过 tao-skill-bank:tao-run-automl 将训练操作路由到使用此模型 skill_dir 的AutoML。保留数据集、规范、输出目录、GPU/平台设置、父检查点和 automl_policy 的工作流/应用程序覆盖。仅当 automl_policy: off 或打包的训练架构/模板缺失时,才使用直接模型训练;在缺失架构的情况下,报告AutoML已启用但在此模型上不可运行,直到生成架构。

非训练操作如 evaluateinferenceexport 和部署流程保留在此模型技能中。每次运行的 automl_policy 覆盖不会更改模型元数据。

训练要求

在生成任何DINO的训练或AutoML脚本之前,代理必须阅读此部分。

  • 数据集类型: object_detection
  • 格式: coco, coco_raw
  • 接受的数据集意图: training, evaluation, testing, calibration
  • 监控指标: mAP50用于快速操作检查;val_mAP用于COCO/论文风格基准比较。

必需数据集 — 必须解析两个:

数据集 必需 原因
训练数据集URI 训练数据(COCO格式)
验证数据集URI 是 — 始终 DINO无条件构建验证数据加载器。省略 val_data_sources 会在启动时导致 FileNotFoundError,无论指标或工作流如何。如果用户没有单独的评估分割,则重用训练URI。

生成任何训练规范之前所需的输入:

  1. 训练数据集URI — S3路径到COCO格式训练数据
  2. 验证数据集URI — S3路径到COCO格式验证数据(可与训练相同)
  3. num_classes — 有多少个对象类别?默认91(COCO)。必须 >= max(category_id) + 1。过低会导致 CUDA error: device-side assert triggered

从用户请求或下面的默认配置文件解析这些值。在应用配置文件规则后,仅对仍然缺失的值进行提示。

DINO AutoML烟囱运行的银行本地默认配置文件:

仅当用户要求运行DINO AutoML且未提供数据集或类别计数输入时使用此配置文件。此配置文件有意保持小规模并仅限本地,适用于冒烟/迭代运行,不是生产基准。不要搜索以前的运行器、日志、会话状态、shell历史记录或主目录来恢复这些值。

DINO_AUTOML_PROFILE = {
    'train_dataset_uri': 's3://nvcf-storage-handling/data/tao_od_synthetic_subset_train_no_convert',
    'validation_dataset_uri': 's3://nvcf-storage-handling/data/tao_od_synthetic_subset_val_no_convert',
    'object_classes': 4,
    'dataset_num_classes': 5,
    'image_archive': 'images.tar.gz',
    'annotation_file': 'annotations.json',
    'max_recommendations': 10,
    'train_num_epochs': 10,
    'train_checkpoint_interval': 10,
    'train_validation_interval': 1,
    'train_num_gpus': 1,
}

如果用户提供了任何数据集URI或类别计数值,则优先使用用户值,并就任何剩余必需的DINO值询问用户。不要将用户自定义数据集与此配置文件的类别计数部分混合,除非用户确认。

**标准DINO数据集不要提示图像布局。**标准TAO DINO数据集工件是 images.tar.gz 加上 annotations.json。在远程规范覆盖中的 image_dir 使用 images.tar.gz。SDK下载该归档并将运行时规范重写为以归档名称命名的提取文件夹(images.tar.gz -> images)。仅当用户明确提供不同的图像工件名称时才偏离。

核心工作流

DINO支持训练、评估、导出、蒸馏、量化和推理。数据源覆盖对每个操作都是强制性的 — DINO的 config.json 具有空 data_sources,因为运行器无法自动解析对象数组规范键。代理必须构建数据源路径并将其包含在 spec_overrides 中。

有关每个操作的数据集要求表、标准数据集工件(images.tar.gz + annotations.json)和运行时文件夹重写规则,以及训练、评估、导出、deploy/gen_trt_engine、推理、量化和蒸馏的完整每操作 spec_overrides 示例——包括通过 parent_model 的检查点推理、results_dir/train/ 检查点位置以及蒸馏FAN教师/学生规则,请参见 references/dino-data-specs.md

重要参数和默认值

关键默认值:num_epochs=10batch_size=4learning_rate=2e-4lr_backbone=2e-5num_classes=91backbone=resnet_50

  • dataset.num_classes: 默认91(COCO)。必须 >= max(category_id) + 1。过低会导致 CUDA error: device-side assert triggered。在规范覆盖中设置为 <num_classes> + 1
  • num_epochs: 默认10(快速迭代);真实数据集通常需要30-50+个epoch才能获得良好的mAP。

有关完整参数列表(骨干选项、train.optim.lr/lr_stepsmodel.num_queriesbatch_size)、默认值、评估默认值、导出默认值(输入960x544,opset 17,TRT数据类型,工作区1024 MB)和硬件要求,请参见 references/dino-actions-errors.md

多GPU和AutoML / HPO

增加 train.num_gpus 时,还要将 train.gpu_ids 设置为相同的可见设备范围,否则分布式启动可能不一致。

AutoML运行训练 — 上述所有训练要求均适用。对于无输入本地冒烟运行,使用 DINO_AUTOML_PROFILE。推荐指标为 mAP50(基准比较使用 val_mAP),方向为“maximize”,并使用自定义 metric_extractor

有关完整的多GPU规范一致性规则(8-GPU示例、NCCL超时说明)和完整的AutoML/HPO说明(指标选择、metric_extractor、推荐超参数、weight_decay 行为、密集数据集恢复指导),请参见 references/dino-tuning-multigpu.md。有关AutoML指标提取器代码、SDK编排内部和父模型推断映射,请参见 references/dino-automl-sdk.md

错误模式

常见失败包括CUDA内存不足(减少 batch_size)、缺失 val_data_sources(启动时 FileNotFoundError — 始终提供验证集)、num_classes 过低(CUDA device-side assert),以及父级 dino gen_trt_engine / dino convert PyT-CLI限制。

有关带诊断和修复的完整错误模式目录,请参见 references/dino-actions-errors.md

规范参数 / 父模型推断

模型特定的推断映射属于此MD文件,而不是 config.json。生成的运行器读取映射并在 create_job() 之前使用SDK助手应用它们。对于 parent_model/parent_model_folder,将上游训练/导出/AutoML子作业ID作为 parent_job_id 传递;SDK列出父结果文件夹、过滤检查点工件并返回所选模型。

有关完整的推断映射表(每个操作:parent_modelkeyoutput_dirptm_if_no_resume_modelresume_modelcreate_onnx_file)和TensorRT映射说明,请参见 references/dino-automl-sdk.md。TensorRT映射位于部署工作流中,而不是PyT模型技能中。

可选:通过TAO SDK运行

通过TAO SDK运行DINO时(script_runner 编排、S3 I/O包装、AutoML),技能读取 references/skill_info.yaml 获取输入和规范参数映射。有关SDK编排内部(包括数据源差距和 [0] 索引的 inputs 声明),请参见 references/dino-automl-sdk.md。在本地使用 docker run 运行时可跳过此部分。

部署