tao-train-deformable-detr
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDeformable DETR
Deformable DETR
Deformable DETR for 2D object detection. Uses deformable attention for efficient multi-scale feature processing. Lighter than DINO with competitive accuracy.
Uses pretrained backbone weights. Set model.pretrained_backbone_path for backbone-only loading.
For TAO Deploy TensorRT actions (, TensorRT , and TensorRT ), read first. Deploy spec templates live in this skill's folder with the prefix.
gen_trt_engineevaluateinferencereferences/tao-deploy-deformable-detr.mdreferences/spec_template_deploy_*.yaml用于2D目标检测的Deformable DETR。采用可变形注意力实现高效的多尺度特征处理,比DINO更轻量化且精度具有竞争力。
使用预训练骨干网络权重。设置model.pretrained_backbone_path可仅加载骨干网络。
对于TAO Deploy TensorRT操作(、TensorRT 和TensorRT ),请先阅读。部署规格模板存放在本skill的文件夹中,前缀为。
gen_trt_engineevaluateinferencereferences/tao-deploy-deformable-detr.mdreferences/spec_template_deploy_*.yamlDataclass Schemas
数据类Schema
Generated TAO Core schemas are packaged in , with listing available actions. Each generated schema also emits from the schema top-level field. AutoML enablement is declared at the model layer in via . Runnable AutoML still requires and to exist and parse. Use the packaged train schema for , , defaults, min/max bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect at runtime; maintainers regenerate schemas/templates before packaging the skill bank.
schemas/<action>.schema.jsonschemas/manifest.jsonreferences/spec_template_<action>.yamldefaultreferences/skill_info.yamlautoml_enabledschemas/train.schema.jsonreferences/spec_template_train.yamlautoml_default_parametersautoml_disabled_parameters~/tao-core生成的TAO Core schema打包在中,列出了可用的操作。每个生成的schema还会从schema顶层字段生成。AutoML支持在中的模型层通过声明。可运行的AutoML仍要求和存在且可解析。使用打包的训练schema来配置、、默认值、最小/最大范围、枚举值、选项权重、数学条件、依赖关系以及常用参数。运行时不要依赖;维护人员在打包skill库前会重新生成schema和模板。
schemas/<action>.schema.jsonschemas/manifest.jsondefaultreferences/spec_template_<action>.yamlreferences/skill_info.yamlautoml_enabledschemas/train.schema.jsonreferences/spec_template_train.yamlautoml_default_parametersautoml_disabled_parameters~/tao-coreTrain Action Policy
训练操作策略
This model is AutoML-enabled at the model layer. Before handling any train-stage request, read and resolve the run override from either an explicit value or the user's workflow request. Treat phrases like "turn off AutoML", "disable AutoML", "no HPO", or "plain training" as for this run only; otherwise default to . When , , and both and are packaged, route the train action through by default with this model's . Preserve workflow/application overrides for datasets, specs, output directories, GPU/platform settings, parent checkpoints, and . Use direct model training only when 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.
references/skill_info.yamlautoml_policyautoml_policy: offautoautoml_policy: autoautoml_enabled: trueschemas/train.schema.jsonreferences/spec_template_train.yamltao-skill-bank:tao-run-automlskill_dirautoml_policyautoml_policy: offNon-train actions such as , , , and deploy flows stay in this model skill. The per-run override does not change model metadata.
evaluateinferenceexportautoml_policy该模型在模型层支持AutoML。处理任何训练阶段请求前,请先阅读,并通过显式的值或用户的工作流请求确定运行覆盖配置。将“turn off AutoML”、“disable AutoML”、“no HPO”或“plain training”这类短语视为本次运行的;否则默认设为。当、且和均已打包时,默认将训练操作通过路由到该模型的。保留数据集、规格、输出目录、GPU/平台设置、父检查点和的工作流/应用覆盖配置。仅当或打包的训练schema/模板缺失时,才使用直接模型训练;若schema缺失,需报告该模型已启用AutoML但无法运行,直到生成schema为止。
references/skill_info.yamlautoml_policyautoml_policy: offautoautoml_policy: autoautoml_enabled: trueschemas/train.schema.jsonreferences/spec_template_train.yamltao-skill-bank:tao-run-automlskill_dirautoml_policyautoml_policy: off非训练操作(如、、和部署流程)仍在本模型skill中执行。每次运行的覆盖配置不会更改模型元数据。
evaluateinferenceexportautoml_policyTraining Requirements
训练要求
- Dataset type: object_detection
- Formats: coco, coco_raw
- Monitoring metric: val_mAP50
- 数据集类型: object_detection
- 格式: coco, coco_raw
- 监控指标: val_mAP50
Per-Action Dataset Requirements
各操作的数据集要求
| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| evaluate | dataset.test_data_sources.image_dir | eval_dataset | images.tar.gz | No |
| evaluate | dataset.test_data_sources.json_file | eval_dataset | annotations.json | No |
| export | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| export | dataset.val_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| gen_trt_engine | gen_trt_engine.tensorrt.calibration.cal_image_dir | calibration_dataset | images.tar.gz | Yes |
| inference | dataset.infer_data_sources.image_dir | inference_dataset | images.tar.gz | Yes |
| inference | dataset.infer_data_sources.classmap | inference_dataset | label_map.txt | No |
| quantize | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| quantize | dataset.val_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| quantize | dataset.quant_calibration_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | No |
| train | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| train | dataset.val_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| evaluate | dataset.test_data_sources.image_dir | eval_dataset | images.tar.gz | No |
| evaluate | dataset.test_data_sources.json_file | eval_dataset | annotations.json | No |
| export | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| export | dataset.val_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| gen_trt_engine | gen_trt_engine.tensorrt.calibration.cal_image_dir | calibration_dataset | images.tar.gz | Yes |
| inference | dataset.infer_data_sources.image_dir | inference_dataset | images.tar.gz | Yes |
| inference | dataset.infer_data_sources.classmap | inference_dataset | label_map.txt | No |
| quantize | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| quantize | dataset.val_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| quantize | dataset.quant_calibration_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | No |
| train | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| train | dataset.val_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
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_overridespython
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"train (mandatory data sources):
python
{
"train.num_epochs": 10,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"dataset.num_classes": "<num_classes> + 1",
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
}evaluate (mandatory data sources):
python
{
"dataset.num_classes": "<num_classes> + 1",
"dataset.test_data_sources.image_dir": f"{S3_EVAL}/images.tar.gz",
"dataset.test_data_sources.json_file": f"{S3_EVAL}/annotations.json",
}export (mandatory data sources):
python
{
"dataset.num_classes": "<num_classes> + 1",
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
}gen_trt_engine (mandatory data sources):
python
{
"gen_trt_engine.tensorrt.data_type": "FP16",
"dataset.num_classes": "<num_classes> + 1",
"gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}/images.tar.gz"],
}inference (mandatory data sources):
python
{
"dataset.num_classes": "<num_classes> + 1",
"dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/images.tar.gz"],
"dataset.infer_data_sources.classmap": f"{S3_EVAL}/label_map.txt",
}quantize (mandatory data sources):
python
{
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.quant_calibration_data_sources": {"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"},
}数据源覆盖配置对每个操作都是必需的——Agent必须根据上面的各操作数据集要求表构建数据源路径,并将其包含在中。
spec_overridespython
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"train(必填数据源):
python
{
"train.num_epochs": 10,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"dataset.num_classes": "<num_classes> + 1",
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
}evaluate(必填数据源):
python
{
"dataset.num_classes": "<num_classes> + 1",
"dataset.test_data_sources.image_dir": f"{S3_EVAL}/images.tar.gz",
"dataset.test_data_sources.json_file": f"{S3_EVAL}/annotations.json",
}export(必填数据源):
python
{
"dataset.num_classes": "<num_classes> + 1",
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
}gen_trt_engine(必填数据源):
python
{
"gen_trt_engine.tensorrt.data_type": "FP16",
"dataset.num_classes": "<num_classes> + 1",
"gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}/images.tar.gz"],
}inference(必填数据源):
python
{
"dataset.num_classes": "<num_classes> + 1",
"dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/images.tar.gz"],
"dataset.infer_data_sources.classmap": f"{S3_EVAL}/label_map.txt",
}quantize(必填数据源):
python
{
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
"dataset.quant_calibration_data_sources": {"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"},
}Eval Dataset
评估数据集
Optional. If provided, validation mAP is computed at each checkpoint interval.
可选。若提供,会在每个检查点间隔计算验证mAP。
Important Parameters
重要参数
- dataset.num_classes: Number of object classes. Default 91 (COCO). Must match annotations.
- model.backbone: Default resnet_50. Supported: resnet_50, gcvit_tiny, gcvit_small, gcvit_base, gcvit_large, gcvit_large_384 (more limited than DINO).
- train.optim.lr: Learning rate. Default 2e-4 (AdamW). lr_backbone is 2e-5.
- train.optim.lr_steps: MultiStep LR schedule. Default [40]. For short runs, set to match ~80% of total epochs.
- model.num_queries: Number of object queries. Default 300. Valid range 100-900.
- model.dropout_ratio: Dropout in transformer layers. Default 0.3 (higher than DINO's 0.0). Reduce for large datasets, increase for small datasets.
- model.dim_feedforward: FFN hidden dim. Default 1024 (vs DINO's 2048). Increasing improves capacity but costs memory.
- dataset.num_classes:目标类别数量。默认91(COCO数据集)。必须与标注匹配。
- model.backbone:默认resnet_50。支持的骨干网络:resnet_50, gcvit_tiny, gcvit_small, gcvit_base, gcvit_large, gcvit_large_384(比DINO支持的更少)。
- train.optim.lr:学习率。默认2e-4(AdamW优化器)。骨干网络学习率为2e-5。
- train.optim.lr_steps:多步学习率调度。默认[40]。对于短训练周期,设置为总周期的~80%。
- model.num_queries:目标查询数量。默认300。有效范围100-900。
- model.dropout_ratio:Transformer层的 dropout 比例。默认0.3(高于DINO的0.0)。大数据集可降低该值,小数据集可提高该值。
- model.dim_feedforward:前馈网络隐藏层维度。默认1024(对比DINO的2048)。增大该值可提升模型能力,但会增加内存消耗。
Multi-GPU / Multi-Node
多GPU/多节点
Launch method: Lightning-managed (single process, Lightning spawns workers).
python| Spec Key | Description | Default |
|---|---|---|
| Number of GPUs | 1 |
| GPU device indices | [0] |
| Number of nodes | 1 |
| | |
Same DDP/FSDP behavior as DINO. Multi-node requires , , , env vars set by orchestrator.
WORLD_SIZENODE_RANKMASTER_ADDRMASTER_PORT启动方式: Lightning管理(单个进程,Lightning生成工作进程)。
python| Spec Key | 描述 | 默认值 |
|---|---|---|
| GPU数量 | 1 |
| GPU设备索引 | [0] |
| 节点数量 | 1 |
| 分布式策略,可选 | |
与DINO的DDP/FSDP行为一致。多节点需要编排器设置、、、环境变量。
WORLD_SIZENODE_RANKMASTER_ADDRMASTER_PORTExport / TRT Defaults
导出/TRT默认值
- Export input: 640x640, opset 17
- TRT data types: FP32, FP16, INT8
- TRT workspace: 1024 MB
- TRT max_batch_size: 1
Full TAO Deploy reference: tao-deploy-deformable-detr.
- 导出输入尺寸:640x640,opset 17
- TRT数据类型:FP32, FP16, INT8
- TRT工作空间:1024 MB
- TRT最大批量大小:1
完整TAO Deploy参考:tao-deploy-deformable-detr。
Hardware
硬件要求
Minimum 1 GPU(s), recommended 4 GPU(s). 16GB+ (V100 or A100) VRAM per GPU. Slightly lighter than DINO due to smaller FFN. batch_size=4 fits on most 16GB+ GPUs.
最低1块GPU,推荐4块GPU。每块GPU需16GB+显存(V100或A100)。由于前馈网络更小,比DINO略轻量化。batch_size=4可适配大多数16GB+显存的GPU。
Error Patterns
错误模式
CUDA out of memory: Reduce batch_size (4 -> 2 -> 1).
num_select must be < num_queries * num_classes: Same constraint as DINO.
return_interm_indices length must match num_feature_levels: Default [1,2,3,4] with num_feature_levels=4.
Dataset size smaller than total batch size: Reduce batch_size or num_gpus.
CUDA内存不足:减小batch_size(4→2→1)。
num_select必须小于num_queries * num_classes:与DINO的约束相同。
return_interm_indices长度必须匹配num_feature_levels:默认[1,2,3,4],对应num_feature_levels=4。
数据集大小小于总批量大小:减小batch_size或GPU数量。
Spec Param / Parent Model Inference
规格参数/父模型推理
Model-specific inference mappings belong in this MD file, not in . Generated runners should read this section and apply the mappings with SDK helpers before . This mirrors the old microservices flow.
config.jsoncreate_job()infer_params.pyInference mappings from TAO Core :
deformable_detr.config.json| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| evaluate | | | encryption key |
| evaluate | | | model file inferred from the parent job results folder |
| evaluate | | | model file inferred from the parent job results folder |
| evaluate | | | current job results directory |
| export | | | encryption key |
| export | | | model file inferred from the parent job results folder |
| export | | | output ONNX path |
| export | | | current job results directory |
| gen_trt_engine | | | encryption key |
| gen_trt_engine | | | model file inferred from the parent job results folder |
| gen_trt_engine | | | calibration cache path |
| gen_trt_engine | | | output TensorRT engine path |
| gen_trt_engine | | | current job results directory |
| inference | | | encryption key |
| inference | | | model file inferred from the parent job results folder |
| inference | | | model file inferred from the parent job results folder |
| inference | | | current job results directory |
| quantize | | | encryption key |
| quantize | | | model file inferred from the parent job results folder |
| quantize | | | current job results directory |
| train | | | encryption key |
| train | | | PTM when no resume checkpoint exists |
| train | | | current job results directory |
| train | | | model file inferred from the current job results folder |
For or , pass the upstream train/export/AutoML child job id as . 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 and do not patch generated runner scripts to guess checkpoint paths.
parent_modelparent_model_folderparent_job_idconfig.json模型特定的推理映射应放在此MD文件中,而非。生成的运行器应读取本节内容,并在前使用SDK助手应用映射。这与旧微服务的流程一致。
config.jsoncreate_job()infer_params.py来自TAO Core 的推理映射:
deformable_detr.config.json| Action | Spec Field | Inference Function | 含义 |
|---|---|---|---|
| evaluate | | | 加密密钥 |
| evaluate | | | 从父任务结果文件夹推断的模型文件 |
| evaluate | | | 从父任务结果文件夹推断的模型文件 |
| evaluate | | | 当前任务结果目录 |
| export | | | 加密密钥 |
| export | | | 从父任务结果文件夹推断的模型文件 |
| export | | | 输出ONNX路径 |
| export | | | 当前任务结果目录 |
| gen_trt_engine | | | 加密密钥 |
| gen_trt_engine | | | 从父任务结果文件夹推断的模型文件 |
| gen_trt_engine | | | 校准缓存路径 |
| gen_trt_engine | | | 输出TensorRT引擎路径 |
| gen_trt_engine | | | 当前任务结果目录 |
| inference | | | 加密密钥 |
| inference | | | 从父任务结果文件夹推断的模型文件 |
| inference | | | 从父任务结果文件夹推断的模型文件 |
| inference | | | 当前任务结果目录 |
| quantize | | | 加密密钥 |
| quantize | | | 从父任务结果文件夹推断的模型文件 |
| quantize | | | 当前任务结果目录 |
| train | | | 加密密钥 |
| train | | | 无恢复检查点时的预训练模型 |
| train | | | 当前任务结果目录 |
| train | | | 从当前任务结果文件夹推断的模型文件 |
对于或,将上游训练/导出/AutoML子任务ID作为传入。SDK会列出父任务结果文件夹,过滤检查点工件,并返回选定的模型文件或文件夹。请勿将这些映射添加回,也不要修改生成的运行器脚本以猜测检查点路径。
parent_modelparent_model_folderparent_job_idconfig.json