tao-train-grounding-dino
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGrounding DINO
Grounding DINO
Grounding DINO for open-set object detection. Combines DINO-style detection with BERT text encoder for language-guided detection. Detects objects described by text prompts without fixed class vocabulary.
Set train.pretrained_model_path for full Grounding DINO weights or model.pretrained_backbone_path for backbone-only.
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-grounding-dino.mdreferences/spec_template_deploy_*.yaml用于开放集目标检测的Grounding DINO。将DINO风格的检测与BERT文本编码器相结合,实现语言引导的检测。无需固定类别词汇表,即可检测文本提示所描述的对象。
设置train.pretrained_model_path以加载完整的Grounding DINO权重,或设置model.pretrained_backbone_path仅加载骨干网络权重。
对于TAO Deploy TensorRT操作(、TensorRT 和TensorRT ),请先阅读。部署规范模板位于该技能的文件夹中,前缀为。
gen_trt_engineevaluateinferencereferences/tao-deploy-grounding-dino.mdreferences/spec_template_deploy_*.yamlDataclass Schemas
数据类模式
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模式打包在中,列出了可用操作。每个生成的模式还会从模式顶层的字段生成。AutoML支持在中的模型层通过声明。可运行的AutoML仍要求和存在且可解析。使用打包的训练模式来配置、、默认值、最小/最大边界、枚举、选项权重、数学条件、依赖关系和常用参数。运行时不要依赖;维护者在打包技能库前会重新生成模式/模板。
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/平台设置、父检查点和的工作流/应用覆盖配置。仅当或打包的训练模式/模板缺失时,才使用直接模型训练;在模式缺失的情况下,需报告该模型已启用AutoML但无法运行,直到生成模式为止。
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非训练操作(如、、和部署流程)仍在该模型技能中执行。每次运行的覆盖配置不会更改模型元数据。
evaluateinferenceexportautoml_policyTraining Requirements
训练要求
- Dataset type: object_detection
- Formats: odvg, coco, raw
- Monitoring metric: val_mAP50
- 数据集类型: object_detection
- 格式: odvg, coco, raw
- 监控指标: val_mAP50
Per-Action Dataset Requirements
各操作的数据集要求
| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| evaluate | dataset.test_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| inference | dataset.infer_data_sources | inference_dataset | image_dir: images.tar.gz, classmap: label_map.txt | No |
| quantize | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Yes |
| quantize | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| quantize | dataset.quant_calibration_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | No |
| train | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Yes |
| train | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| 操作 | 规范键 | 来源 | 文件 | 是否为列表? |
|---|---|---|---|---|
| evaluate | dataset.test_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | 否 |
| inference | dataset.infer_data_sources | inference_dataset | image_dir: images.tar.gz, classmap: label_map.txt | 否 |
| quantize | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | 是 |
| quantize | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | 否 |
| quantize | dataset.quant_calibration_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | 否 |
| train | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | 是 |
| train | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | 否 |
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.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
"dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}gen_trt_engine:
python
{
"gen_trt_engine.tensorrt.data_type": "FP16",
}inference (mandatory data sources):
python
{
"dataset.infer_data_sources.captions": [
"person"
],
"dataset.infer_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "classmap": f"{S3_EVAL}/label_map.txt"},
}evaluate (mandatory data sources):
python
{
"dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}quantize (mandatory data sources):
python
{
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
"dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
"dataset.quant_calibration_data_sources": {"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"},
}数据源覆盖配置对每个操作都是必需的——代理必须根据上述各操作数据集要求表构建数据源路径,并将其包含在中。
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.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
"dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}gen_trt_engine:
python
{
"gen_trt_engine.tensorrt.data_type": "FP16",
}inference(必需数据源):
python
{
"dataset.infer_data_sources.captions": [
"person"
],
"dataset.infer_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "classmap": f"{S3_EVAL}/label_map.txt"},
}evaluate(必需数据源):
python
{
"dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}quantize(必需数据源):
python
{
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
"dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
"dataset.quant_calibration_data_sources": {"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"},
}Eval Dataset
评估数据集
Optional. Validation uses COCO-format annotations for mAP even though training can use ODVG format.
可选。尽管训练可使用ODVG格式,但验证仍使用COCO格式的注释来计算mAP。
Important Parameters
重要参数
- model.backbone: Default swin_tiny_224_1k. Also supports resnet_50 and other Swin variants. Swin generally performs better for grounding tasks.
- model.text_encoder_type: BERT model for text encoding. Default bert-base-uncased. max_text_len defaults to 256.
- train.optim.lr: Learning rate. Default 2e-4. lr_backbone 2e-5. Supports bf16 precision in addition to fp16/fp32.
- dataset.max_labels: Maximum labels per image during training. Default 50. Increase for dense annotation datasets.
- model.num_queries: Object queries. Default 900 (higher than DINO's 300) due to open-vocabulary nature.
- train.optim.lr_steps: MultiStep LR schedule. Default [10].
- model.backbone:默认值为swin_tiny_224_1k。还支持resnet_50和其他Swin变体。Swin通常在 grounding 任务中表现更好。
- model.text_encoder_type:用于文本编码的BERT模型。默认值为bert-base-uncased。max_text_len默认值为256。
- train.optim.lr:学习率。默认值为2e-4。lr_backbone为2e-5。除fp16/fp32外,还支持bf16精度。
- dataset.max_labels:训练期间每张图像的最大标签数。默认值为50。对于密集注释数据集可增大该值。
- model.num_queries:对象查询数。默认值为900(由于开放词汇特性,高于DINO的300)。
- train.optim.lr_steps:多步学习率调度。默认值为[10]。
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| 规范键 | 描述 | 默认值 |
|---|---|---|
| GPU数量 | 1 |
| GPU设备索引 | [0] |
| 节点数量 | 1 |
| | |
与DINO的DDP/FSDP行为相同。多节点需要由编排器设置、、、环境变量。
WORLD_SIZENODE_RANKMASTER_ADDRMASTER_PORTExport / TRT Defaults
导出 / TRT默认值
- Export input: 960x544 (larger than other OD models), opset 17
- TRT data types: FP32, FP16 only — INT8 is NOT supported
- TRT workspace: 8192 MB (8x larger than other OD models)
- TRT max_batch_size: 4
Full TAO Deploy reference: tao-deploy-grounding-dino.
- 导出输入尺寸:960x544(比其他目标检测模型大),opset 17
- TRT数据类型:仅支持FP32、FP16 —— 不支持INT8
- TRT工作空间:8192 MB(是其他目标检测模型的8倍)
- TRT最大批量大小:4
完整的TAO Deploy参考文档:tao-deploy-grounding-dino。
Hardware
硬件要求
Minimum 1 GPU(s), recommended 4 GPU(s). 24GB+ (A100 recommended) VRAM per GPU. Grounding DINO is heavier than standard DINO due to the text encoder (BERT). 24GB+ GPU memory recommended. Reduce batch_size for 16GB GPUs.
最少1个GPU,推荐4个GPU。每个GPU需24GB及以上显存(推荐A100)。由于包含文本编码器(BERT),Grounding DINO比标准DINO更占用资源。推荐使用24GB及以上显存的GPU。对于16GB显存的GPU,需减小batch_size。
Error Patterns
错误模式
CUDA out of memory: Reduce batch_size (4 -> 2 -> 1). The BERT text encoder adds significant memory overhead on top of the vision backbone.
Val annotation category IDs: Validation annotations should have category IDs starting from 0 for correct loss computation. Use annotation format conversion if needed.
Text encoder loading error: Ensure the container has access to download bert-base-uncased weights or provide a local path.
CUDA内存不足:减小batch_size(从4→2→1)。BERT文本编码器在视觉骨干网络基础上增加了显著的内存开销。
验证注释类别ID:为了正确计算损失,验证注释的类别ID应从0开始。如有需要,可进行注释格式转换。
文本编码器加载错误:确保容器能够下载bert-base-uncased权重,或提供本地路径。
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 :
grounding_dino.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 | | | 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 | | | PTM when no resume checkpoint exists |
| 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 的推理映射:
grounding_dino.config.json| 操作 | 规范字段 | 推理函数 | 含义 |
|---|---|---|---|
| evaluate | | | 加密密钥 |
| evaluate | | | 从父作业结果文件夹推断出的模型文件 |
| evaluate | | | 从父作业结果文件夹推断出的模型文件 |
| evaluate | | | 当前作业结果目录 |
| export | | | 加密密钥 |
| export | | | 从父作业结果文件夹推断出的模型文件 |
| export | | | 输出ONNX路径 |
| export | | | 当前作业结果目录 |
| gen_trt_engine | | | 加密密钥 |
| gen_trt_engine | | | 从父作业结果文件夹推断出的模型文件 |
| gen_trt_engine | | | 输出TensorRT引擎路径 |
| gen_trt_engine | | | 当前作业结果目录 |
| inference | | | 加密密钥 |
| inference | | | 从父作业结果文件夹推断出的模型文件 |
| inference | | | 从父作业结果文件夹推断出的模型文件 |
| inference | | | 当前作业结果目录 |
| quantize | | | 加密密钥 |
| quantize | | | 从父作业结果文件夹推断出的模型文件 |
| quantize | | | 当前作业结果目录 |
| train | | | 加密密钥 |
| train | | | 无恢复检查点时的预训练模型 |
| train | | | 当前作业结果目录 |
| train | | | 无恢复检查点时的预训练模型 |
| train | | | 从当前作业结果文件夹推断出的模型文件 |
对于或,将上游训练/导出/AutoML子作业ID作为传入。SDK会列出父结果文件夹,过滤检查点工件,并返回选中的模型文件或文件夹。不要将这些映射添加回,也不要修改生成的运行器脚本以猜测检查点路径。
parent_modelparent_model_folderparent_job_idconfig.json