
Tao Train Dino
- 1.4k installs
- 2.8k repo stars
- Updated August 4, 2026
- nvidia/skills
tao-train-dino is an agent skill that trains, evaluates, distills, quantizes, exports, and deploys NVIDIA TAO DINO transformer object detectors for developers who need COCO-format 2D detection with denoising anchor boxes
About
tao-train-dino is an NVIDIA agent skill (version 0.1.0) for DINO (DETR with Improved DeNoising Anchor Boxes), a transformer-based 2D object detector inside NVIDIA TAO Toolkit. The skill enforces COCO or coco_raw datasets, mandatory validation data sources, and spec overrides for train, evaluate, export, distill, quantize, inference, and TensorRT gen_trt_engine deploy actions. Default training uses 10 epochs, batch_size 4, learning_rate 2e-4, and num_classes 91 for COCO, with ResNet-50 backbone options and AutoML HPO routing via tao-run-automl. Developers reach for tao-train-dino when adapting production object detectors on custom COCO datasets and exporting ONNX or TensorRT engines for inference APIs or edge devices. Reference docs cover multi-GPU DDP/FSDP, error patterns for CUDA OOM and num_classes mismatches, and deploy spec templates.
- NVIDIA TAO DINO training workflow
- Custom dataset and export guidance
- Vision detection model lifecycle support
- Pairs with NVIDIA skills repo conventions
- Prepares models for inference deployment
Tao Train Dino by the numbers
- 1,449 all-time installs (skills.sh)
- +26 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #186 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/nvidia/skills --skill tao-train-dinoAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.4k |
|---|---|
| repo stars | ★ 2.8k |
| Last updated | August 4, 2026 |
| Repository | nvidia/skills ↗ |
How do you train DINO object detection in NVIDIA TAO?
Train and adapt NVIDIA TAO DINO object-detection models on custom datasets, then export artifacts for inference services or edge deployment pipelines.
Who is it for?
ML engineers training transformer-based 2D object detectors on COCO-format datasets who need TAO-guided spec overrides, AutoML, and TensorRT export paths.
Skip if: Teams needing open-vocabulary text-prompted detection without fixed class labels, which should use tao-train-grounding-dino instead.
When should I use this skill?
The user asks to train DINO, run DETR object detection in TAO, configure COCO val_data_sources, or export a 2D detector with distillation or quantization.
What you get
Fine-tuned DINO checkpoints, mAP evaluation metrics, distilled or quantized models, ONNX files, and TensorRT detection engines.
- Fine-tuned DINO checkpoints
- ONNX and TensorRT detection engines
- mAP50 evaluation metrics
By the numbers
- Default num_classes 91 for COCO object detection
- Default training uses 10 epochs and batch_size 4
- Skill metadata version 0.1.0 with AutoML HPO support
Files
DINO
DINO (DETR with Improved DeNoising Anchor Boxes) for 2D object detection. Transformer-based detector with denoising training, multi-scale features, and optional distillation support.
Uses pretrained backbone weights (e.g. ResNet-50 ImageNet). Set model.pretrained_backbone_path for backbone-only or train.pretrained_model_path for full model.
When To Use
Train, evaluate, export, distill, quantize, or run inference for a TAO DINO 2D object detector.
For TAO Deploy TensorRT actions (gen_trt_engine, TensorRT evaluate, and TensorRT inference), read references/tao-deploy-dino.md first. Deploy spec templates live in this skill's references/ folder with the spec_template_deploy_*.yaml prefix.
Reference Map
references/dino-data-specs.md— dataset contracts, per-action dataset requirements, per-action spec-override examples (train, evaluate, export, deploy/gen_trt_engine, inference, quantize, distill), data-source arrays, checkpoint inference, and dataset layout.references/dino-actions-errors.md— important parameters, default values, evaluate/export defaults, hardware, and the full error-pattern catalog.references/dino-tuning-multigpu.md— full AutoML/HPO notes (metrics, hyperparameters, extractor) and multi-GPU spec consistency.references/dino-automl-sdk.md— AutoML metrics, SDK orchestration internals, data-source gap, and spec-param/parent-model inference.references/tao-deploy-dino.md— TensorRT deploy workflow.references/detailed-guide.md— map to the detailed model guide.
Dataclass Schemas
Generated TAO Core schemas are packaged in schemas/<action>.schema.json, with schemas/manifest.json listing available actions. Each generated schema also emits references/spec_template_<action>.yaml from the schema top-level default field. AutoML enablement is declared at the model layer in references/skill_info.yaml via automl_enabled. Runnable AutoML still requires schemas/train.schema.json and references/spec_template_train.yaml to exist and parse. Use the packaged train schema for automl_default_parameters, automl_disabled_parameters, defaults, min/max bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect ~/tao-core at runtime; maintainers regenerate schemas/templates before packaging the skill bank.
Train Action Policy
This model is AutoML-enabled at the model layer. Before handling any train-stage request, read references/skill_info.yaml and resolve the run override from either an explicit automl_policy value or the user's workflow request. Use automl_policy: on by default and only expose on / off in new launch prompts. Treat phrases like "turn off AutoML", "disable AutoML", "no HPO", or "plain training" as automl_policy: off for this run only. When automl_policy: on, automl_enabled: true, and both schemas/train.schema.json and references/spec_template_train.yaml are packaged, route the train action through tao-skill-bank:tao-run-automl by default with this model's skill_dir. Preserve workflow/application overrides for datasets, specs, output directories, GPU/platform settings, parent checkpoints, and automl_policy. Use direct model training only when automl_policy: off 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.
Non-train actions such as evaluate, inference, export, and deploy flows stay in this model skill. The per-run automl_policy override does not change model metadata.
Training Requirements
The agent MUST read this section before generating any training or AutoML script for DINO.
- Dataset type: object_detection
- Formats: coco, coco_raw
- Accepted dataset intents: training, evaluation, testing, calibration
- Monitoring metric: mAP50 for quick operational checks;
val_mAPfor
COCO/paper-style benchmark comparisons.
Required datasets — MUST resolve both:
| Dataset | Required | Why |
|---|---|---|
| Train dataset URI | Yes | Training data (COCO format) |
| Validation dataset URI | Yes — ALWAYS | DINO unconditionally builds a val dataloader. Omitting val_data_sources causes FileNotFoundError at startup regardless of the metric or workflow. If the user has no separate eval split, reuse the train URI. |
Required inputs before generating any training spec:
1. Train dataset URI — S3 path to COCO-format training data 2. Validation dataset URI — S3 path to COCO-format val data (can be same as train) 3. `num_classes` — How many object classes? Default 91 (COCO). Must be >= max(category_id) + 1. Too low causes CUDA error: device-side assert triggered.
Resolve these from the user request or the default profile below. Prompt only for values that are still missing after applying the profile rules.
Bankable local default profile for DINO AutoML smoke runs:
Use this profile only when the user asks to run DINO AutoML and does not provide dataset or class-count inputs. This profile is intentionally small and local to this skill bank; it is for smoke/iteration runs, not a production benchmark. Do not search previous runners, logs, session state, shell history, or the home directory to recover these values.
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,
}If the user supplies any dataset URI or class-count value, prefer the user value and ask for any remaining required DINO value. Do not partially mix a user's custom dataset with this profile's class count unless the user confirms it.
Do not prompt for image layout for the standard DINO dataset. The standard TAO DINO dataset artifact is images.tar.gz plus annotations.json. Use images.tar.gz in the remote image_dir spec override. The SDK downloads the archive and rewrites the runtime spec to the extracted folder named after the archive stem (images.tar.gz -> images). Only deviate if the user explicitly provides a different image artifact name.
Core Workflow
DINO supports train, evaluate, export, distill, quantize, and inference. Data-source overrides are mandatory for every action — DINO's config.json has empty data_sources because the runner cannot auto-resolve array-of-objects spec keys. The agent MUST construct data source paths and include them in spec_overrides.
See references/dino-data-specs.md for the per-action dataset requirements table, the standard dataset artifact (images.tar.gz + annotations.json) and runtime folder rewrite rules, and the complete per-action spec_overrides examples for train, evaluate, export, deploy/gen_trt_engine, inference, quantize, and distill — including checkpoint inference via parent_model, the results_dir/train/ checkpoint location, and the distillation FAN-teacher / student rules.
Important Parameters And Defaults
Key defaults: num_epochs=10, batch_size=4, learning_rate=2e-4, lr_backbone=2e-5, num_classes=91, backbone=resnet_50.
- dataset.num_classes: Default 91 (COCO). Must be >=
max(category_id) + 1. Too low causesCUDA error: device-side assert triggered. Set as<num_classes> + 1in spec overrides. - num_epochs: default 10 (quick iteration); real datasets typically need 30-50+ epochs for good mAP.
See references/dino-actions-errors.md for the full parameter list (backbone options, train.optim.lr/lr_steps, model.num_queries, batch_size), default values, evaluate defaults, export defaults (input 960x544, opset 17, TRT data types, workspace 1024 MB), and hardware requirements.
Multi-GPU And AutoML / HPO
When increasing train.num_gpus, also set train.gpu_ids to the same visible device range, or distributed startup can be inconsistent.
AutoML runs training — all Training Requirements above apply. For no-input local smoke runs, use DINO_AUTOML_PROFILE. Recommended metric is mAP50 (val_mAP for benchmark comparisons) with direction="maximize" and a custom metric_extractor.
See references/dino-tuning-multigpu.md for the full multi-GPU spec-consistency rule (8-GPU example, NCCL timeout note) and the full AutoML/HPO notes (metric selection, metric_extractor, recommended hyperparameters, weight_decay behavior, dense-dataset resume guidance). See references/dino-automl-sdk.md for AutoML metric extractor code, SDK orchestration internals, and parent-model inference mappings.
Error Patterns
Common failures include CUDA OOM (reduce batch_size), missing val_data_sources (FileNotFoundError at startup — always supply val), num_classes too low (CUDA device-side assert), and the parent dino gen_trt_engine / dino convert PyT-CLI restrictions.
See references/dino-actions-errors.md for the complete error-pattern catalog with diagnostics and fixes.
Spec Param / Parent Model Inference
Model-specific inference mappings belong in this MD file, not in config.json. Generated runners read the mappings and apply them with SDK helpers before create_job(). For parent_model/parent_model_folder, pass the upstream train/export/AutoML child job id as parent_job_id; the SDK lists the parent result folder, filters checkpoint artifacts, and returns the selected model.
See references/dino-automl-sdk.md for the full inference-mapping table (per action: parent_model, key, output_dir, ptm_if_no_resume_model, resume_model, create_onnx_file) and the TensorRT-mapping note. TensorRT mappings live in the deploy workflow, not the PyT model skill.
Optional: running via the TAO SDK
When running DINO through the TAO SDK (script_runner orchestration, S3 I/O wrapping, AutoML), skills read references/skill_info.yaml for input and spec-param mappings. See references/dino-automl-sdk.md for SDK orchestration internals, including the data-sources gap and the [0]-indexed inputs declarations. Skip this when running locally with docker run.
Deployment
- tao-deploy-dino
Evaluation Report
Evaluation of the tao-train-dino skill before publication through NVSkills-Eval.
This benchmark summarizes 3-Tier Evaluation from NVSkills-Eval results for the skill. The goal is to document whether the skill is safe, discoverable, effective, and useful for agents before it is published for broader workflow use.
Evaluation Summary
- Skill:
tao-train-dino - Evaluation date: 2026-06-22
- NVSkills-Eval profile:
external - Environment:
astra-sandbox - Dataset: 1 evaluation tasks
- Attempts per task: 1
- Pass threshold: 50%
- Overall verdict: PASS
Agents Used
claude-codecodex
Metrics Used
Reported benchmark dimensions:
- Security: checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access.
- Correctness: checks whether the agent follows the expected workflow and produces the correct final output.
- Discoverability: checks whether the agent loads the skill when relevant and avoids using it when irrelevant.
- Effectiveness: checks whether the agent performs measurably better with the skill than without it.
- Efficiency: checks whether the agent uses fewer tokens and avoids redundant work.
Underlying evaluation signals used in this run:
security(Security): checks for unsafe operations, secret leakage, and unauthorized access.skill_execution(Skill Execution): verifies that the agent loaded the expected skill and workflow.skill_efficiency(Efficiency): checks routing quality, decoy avoidance, and redundant tool usage.accuracy(Accuracy): grades final-answer correctness against the reference answer.goal_accuracy(Goal Accuracy): checks whether the overall user task completed successfully.behavior_check(Behavior Check): verifies expected behavior steps, including safety expectations.token_efficiency(Token Efficiency): compares token usage with and without the skill.
Test Tasks
The benchmark dataset contained 1 evaluation tasks:
- Positive tasks: 1 tasks where the skill was expected to activate.
- Negative tasks: 0 tasks where no skill was expected.
- Unlabeled tasks: 0 tasks where positive/negative intent could not be inferred.
Task composition is derived from the evaluation dataset when possible. Entries with expected_skill set are treated as positive skill-activation cases, while entries with expected_skill: null are treated as negative activation cases.
Results
| Dimension | Num | claude-code | codex |
|---|---|---|---|
| Security | 1 | 100% (+0%) | 100% (+0%) |
| Correctness | 1 | 100% (+60%) | 97% (+97%) |
| Discoverability | 1 | 88% (+88%) | 97% (+97%) |
| Effectiveness | 1 | 100% (+30%) | 90% (+58%) |
| Efficiency | 1 | 72% (+45%) | 96% (+68%) |
Score values show skill-assisted performance. Values in parentheses show uplift versus the no-skill baseline when baseline data is available.
Tier 1: Static Validation Summary
Tier 1 validation passed with observations. NVSkills-Eval ran 1 checks and found 5 total findings.
Top findings:
- MEDIUM SCHEMA/folder_hierarchy: Unexpected nesting depth for general skill (
skills/models/tao-train-dino) - MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (
skills/models/tao-train-dino/SKILL.md) - MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (
skills/models/tao-train-dino/SKILL.md) - LOW SCHEMA/unexpected_file: Unexpected 'schemas' in skill root (
skills/models/tao-train-dino/schemas) - LOW SCHEMA/author_format: Author must be of the form 'Name <email@host>' (
skills/models/tao-train-dino/SKILL.md)
Tier 2: Deduplication Summary
This tier was not run or did not produce findings in this report.
Publication Recommendation
The skill is suitable to proceed toward NVSkills-Eval publication based on this benchmark. Skill owners should keep this file with the skill and refresh it when the evaluation dataset, skill behavior, or target agents materially change.
[
{
"id": "tao-train-dino-basic",
"question": "A user request: \"DINO (DETR with Improved DeNoising Anchor Boxes) for 2D object detection.\" Identify which TAO skill applies and, reading only that skill's documentation, outline the steps it prescribes. Do NOT run any commands, scripts, web searches, or other tools \u2014 describe the plan only.",
"expected_skill": "tao-train-dino",
"expected_script": null,
"ground_truth": "Identify tao-train-dino as the applicable skill and summarize its documented workflow from SKILL.md without executing anything.",
"expected_behavior": [
"Identifies tao-train-dino as the relevant skill",
"Outlines the documented workflow steps from SKILL.md",
"Does not run commands, scripts, or web searches"
]
}
]
DINO Detailed Guide Map
This is a navigation file for split detailed references. Do not load every linked file by default; pick the smallest reference that matches the current task.
If a split reference conflicts with SKILL.md, skill_info.yaml, schemas, or platform/model skills, the compact/current source wins.
Reference Map
dino-data-specs.md— dataset contracts, data-source arrays, or spec override constructiondino-actions-errors.md— action defaults, hardware notes, or error patternsdino-automl-sdk.md— AutoML/HPO behavior, SDK orchestration internals, or checkpoint inference
DINO Actions And Error Patterns
Important parameters, defaults, evaluate/export defaults, hardware notes, and known error patterns.
Load this file only when the compact SKILL.md points here for the current task. If this reference conflicts with SKILL.md, skill_info.yaml, schemas, or platform/model skills, the compact/current source wins.
Contents
- Default Values
- Evaluate Defaults
- Export Defaults
- Hardware
- Error Patterns
Important Parameters
- dataset.num_classes: Number of object classes. Default is 91 (COCO). Must be >=
max(category_id) + 1. Too low causesCUDA error: device-side assert triggered. - model.backbone: Backbone architecture. Default resnet_50. Supported values include
resnet_34,resnet_50,fan_tiny,fan_small,fan_base,fan_large,gc_vit_xxtiny,gc_vit_xtiny,gc_vit_tiny,gc_vit_small,gc_vit_base,gc_vit_large,gc_vit_large_384,vit_large_nvdinov2,vit_large_dinov2,swin_tiny_224_1k,swin_base_224_22k,swin_base_384_22k,swin_large_224_22k,swin_large_384_22k, andefficientvit_b0throughefficientvit_b3. - train.optim.lr: Learning rate. Default 2e-4 (AdamW). lr_backbone defaults to 2e-5 (10x lower). Reduce both if training diverges.
- train.num_epochs: DINO typically needs 30-50+ epochs for good mAP on real datasets. The default of 10 is suitable for quick iteration.
- train.optim.lr_steps: MultiStep LR decay schedule. Default [11]. For longer training, set to e.g. [30, 40] for a 50-epoch run.
- model.num_queries: Number of object queries. Default 300. Increase for dense scenes with many objects per image. num_select must be < num_queries * num_classes.
- dataset.batch_size: Per-GPU batch size. Default 4. Reduce to 2 if OOM on 16GB GPUs. Total batch = batch_size * num_gpus.
Default Values
- num_epochs:
10 - batch_size:
4 - learning_rate:
2e-4 - lr_backbone:
2e-5 - num_classes:
91 - backbone:
resnet_50
Evaluate Defaults
Use references/spec_template_evaluate.yaml (when present) as the base spec for action="evaluate", then apply the mandatory checkpoint and data-source overrides above. references/skill_info.yaml declares the required evaluate inputs so the SDK script runner downloads and rewrites them before running the container. This model MD also documents evaluate.checkpoint = parent_model, so generated runners should infer the checkpoint from the parent job result files before submission:
{
"evaluate.checkpoint": {"type": "file"},
"dataset.test_data_sources.image_dir": {"type": "file"},
"dataset.test_data_sources.json_file": {"type": "file"}
}Export Defaults
- input_width:
960 - input_height:
544 - opset_version:
17 - trt_data_types:
[FP32, FP16, INT8] - trt_workspace_size_mb:
1024
Hardware
- Minimum: 1 GPU
- Recommended: 4 GPUs
- GPU Memory: 24GB+ (A100 recommended)
Transformer-based detection is memory-intensive. batch_size=4 fits on 24GB GPUs. For 16GB GPUs, reduce to batch_size=2. Multi-GPU with 4+ GPUs recommended for datasets > 10k images.
Error Patterns
CUDA out of memory: Reduce dataset.batch_size (4 -> 2 -> 1). DINO uses multi-scale features that consume significant GPU memory, especially with high-resolution images (default max 1333px).
*num_select must be < num_queries num_classes*: Ensure model.num_select (default 300) is less than num_queries dataset.num_classes.
Error merging spec.yaml with schema: Hydra/OmegaConf validation error. num_epochs and num_gpus must be under 'train.*', not at spec root. Use the SDK spec_shorthand_keys mapping.
Dataset size smaller than total batch size: Total batch = batch_size * num_gpus. If val dataset has fewer samples, reduce dataset.batch_size or num_gpus. The agent should proactively check this.
return_interm_indices length must match num_feature_levels: Default is [1,2,3,4] with num_feature_levels=4. If changing one, update the other.
`FileNotFoundError` on images: The archive extraction/cache and annotation paths are out of sync. For standard DINO datasets, pass remote images.tar.gz; the SDK should rewrite the runtime spec to images. If DINO looks under /mnt/lustre/.../images/<file>.jpg and files are missing, clear the stale <images.tar.gz>.extracted marker and re-extract/download the archive, or inspect the archive top-level layout.
`FileNotFoundError` at startup (val): val_data_sources missing or pointing to non-existent data. DINO unconditionally builds a val dataloader — this is required even when only optimizing train_loss.
`CUDA device-side assert`: num_classes too low. Set num_classes >= max(category_id) + 1.
S3 inputs not downloaded inside container: When the agent invokes DINO via SDK orchestration, references/skill_info.yaml must declare actions.train.inputs with [0]-indexed spec keys (see "Optional: SDK orchestration internals"). Use s3://... for S3-compatible datasets; do not generate aws://... URIs.
Evaluate checkpoint not found at result root: DINO train jobs upload checkpoints under results_dir/train/. If eval fails with FileNotFoundError for a root-level checkpoint path, resolve an actual file under s3://<bucket>/results/<train_job_id>/results_dir/train/, normally an exact model_epoch_<epoch>_step_<step>.pth file selected by the resolver.
Parent `dino gen_trt_engine` rejected by the PyT CLI: In the validated 7.0.0 PyT container, dino gen_trt_engine is not a valid parent-model subtask. Use the DINO deploy workflow (tao-deploy-dino.md) for TensorRT engine generation, TensorRT evaluation, and TensorRT inference.
`dino convert` fails before reading the spec: In the validated 7.0.0 PyT container, DINO dataset conversion fails during Hydra schema initialization because DINODatasetConvertConfig declares string fields with None defaults. Do not advertise DINO dataset conversion as a model-skill action until the SDK schema is fixed.
DINO AutoML And SDK Internals
AutoML/HPO notes, SDK orchestration internals, and parent-model inference details.
Load this file only when the compact SKILL.md points here for the current task. If this reference conflicts with SKILL.md, skill_info.yaml, schemas, or platform/model skills, the compact/current source wins.
Contents
- Optional: SDK orchestration internals
- Internal Details
- Spec Param / Parent Model Inference
AutoML / HPO Notes
AutoML runs training — all requirements from Training Requirements above apply. The agent must read that section first.
For no-input local DINO AutoML smoke runs, use DINO_AUTOML_PROFILE from Training Requirements. Do not inspect previous AutoML runs to infer dataset URIs, num_classes, recommendation count, or interval settings.
Recommended AutoML metric: use explicit metric="mAP50" with direction="maximize" and pass a custom metric_extractor that reads Validation mAP50. Do not rely on metric="kpi" for generated DINO runners unless you have verified the local resolver maps it to mAP50; loose fallback parsing can otherwise optimize val_loss.
import re
def extract_dino_map50(logs, metric_name):
matches = re.findall(
r"Validation mAP50\s*:\s*([0-9]*\.?[0-9]+(?:[eE][-+]?\d+)?)",
logs,
)
return float(matches[-1]) if matches else None
runner.run(
...,
automl_settings={"metric": "mAP50", "direction": "maximize", ...},
metric_extractor=extract_dino_map50,
)Recommended hyperparameters:
automl_hyperparameters=[
"train.optim.lr",
"train.optim.weight_decay",
"model.backbone",
"model.num_queries",
"model.dropout_ratio",
]
custom_param_ranges={
"train.optim.lr": {"valid_min": 1e-5, "valid_max": 5e-4},
"model.backbone": {
"valid_options": ["resnet_50", "resnet_34"],
"option_weights": [0.75, 0.25],
},
"model.num_queries": {"valid_min": 100, "valid_max": 900},
"model.dropout_ratio": {"valid_min": 0.0, "valid_max": 0.3},
}train.optim.weight_decay is not in the default DINO spec schema — the runner accepts it with a warning. It still works; the DINO training code picks it up from the config.
Backbone constraint for AutoML: The LLM brain may propose backbone names not in the supported list (see Important Parameters above), especially legacy names from older DINO docs. Use custom_param_ranges to constrain categorical params when possible.
Optional: SDK orchestration internals
The following details are only relevant when running DINO via the TAO SDK (script_runner orchestration, S3 I/O wrapping, AutoML). Skills consumed by the SDK read references/skill_info.yaml for these mappings. Skip this section if running locally with docker run.
Internal Details
Spec templates
DINO packages references/spec_template_<action>.yaml for the advertised parent model actions. Use those templates directly and apply the required dataset/checkpoint overrides from this file. TensorRT templates for the deploy workflow use the spec_template_deploy_*.yaml names.
Data Sources Gap
DINO's config.json has "data_sources": {} (empty). The runner's _apply_data_sources() only handles flat spec keys (like cosmos-rl's custom.train_dataset.annotation_path), but DINO's data sources are arrays of objects (dataset.train_data_sources[{image_dir, json_file}]). The tao-core microservices config (tao-core/nvidia_tao_core/microservices/handlers/network_configs/dino.config.json) has the full mapping using a mapping sub-structure, but the runner doesn't support that format.
Consequence: The runner cannot auto-resolve data URIs for DINO. Data paths MUST be set manually via spec_overrides (see Training Requirements above). The skill's config.json instead declares inputs in the train action with [0]-indexed spec keys so the SDK's script_runner downloads S3 data at runtime:
"inputs": {
"dataset.train_data_sources[0].image_dir": {"type": "file"},
"dataset.train_data_sources[0].json_file": {"type": "file"},
"dataset.val_data_sources[0].image_dir": {"type": "file"},
"dataset.val_data_sources[0].json_file": {"type": "file"}
}The skill also declares evaluate inputs so generated eval runners do not need to patch script_runner by hand:
"inputs": {
"evaluate.checkpoint": {"type": "file"},
"dataset.test_data_sources.image_dir": {"type": "file"},
"dataset.test_data_sources.json_file": {"type": "file"}
}This model MD is the source of truth for DINO checkpoint inference:
checkpoint format: pth
checkpoint files: results_dir/train/model_epoch_<epoch>_step_<step>.pth
latest alias: results_dir/train/dino_model_latest.pth
evaluate.checkpoint: parent_model
export.checkpoint: parent_model
inference.checkpoint: parent_model
quantize.model_path: parent_model
distill.pretrained_teacher_model_path: parent_modelAll model-specific metadata (dataset type, formats, metrics, required datasets) is documented in the Training Requirements section above.
Current behavior: Provide DINO data-source paths explicitly until the launcher advertises first-class support for the tao-core mapping sub-structure. Do not rely on automatic data-source mapping for DINO.
Spec Param / Parent Model Inference
Model-specific inference mappings belong in this MD file, not in config.json. Generated runners should read this section and apply the mappings with SDK helpers before create_job(). This mirrors the old microservices infer_params.py flow.
Inference mappings from TAO Core dino.config.json:
| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| distill | distill.pretrained_teacher_model_path | parent_model | model file inferred from the parent job results folder |
| distill | encryption_key | key | encryption key |
| distill | results_dir | output_dir | current job results directory |
| evaluate | encryption_key | key | encryption key |
| evaluate | evaluate.checkpoint | parent_model | model file inferred from the parent job results folder |
| evaluate | results_dir | output_dir | current job results directory |
| export | encryption_key | key | encryption key |
| export | export.checkpoint | parent_model | model file inferred from the parent job results folder |
| export | export.onnx_file | create_onnx_file | output ONNX path |
| export | results_dir | output_dir | current job results directory |
| inference | encryption_key | key | encryption key |
| inference | inference.checkpoint | parent_model | model file inferred from the parent job results folder |
| inference | results_dir | output_dir | current job results directory |
| quantize | encryption_key | key | encryption key |
| quantize | quantize.model_path | parent_model | model file inferred from the parent job results folder |
| quantize | results_dir | output_dir | current job results directory |
| train | encryption_key | key | encryption key |
| train | model.pretrained_backbone_path | ptm_if_no_resume_model | PTM when no resume checkpoint exists |
| train | results_dir | output_dir | current job results directory |
| train | train.pretrained_model_path | ptm_if_no_resume_model | PTM when no resume checkpoint exists |
| train | train.resume_training_checkpoint_path | resume_model | model file inferred from the current job results folder |
For parent_model or parent_model_folder, pass the upstream train/export/AutoML child job id as parent_job_id. 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 config.json and do not patch generated runner scripts to guess checkpoint paths.
TensorRT mappings (gen_trt_engine.onnx_file, evaluate.trt_engine, and inference.trt_engine) live in deploy/skill_info.yaml because TensorRT runs through the DINO deploy workflow, not the PyT model skill.
DINO Data And Specs
Dataset contracts, per-action data requirements, spec override examples, and dataset layout details from the pre-refactor guide.
Load this file only when the compact SKILL.md points here for the current task. If this reference conflicts with SKILL.md, skill_info.yaml, schemas, or platform/model skills, the compact/current source wins.
Contents
- DINO
- Dataclass Schemas
- Train Action Policy
- Training Requirements
- Per-Action Dataset Requirements
- Typical Spec Overrides
- Standard DINO dataset artifact. Pass the archive path as the remote input.
- At runtime the SDK extracts it and points DINO at the extracted "images" folder.
- Dataset
- Train Data Sources
- Val Data Sources (ALWAYS required)
- Inference Data Sources
- Evaluate Data Sources
DINO Detailed Guide
Preserves the detailed model guide from release/7.0.1. Read this when the compact SKILL.md does not contain enough detail for action-specific spec overrides, data-source arrays, checkpoint inference, AutoML metric extraction, or SDK orchestration internals. If this reference conflicts with the compact SKILL.md, packaged metadata, or platform skills, the compact/current source wins.
Contents
- Original workflow and operating rules
- Detailed command snippets and examples
- Error handling and troubleshooting notes
- Reporting, handoff, and validation details
DINO
DINO (DETR with Improved DeNoising Anchor Boxes) for 2D object detection. Transformer-based detector with denoising training, multi-scale features, and optional distillation support.
Uses pretrained backbone weights (e.g. ResNet-50 ImageNet). Set model.pretrained_backbone_path for backbone-only or train.pretrained_model_path for full model.
For TAO Deploy TensorRT actions (gen_trt_engine, TensorRT evaluate, and TensorRT inference), read tao-deploy-dino.md first. Deploy spec templates live in this skill's references/ folder with the spec_template_deploy_*.yaml prefix.
Dataclass Schemas
Generated TAO Core schemas are packaged in schemas/<action>.schema.json, with schemas/manifest.json listing available actions. Each generated schema also emits references/spec_template_<action>.yaml from the schema top-level default field. AutoML enablement is declared at the model layer in references/skill_info.yaml via automl_enabled. Runnable AutoML still requires schemas/train.schema.json and references/spec_template_train.yaml to exist and parse. Use the packaged train schema for automl_default_parameters, automl_disabled_parameters, defaults, min/max bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect ~/tao-core at runtime; maintainers regenerate schemas/templates before packaging the skill bank.
Train Action Policy
This model is AutoML-enabled at the model layer. Before handling any train-stage request, read references/skill_info.yaml and resolve the run override from either an explicit automl_policy value or the user's workflow request. Use automl_policy: on by default and only expose on / off in new launch prompts. Treat phrases like "turn off AutoML", "disable AutoML", "no HPO", or "plain training" as automl_policy: off for this run only. When automl_policy: on, automl_enabled: true, and both schemas/train.schema.json and references/spec_template_train.yaml are packaged, route the train action through tao-skill-bank:tao-run-automl by default with this model's skill_dir. Preserve workflow/application overrides for datasets, specs, output directories, GPU/platform settings, parent checkpoints, and automl_policy. Use direct model training only when automl_policy: off 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.
Non-train actions such as evaluate, inference, export, and deploy flows stay in this model skill. The per-run automl_policy override does not change model metadata.
Training Requirements
The agent MUST read this section before generating any training or AutoML script for DINO.
- Dataset type: object_detection
- Formats: coco, coco_raw
- Accepted dataset intents: training, evaluation, testing, calibration
- Monitoring metric: mAP50
Required datasets — MUST resolve both:
| Dataset | Required | Why |
|---|---|---|
| Train dataset URI | Yes | Training data (COCO format) |
| Validation dataset URI | Yes — ALWAYS | DINO unconditionally builds a val dataloader. Omitting val_data_sources causes FileNotFoundError at startup regardless of the metric or workflow. If the user has no separate eval split, reuse the train URI. |
Required inputs before generating any training spec:
1. Train dataset URI — S3 path to COCO-format training data 2. Validation dataset URI — S3 path to COCO-format val data (can be same as train) 3. `num_classes` — How many object classes? Default 91 (COCO). Must be >= max(category_id) + 1. Too low causes CUDA error: device-side assert triggered.
Resolve these from the user request or the default profile below. Prompt only for values that are still missing after applying the profile rules.
Bankable local default profile for DINO AutoML smoke runs:
Use this profile only when the user asks to run DINO AutoML and does not provide dataset or class-count inputs. This profile is intentionally small and local to this skill bank; it is for smoke/iteration runs, not a production benchmark. Do not search previous runners, logs, session state, shell history, or the home directory to recover these values.
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,
}If the user supplies any dataset URI or class-count value, prefer the user value and ask for any remaining required DINO value. Do not partially mix a user's custom dataset with this profile's class count unless the user confirms it.
Do not prompt for image layout for the standard DINO dataset. The standard TAO DINO dataset artifact is images.tar.gz plus annotations.json. Use images.tar.gz in the remote image_dir spec override. The SDK downloads the archive and rewrites the runtime spec to the extracted folder named after the archive stem (images.tar.gz -> images). Only deviate if the user explicitly provides a different image artifact name.
Per-Action Dataset Requirements
| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| distill | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| distill | dataset.val_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations.json | Yes |
| evaluate | evaluate.checkpoint | trained_model | DINO .pth/.tlt checkpoint | No |
| 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 |
| deploy/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 — DINO's config.json has empty data_sources because the runner cannot auto-resolve array-of-objects spec keys (see Internal Details). The agent MUST construct data source paths from the Per-Action Dataset Requirements table above and include them in spec_overrides.
S3_TRAIN = "s3://bucket/data/train"
S3_VAL = "s3://bucket/data/val" # can be same as S3_TRAIN
S3_EVAL = "s3://bucket/data/eval" # for evaluate/inference
# Standard DINO dataset artifact. Pass the archive path as the remote input.
# At runtime the SDK extracts it and points DINO at the extracted "images" folder.
IMAGE_ARCHIVE = "images.tar.gz"train (mandatory):
{
"dataset.train_data_sources": [
{"image_dir": f"{S3_TRAIN}/{IMAGE_ARCHIVE}", "json_file": f"{S3_TRAIN}/annotations.json"}
],
"dataset.val_data_sources": [
{"image_dir": f"{S3_VAL}/{IMAGE_ARCHIVE}", "json_file": f"{S3_VAL}/annotations.json"}
],
"dataset.num_classes": "<num_classes> + 1",
"train.num_epochs": 10,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
}evaluate (mandatory checkpoint + data sources):
{
"evaluate.checkpoint": "<checkpoint_uri>",
"dataset.test_data_sources.image_dir": f"{S3_EVAL}/{IMAGE_ARCHIVE}",
"dataset.test_data_sources.json_file": f"{S3_EVAL}/annotations.json",
"dataset.num_classes": "<num_classes> + 1",
"model.backbone": "<backbone used for training>",
"model.num_queries": "<num_queries used for training>",
"model.dropout_ratio": "<dropout_ratio used for training>",
}For standard DINO eval datasets, do not search S3 to discover filenames. Build the eval image and annotation URIs directly from the eval dataset base URI using images.tar.gz and annotations.json, unless the user explicitly provides a different layout.
For a DINO model trained by this SDK or by an AutoML child train job, prefer microservices-style parent model inference instead of hardcoding the checkpoint URI. Use this model-MD inference mapping:
"spec_params": {
"evaluate": {
"evaluate.checkpoint": "parent_model"
}
}Use the train job id, or the AutoML best child train job id, as parent_job_id. The SDK will list the parent result folder, filter .pth checkpoints, and select the model file:
checkpoint_uri = sdk.resolve_spec_param(
eval_job_id,
"parent_model",
network_arch="dino",
parent_job_id=train_job_id,
)Equivalently, when resolving the checkpoint outside a spec-param loop:
checkpoint_uri = sdk.get_model_results_path(train_job_id, network_arch="dino")If cloud listing is unavailable but only the training job id is known, list the training job result folder and choose the intended epoch/step checkpoint under:
checkpoint_prefix = f"s3://{S3_BUCKET_NAME}/results/{train_job_id}/results_dir/train/"Do not use s3://<bucket>/results/<train_job_id>/dino_model_latest.pth; DINO training uploads checkpoints under results_dir/train/. The dino_model_latest.pth symlink under that folder is valid only when latest is explicitly requested.
When evaluating an AutoML-trained model, carry forward the winning rec's structural model settings into the eval spec. At minimum copy model.backbone, model.num_queries, model.dropout_ratio, and dataset.num_classes. If future HPO runs tune additional structural model fields, copy those too so the checkpoint shape matches the evaluation model.
export:
{
"export.checkpoint": "<checkpoint_uri>",
"export.onnx_file": "<output_onnx_path>",
"dataset.num_classes": "<num_classes> + 1",
}deploy/gen_trt_engine (use `tao-deploy-dino.md`):
{
"gen_trt_engine.onnx_file": "<exported_onnx_uri>",
"gen_trt_engine.trt_engine": "<output_engine_path>",
"gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}/{IMAGE_ARCHIVE}"],
"gen_trt_engine.tensorrt.data_type": "FP16",
"dataset.num_classes": "<num_classes> + 1",
}For deploy TensorRT evaluation, also read tao-deploy-dino.md; the deploy metric path expects at least 100 selected detections per image.
inference (mandatory data sources):
{
"dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/{IMAGE_ARCHIVE}"],
"dataset.infer_data_sources.classmap": f"{S3_EVAL}/label_map.txt",
"dataset.num_classes": "<num_classes> + 1",
}quantize (mandatory data sources):
{
"dataset.train_data_sources": [
{"image_dir": f"{S3_TRAIN}/{IMAGE_ARCHIVE}", "json_file": f"{S3_TRAIN}/annotations.json"}
],
"dataset.val_data_sources": [
{"image_dir": f"{S3_VAL}/{IMAGE_ARCHIVE}", "json_file": f"{S3_VAL}/annotations.json"}
],
"dataset.quant_calibration_data_sources": {
"image_dir": f"{S3_TRAIN}/{IMAGE_ARCHIVE}", "json_file": f"{S3_TRAIN}/annotations.json"
},
"dataset.num_classes": "<num_classes> + 1",
}distill (mandatory data sources):
{
"distill.pretrained_teacher_model_path": "<fan_teacher_checkpoint_uri>",
"distill.teacher.backbone": "fan_tiny",
"distill.bindings": [
{"student_module_name": "pred_logits", "teacher_module_name": "pred_logits", "criterion": "L2", "weight": 1.0},
{"student_module_name": "pred_boxes", "teacher_module_name": "pred_boxes", "criterion": "L1", "weight": 1.0},
],
"dataset.train_data_sources": [
{"image_dir": f"{S3_TRAIN}/{IMAGE_ARCHIVE}", "json_file": f"{S3_TRAIN}/annotations.json"}
],
"dataset.val_data_sources": [
{"image_dir": f"{S3_VAL}/{IMAGE_ARCHIVE}", "json_file": f"{S3_VAL}/annotations.json"}
],
"dataset.num_classes": "<num_classes> + 1",
}DINO distillation uses a FAN-family teacher (fan_tiny, fan_small, fan_base, or fan_large) and a supported student such as resnet_50. The teacher checkpoint must match the teacher architecture. Do not point distill.pretrained_teacher_model_path at a ResNet training checkpoint unless distill.teacher.backbone is also a compatible ResNet teacher in a future SDK.
Dataset
COCO JSON format. train_data_sources and val_data_sources are lists supporting multiple data source entries. Each entry has image_dir and json_file (COCO annotations JSON).
`image_dir` remote path: For the standard TAO DINO dataset, set image_dir to the archive path, e.g. s3://bucket/data/images.tar.gz. The SDK downloads and extracts it, then rewrites the runtime training spec to the extracted folder path, e.g. /mnt/lustre/.../images.
Do not ask the user whether to use images or images.tar.gz for standard DINO datasets. Use images.tar.gz. If the user explicitly supplies a different archive filename, derive the runtime folder from the archive stem: <name>.tar.gz -> <name>, <name>.tgz -> <name>, <name>.tar -> <name>.
Supported formats: coco, coco_raw.
Train Data Sources
- image_dir:
images.tar.gzremote archive; runtime folder isimages - json_file:
annotations.json
Val Data Sources (ALWAYS required)
- image_dir:
images.tar.gzremote archive; runtime folder isimages - json_file:
annotations.json
Inference Data Sources
- image_dir:
images.tar.gzremote archive; runtime folder isimages - classmap:
label_map.txt
Evaluate Data Sources
- checkpoint:
evaluate.checkpoint, a.pthor.tltmodel file. For SDK
train jobs and AutoML child train jobs, resolve it with parent_model inference so the SDK lists the result folder and selects an actual checkpoint file. Prefer concrete epoch/step files such as results_dir/train/model_epoch_000_step_00025.pth. Use dino_model_latest.pth only when the user explicitly requests the latest checkpoint; it is a symlink alias and should not replace best/specific checkpoint resolution.
- image_dir:
images.tar.gzremote archive; runtime folder isimages - json_file:
annotations.json
DINO Tuning And Multi-GPU Notes
Full AutoML/HPO guidance and multi-GPU spec consistency rules. Load this file only when the compact SKILL.md points here for the current task. If this reference conflicts with SKILL.md, skill_info.yaml, schemas, or platform/model skills, the compact/current source wins.
Multi-GPU Spec Consistency
When increasing train.num_gpus, also set train.gpu_ids to the same visible device range. For example, an 8-GPU single-node Slurm run must include both "train.num_gpus": 8 and "train.gpu_ids": [0, 1, 2, 3, 4, 5, 6, 7]. Leaving the template default train.gpu_ids: [0] while requesting multiple GPUs can make distributed startup inconsistent and can surface as NCCL collective timeouts instead of an immediate validation error.
AutoML / HPO Notes
AutoML runs training — all requirements from Training Requirements above apply. The agent must read that section first.
For no-input local DINO AutoML smoke runs, use DINO_AUTOML_PROFILE from Training Requirements. Do not inspect previous AutoML runs to infer dataset URIs, num_classes, recommendation count, or interval settings.
Recommended AutoML metric: for quick operational checks, use explicit metric="mAP50" with direction="maximize" and pass a custom metric_extractor that reads Validation mAP50. For COCO or paper-style benchmark comparisons, use metric="val_mAP" with direction="maximize" so the reported number matches the standard mAP column rather than AP50. Do not rely on metric="kpi" for generated DINO runners unless you have verified the local resolver maps it to the intended detection metric; loose fallback parsing can otherwise optimize val_loss.
Use a metric_extractor that reads the last Validation mAP50 value from the logs, then run AutoML with automl_settings={"metric": "mAP50", "direction": "maximize", ...}.
When a benchmark run remains below target but the per-epoch val_mAP curve is still climbing at the final epoch, extend the best full-budget configuration before declaring the search plateaued. For dense datasets such as aerial or driving-scene detection, also preserve high-resolution input overrides and structural settings (model.backbone, model.num_queries, model.num_select, class metadata) when evaluating or resuming the checkpoint.
Recommended hyperparameters:
Suggested knobs: train.optim.lr, train.optim.weight_decay, model.backbone, model.num_queries, and model.dropout_ratio. Constrain model.backbone to supported names such as resnet_50 and resnet_34; the LLM brain may otherwise propose legacy or invalid DINO backbone names.
train.optim.weight_decay is not in the default DINO spec schema — the runner accepts it with a warning. It still works; the DINO training code picks it up from the config.
All model-specific metadata is documented in the Training Requirements table and references/skill_info.yaml. DINO data-source arrays are not auto-resolved from TAO Core metadata; provide dataset paths explicitly in the spec overrides.
name: tao-train-dino
network_arch: dino
automl_enabled: true
container_image: tao_toolkit.pyt
data_format: coco
gpu_spec_key: train.num_gpus
actions:
train:
command: dino train -e {config_path}
config_format: yaml
mode: config
inputs:
dataset.train_data_sources[0].image_dir:
type: file
dataset.train_data_sources[0].json_file:
type: file
dataset.val_data_sources[0].image_dir:
type: file
dataset.val_data_sources[0].json_file:
type: file
model.pretrained_backbone_path:
type: file
optional: true
train.pretrained_model_path:
type: file
optional: true
train.resume_training_checkpoint_path:
type: file
optional: true
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
distill:
command: dino distill -e {config_path}
config_format: yaml
mode: config
inputs:
distill.pretrained_teacher_model_path:
type: file
dataset.train_data_sources[0].image_dir:
type: file
dataset.train_data_sources[0].json_file:
type: file
dataset.val_data_sources[0].image_dir:
type: file
dataset.val_data_sources[0].json_file:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
quantize:
command: dino quantize -e {config_path}
config_format: yaml
mode: config
inputs:
quantize.model_path:
type: file
dataset.train_data_sources[0].image_dir:
type: file
dataset.train_data_sources[0].json_file:
type: file
dataset.val_data_sources[0].image_dir:
type: file
dataset.val_data_sources[0].json_file:
type: file
dataset.quant_calibration_data_sources.image_dir:
type: file
dataset.quant_calibration_data_sources.json_file:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
evaluate:
command: dino evaluate -e {config_path}
config_format: yaml
mode: config
inputs:
evaluate.checkpoint:
type: file
dataset.test_data_sources.image_dir:
type: file
dataset.test_data_sources.json_file:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
export:
command: dino export -e {config_path}
config_format: yaml
mode: config
inputs:
export.checkpoint:
type: file
outputs:
results_dir:
type: folder
export.onnx_file:
type: file
upload_excludes:
- inputs/
inference:
command: dino inference -e {config_path}
config_format: yaml
mode: config
inputs:
inference.checkpoint:
type: file
dataset.infer_data_sources.image_dir:
type: file
dataset.infer_data_sources.classmap:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
data_sources: {}
spec_params:
train:
encryption_key: key
model.pretrained_backbone_path: ptm_if_no_resume_model
results_dir: output_dir
train.pretrained_model_path: ptm_if_no_resume_model
train.resume_training_checkpoint_path: resume_model
distill:
encryption_key: key
distill.pretrained_teacher_model_path: parent_model
results_dir: output_dir
evaluate:
encryption_key: key
evaluate.checkpoint: parent_model
results_dir: output_dir
export:
encryption_key: key
export.checkpoint: parent_model
export.onnx_file: create_onnx_file
results_dir: output_dir
inference:
encryption_key: key
inference.checkpoint: parent_model
results_dir: output_dir
quantize:
encryption_key: key
quantize.model_path: parent_model
results_dir: output_dir
key_defaults: {}
spec_shorthand_keys:
num_epochs: train.num_epochs
batch_size: dataset.batch_size
learning_rate: train.optim.lr
description: DINO (DETR with Improved DeNoising Anchor Boxes) for 2D object detection. Transformer-based detector with denoising
training, multi-scale features, and optional distillation support.
encryption_key: "tlt_encode"
results_dir: "/results"
dataset:
test_data_sources:
image_dir: "/data/eval/images"
json_file: "/data/eval/annotations.json"
num_classes: 91
batch_size: 1
workers: 8
eval_class_ids: [1]
augmentation:
input_mean: [0.485, 0.456, 0.406]
input_std: [0.229, 0.224, 0.225]
evaluate:
trt_engine: "/results/dino.engine"
conf_threshold: 0.0
input_width: 960
input_height: 544
model:
backbone: resnet_50
num_feature_levels: 4
dec_layers: 6
enc_layers: 6
num_queries: 300
num_select: 300
dropout_ratio: 0.0
dim_feedforward: 2048
encryption_key: "tlt_encode"
results_dir: "/results"
dataset:
num_classes: 91
batch_size: 1
augmentation:
input_mean: [0.485, 0.456, 0.406]
input_std: [0.229, 0.224, 0.225]
model:
backbone: resnet_50
num_feature_levels: 4
dec_layers: 6
enc_layers: 6
num_queries: 300
num_select: 300
dropout_ratio: 0.0
dim_feedforward: 2048
gen_trt_engine:
gpu_id: 0
onnx_file: "/models/model.onnx"
trt_engine: "/results/dino.engine"
batch_size: -1
tensorrt:
data_type: FP16
workspace_size: 1024
min_batch_size: 1
opt_batch_size: 1
max_batch_size: 8
calibration:
cal_image_dir: []
cal_cache_file: "/results/dino_calibration.cache"
cal_batch_size: 1
cal_batches: 1
encryption_key: "tlt_encode"
results_dir: "/results"
dataset:
infer_data_sources:
image_dir:
- "/data/infer/images"
classmap: "/data/infer/label_map.txt"
num_classes: 91
batch_size: 1
workers: 8
augmentation:
input_mean: [0.485, 0.456, 0.406]
input_std: [0.229, 0.224, 0.225]
inference:
trt_engine: "/results/dino.engine"
conf_threshold: 0.5
input_width: 960
input_height: 544
color_map: {}
model:
backbone: resnet_50
num_feature_levels: 4
dec_layers: 6
enc_layers: 6
num_queries: 300
num_select: 300
dropout_ratio: 0.0
dim_feedforward: 2048
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
pretrained_backbone_path: ''
backbone: resnet_50
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
dataset:
train_sampler: default_sampler
train_data_sources:
- image_dir: ''
json_file: ''
val_data_sources:
- image_dir: ''
json_file: ''
test_data_sources:
image_dir: ''
json_file: ''
infer_data_sources:
image_dir:
- ''
classmap: ''
quant_calibration_data_sources:
image_dir: ''
json_file: ''
batch_size: 4
workers: 8
pin_memory: true
dataset_type: serialized
num_classes: 91
eval_class_ids:
- 1
augmentation:
scales:
- 480
- 512
- 544
- 576
- 608
- 640
- 672
- 704
- 736
- 768
- 800
input_mean:
- 0.485
- 0.456
- 0.406
input_std:
- 0.229
- 0.224
- 0.225
train_random_resize:
- 400
- 500
- 600
horizontal_flip_prob: 0.5
train_random_crop_min: 384
train_random_crop_max: 600
random_resize_max_size: 1333
test_random_resize: 800
fixed_padding: true
fixed_random_crop: 1024
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
freeze: []
pretrained_model_path: ''
clip_grad_norm: 0.1
is_dry_run: false
conf_threshold: 0.0
optim:
optimizer: AdamW
monitor_name: val_loss
lr: 0.0002
lr_backbone: 2.0e-05
lr_linear_proj_mult: 0.1
momentum: 0.9
weight_decay: 0.0001
lr_scheduler: MultiStep
lr_steps:
- 11
lr_step_size: 11
lr_decay: 0.1
layer_decay_rate: 0.65
precision: fp32
distributed_strategy: ddp
activation_checkpoint: true
distill:
teacher:
pretrained_backbone_path: ''
backbone: fan_tiny
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
pretrained_teacher_model_path: ???
bindings:
- student_module_name: pred_logits
teacher_module_name: pred_logits
criterion: L2
weight: 1.0
- student_module_name: pred_boxes
teacher_module_name: pred_boxes
criterion: L1
weight: 1.0
results_dir: ''
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
pretrained_backbone_path: ''
backbone: resnet_50
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
dataset:
train_sampler: default_sampler
train_data_sources:
- image_dir: ''
json_file: ''
val_data_sources:
- image_dir: ''
json_file: ''
test_data_sources:
image_dir: ''
json_file: ''
infer_data_sources:
image_dir:
- ''
classmap: ''
quant_calibration_data_sources:
image_dir: ''
json_file: ''
batch_size: 4
workers: 8
pin_memory: true
dataset_type: serialized
num_classes: 91
eval_class_ids:
- 1
augmentation:
scales:
- 480
- 512
- 544
- 576
- 608
- 640
- 672
- 704
- 736
- 768
- 800
input_mean:
- 0.485
- 0.456
- 0.406
input_std:
- 0.229
- 0.224
- 0.225
train_random_resize:
- 400
- 500
- 600
horizontal_flip_prob: 0.5
train_random_crop_min: 384
train_random_crop_max: 600
random_resize_max_size: 1333
test_random_resize: 800
fixed_padding: true
fixed_random_crop: 1024
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
freeze: []
pretrained_model_path: ''
clip_grad_norm: 0.1
is_dry_run: false
conf_threshold: 0.0
optim:
optimizer: AdamW
monitor_name: val_loss
lr: 0.0002
lr_backbone: 2.0e-05
lr_linear_proj_mult: 0.1
momentum: 0.9
weight_decay: 0.0001
lr_scheduler: MultiStep
lr_steps:
- 11
lr_step_size: 11
lr_decay: 0.1
layer_decay_rate: 0.65
precision: fp32
distributed_strategy: ddp
activation_checkpoint: true
evaluate:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
checkpoint: ???
trt_engine: ''
results_dir: ''
batch_size: -1
conf_threshold: 0.0
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
pretrained_backbone_path: ''
backbone: resnet_50
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
dataset:
train_sampler: default_sampler
train_data_sources:
- image_dir: ''
json_file: ''
val_data_sources:
- image_dir: ''
json_file: ''
test_data_sources:
image_dir: ''
json_file: ''
infer_data_sources:
image_dir:
- ''
classmap: ''
quant_calibration_data_sources:
image_dir: ''
json_file: ''
batch_size: 4
workers: 8
pin_memory: true
dataset_type: serialized
num_classes: 91
eval_class_ids:
- 1
augmentation:
scales:
- 480
- 512
- 544
- 576
- 608
- 640
- 672
- 704
- 736
- 768
- 800
input_mean:
- 0.485
- 0.456
- 0.406
input_std:
- 0.229
- 0.224
- 0.225
train_random_resize:
- 400
- 500
- 600
horizontal_flip_prob: 0.5
train_random_crop_min: 384
train_random_crop_max: 600
random_resize_max_size: 1333
test_random_resize: 800
fixed_padding: true
fixed_random_crop: 1024
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
freeze: []
pretrained_model_path: ''
clip_grad_norm: 0.1
is_dry_run: false
conf_threshold: 0.0
optim:
optimizer: AdamW
monitor_name: val_loss
lr: 0.0002
lr_backbone: 2.0e-05
lr_linear_proj_mult: 0.1
momentum: 0.9
weight_decay: 0.0001
lr_scheduler: MultiStep
lr_steps:
- 11
lr_step_size: 11
lr_decay: 0.1
layer_decay_rate: 0.65
precision: fp32
distributed_strategy: ddp
activation_checkpoint: true
export:
results_dir: ''
gpu_id: 0
checkpoint: ???
onnx_file: ???
on_cpu: false
input_channel: 3
input_width: 960
input_height: 544
opset_version: 17
batch_size: -1
verbose: false
format: onnx
serialize_nvdsinfer: false
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
pretrained_backbone_path: ''
backbone: resnet_50
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
dataset:
train_sampler: default_sampler
train_data_sources:
- image_dir: ''
json_file: ''
val_data_sources:
- image_dir: ''
json_file: ''
test_data_sources:
image_dir: ''
json_file: ''
infer_data_sources:
image_dir:
- ''
classmap: ''
quant_calibration_data_sources:
image_dir: ''
json_file: ''
batch_size: 4
workers: 8
pin_memory: true
dataset_type: serialized
num_classes: 91
eval_class_ids:
- 1
augmentation:
scales:
- 480
- 512
- 544
- 576
- 608
- 640
- 672
- 704
- 736
- 768
- 800
input_mean:
- 0.485
- 0.456
- 0.406
input_std:
- 0.229
- 0.224
- 0.225
train_random_resize:
- 400
- 500
- 600
horizontal_flip_prob: 0.5
train_random_crop_min: 384
train_random_crop_max: 600
random_resize_max_size: 1333
test_random_resize: 800
fixed_padding: true
fixed_random_crop: 1024
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
freeze: []
pretrained_model_path: ''
clip_grad_norm: 0.1
is_dry_run: false
conf_threshold: 0.0
optim:
optimizer: AdamW
monitor_name: val_loss
lr: 0.0002
lr_backbone: 2.0e-05
lr_linear_proj_mult: 0.1
momentum: 0.9
weight_decay: 0.0001
lr_scheduler: MultiStep
lr_steps:
- 11
lr_step_size: 11
lr_decay: 0.1
layer_decay_rate: 0.65
precision: fp32
distributed_strategy: ddp
activation_checkpoint: true
gen_trt_engine:
results_dir: ''
gpu_id: 0
onnx_file: ???
trt_engine: ???
timing_cache: ''
batch_size: -1
verbose: false
tensorrt:
workspace_size: 1024
min_batch_size: 1
opt_batch_size: 1
max_batch_size: 1
layers_precision: []
data_type: FP32
calibration:
cal_image_dir: ???
cal_cache_file: ???
cal_batch_size: 1
cal_batches: 1
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
pretrained_backbone_path: ''
backbone: resnet_50
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
dataset:
train_sampler: default_sampler
train_data_sources:
- image_dir: ''
json_file: ''
val_data_sources:
- image_dir: ''
json_file: ''
test_data_sources:
image_dir: ''
json_file: ''
infer_data_sources:
image_dir:
- ''
classmap: ''
quant_calibration_data_sources:
image_dir: ''
json_file: ''
batch_size: 4
workers: 8
pin_memory: true
dataset_type: serialized
num_classes: 91
eval_class_ids:
- 1
augmentation:
scales:
- 480
- 512
- 544
- 576
- 608
- 640
- 672
- 704
- 736
- 768
- 800
input_mean:
- 0.485
- 0.456
- 0.406
input_std:
- 0.229
- 0.224
- 0.225
train_random_resize:
- 400
- 500
- 600
horizontal_flip_prob: 0.5
train_random_crop_min: 384
train_random_crop_max: 600
random_resize_max_size: 1333
test_random_resize: 800
fixed_padding: true
fixed_random_crop: 1024
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
freeze: []
pretrained_model_path: ''
clip_grad_norm: 0.1
is_dry_run: false
conf_threshold: 0.0
optim:
optimizer: AdamW
monitor_name: val_loss
lr: 0.0002
lr_backbone: 2.0e-05
lr_linear_proj_mult: 0.1
momentum: 0.9
weight_decay: 0.0001
lr_scheduler: MultiStep
lr_steps:
- 11
lr_step_size: 11
lr_decay: 0.1
layer_decay_rate: 0.65
precision: fp32
distributed_strategy: ddp
activation_checkpoint: true
inference:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
checkpoint: ???
trt_engine: ''
results_dir: ''
batch_size: -1
conf_threshold: 0.5
is_internal: false
input_width: 640
input_height: 640
outline_width: 3
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
pretrained_backbone_path: ''
backbone: resnet_50
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
dataset:
train_sampler: default_sampler
train_data_sources:
- image_dir: ''
json_file: ''
val_data_sources:
- image_dir: ''
json_file: ''
test_data_sources:
image_dir: ''
json_file: ''
infer_data_sources:
image_dir:
- ''
classmap: ''
quant_calibration_data_sources:
image_dir: ''
json_file: ''
batch_size: 4
workers: 8
pin_memory: true
dataset_type: serialized
num_classes: 91
eval_class_ids:
- 1
augmentation:
scales:
- 480
- 512
- 544
- 576
- 608
- 640
- 672
- 704
- 736
- 768
- 800
input_mean:
- 0.485
- 0.456
- 0.406
input_std:
- 0.229
- 0.224
- 0.225
train_random_resize:
- 400
- 500
- 600
horizontal_flip_prob: 0.5
train_random_crop_min: 384
train_random_crop_max: 600
random_resize_max_size: 1333
test_random_resize: 800
fixed_padding: true
fixed_random_crop: 1024
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
freeze: []
pretrained_model_path: ''
clip_grad_norm: 0.1
is_dry_run: false
conf_threshold: 0.0
optim:
optimizer: AdamW
monitor_name: val_loss
lr: 0.0002
lr_backbone: 2.0e-05
lr_linear_proj_mult: 0.1
momentum: 0.9
weight_decay: 0.0001
lr_scheduler: MultiStep
lr_steps:
- 11
lr_step_size: 11
lr_decay: 0.1
layer_decay_rate: 0.65
precision: fp32
distributed_strategy: ddp
activation_checkpoint: true
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
pretrained_backbone_path: ''
backbone: resnet_50
num_queries: 300
num_feature_levels: 4
cls_loss_coef: 2.0
bbox_loss_coef: 5.0
giou_loss_coef: 2.0
num_select: 300
interm_loss_coef: 1.0
no_interm_box_loss: false
pre_norm: false
two_stage_type: standard
decoder_sa_type: sa
embed_init_tgt: true
fix_refpoints_hw: -1
pe_temperatureH: 20
pe_temperatureW: 20
return_interm_indices:
- 1
- 2
- 3
- 4
use_dn: true
dn_number: 100
dn_box_noise_scale: 1.0
dn_label_noise_ratio: 0.5
focal_alpha: 0.25
clip_max_norm: 0.1
nheads: 8
dropout_ratio: 0.0
hidden_dim: 256
enc_layers: 6
dec_layers: 6
dim_feedforward: 2048
dec_n_points: 4
enc_n_points: 4
aux_loss: true
dilation: false
train_backbone: true
loss_types:
- labels
- boxes
backbone_names:
- backbone.0
linear_proj_names:
- reference_points
- sampling_offsets
distillation_loss_coef: 1.0
dataset:
train_sampler: default_sampler
train_data_sources:
- image_dir: ''
json_file: ''
val_data_sources:
- image_dir: ''
json_file: ''
test_data_sources:
image_dir: ''
json_file: ''
infer_data_sources:
image_dir:
- ''
classmap: ''
quant_calibration_data_sources:
image_dir: ''
json_file: ''
batch_size: 4
workers: 8
pin_memory: true
dataset_type: serialized
num_classes: 91
eval_class_ids:
- 1
augmentation:
scales:
- 480
- 512
- 544
- 576
- 608
- 640
- 672
- 704
- 736
- 768
- 800
input_mean:
- 0.485
- 0.456
- 0.406
input_std:
- 0.229
- 0.224
- 0.225
train_random_resize:
- 400
- 500
- 600
horizontal_flip_prob: 0.5
train_random_crop_min: 384
train_random_crop_max: 600
random_resize_max_size: 1333
test_random_resize: 800
fixed_padding: true
fixed_random_crop: 1024
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
freeze: []
pretrained_model_path: ''
clip_grad_norm: 0.1
is_dry_run: false
conf_threshold: 0.0
optim:
optimizer: AdamW
monitor_name: val_loss
lr: 0.0002
lr_backbone: 2.0e-05
lr_linear_proj_mult: 0.1
momentum: 0.9
weight_decay: 0.0001
lr_scheduler: MultiStep
lr_steps:
- 11
lr_step_size: 11
lr_decay: 0.1
layer_decay_rate: 0.65
precision: fp32
distributed_strategy: ddp
activation_checkpoint: true
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
DINO Deploy
DINO deploy covers the TAO Deploy actions for a trained and exported DINO object detector. Use the dino model skill for train, checkpoint evaluation, quantize, distill, and export. Use this deploy workflow after export when the input artifact is an ONNX model and the desired output is a TensorRT engine or TensorRT-backed predictions.
Supported actions: gen_trt_engine, evaluate, inference.
Quick Start
Generate TensorRT Engine
docker run --gpus all --rm --shm-size=16g \
-v /path/to/specs:/specs \
-v /path/to/export:/models \
-v /path/to/results:/results \
nvcr.io/nvidia/tao/tao-toolkit:6.26.3-deploy \
dino gen_trt_engine -e /specs/dino_deploy_gen_trt_engine.yamlEvaluate TensorRT Engine
docker run --gpus all --rm --shm-size=16g \
-v /path/to/specs:/specs \
-v /path/to/eval/images:/data/images \
-v /path/to/eval/annotations.json:/data/annotations.json \
-v /path/to/results:/results \
nvcr.io/nvidia/tao/tao-toolkit:6.26.3-deploy \
dino evaluate -e /specs/dino_deploy_evaluate.yamlTensorRT Inference
docker run --gpus all --rm --shm-size=16g \
-v /path/to/specs:/specs \
-v /path/to/infer/images:/data/images \
-v /path/to/label_map.txt:/data/label_map.txt \
-v /path/to/results:/results \
nvcr.io/nvidia/tao/tao-toolkit:6.26.3-deploy \
dino inference -e /specs/dino_deploy_inference.yamlDeploy action metadata is in tao-deploy-dino.skill_info.yaml. Deploy spec templates live in this references folder:
spec_template_deploy_gen_trt_engine.yamlspec_template_deploy_evaluate.yamlspec_template_deploy_inference.yaml
Deploy Workflow
1. Train DINO with the dino skill. 2. Export the trained checkpoint to ONNX with the dino skill. Keep any ONNX sidecar files in the same directory as the ONNX file. 3. Build a TensorRT engine with this workflow's gen_trt_engine action. 4. Run TensorRT evaluate or inference with this workflow. For TensorRT inference, use the engine job as the parent artifact, not the train job.
Direct TAO Launcher spelling is tao deploy dino gen_trt_engine, tao deploy dino evaluate, and tao deploy dino inference.
Required Inputs
| Action | Required artifact | Spec key |
|---|---|---|
gen_trt_engine | Exported DINO ONNX model | gen_trt_engine.onnx_file |
gen_trt_engine | Output engine path | gen_trt_engine.trt_engine |
gen_trt_engine INT8 only | Calibration image folder | gen_trt_engine.tensorrt.calibration.cal_image_dir |
gen_trt_engine INT8 only | Calibration cache output path | gen_trt_engine.tensorrt.calibration.cal_cache_file |
evaluate | TensorRT engine | evaluate.trt_engine |
evaluate | COCO eval image folder | dataset.test_data_sources.image_dir |
evaluate | COCO eval annotations | dataset.test_data_sources.json_file |
inference | TensorRT engine | inference.trt_engine |
inference | Image folder list | dataset.infer_data_sources.image_dir |
inference | Class map text file | dataset.infer_data_sources.classmap |
For direct Docker runs, image inputs must be mounted as folders because TAO Deploy checks local directories. In microservice-style job chains, standard DINO dataset artifacts may be supplied as images.tar.gz; the platform layer downloads and extracts the archive before invoking TAO Deploy.
Spec Overrides
The deploy defaults are not safe to reuse blindly. Carry forward the structural settings from the training/export spec, especially:
{
"dataset.num_classes": "<object classes> + 1",
"model.backbone": "<backbone used for train/export>",
"model.num_queries": "<num_queries used for train/export>",
"model.num_select": "<num_select used for train/export>",
"model.num_feature_levels": "<num_feature_levels used for train/export>",
"model.enc_layers": "<enc_layers used for train/export>",
"model.dec_layers": "<dec_layers used for train/export>",
"model.dropout_ratio": "<dropout_ratio used for train/export>",
"model.dim_feedforward": "<dim_feedforward used for train/export>",
}Recommended gen_trt_engine starting overrides:
{
"gen_trt_engine.onnx_file": "/models/model.onnx",
"gen_trt_engine.trt_engine": "/results/dino.engine",
"gen_trt_engine.tensorrt.data_type": "FP16",
"gen_trt_engine.tensorrt.min_batch_size": 1,
"gen_trt_engine.tensorrt.opt_batch_size": 1,
"gen_trt_engine.tensorrt.max_batch_size": 8,
"gen_trt_engine.batch_size": -1,
}Use FP16 by default. The upstream deploy default is INT8, but INT8 requires a real extracted calibration image directory, a calibration cache path, positive cal_batch_size, positive cal_batches, and at least cal_batch_size * cal_batches calibration images.
Recommended evaluate overrides:
{
"evaluate.trt_engine": "/results/dino.engine",
"dataset.test_data_sources.image_dir": "/data/eval/images",
"dataset.test_data_sources.json_file": "/data/eval/annotations.json",
"dataset.batch_size": 1,
"dataset.eval_class_ids": [1],
"evaluate.conf_threshold": 0.0,
"model.num_select": "max(<trained_num_select>, 100)",
}Set dataset.eval_class_ids to the COCO category ids you want scored. The template default [1] is only a placeholder.
DINO TensorRT evaluation writes num_detections=100 into the COCO metric input. For reduced smoke configs, keep model.num_select >= 100 even if train/export used fewer selected boxes, provided model.num_select <= model.num_queries * dataset.num_classes. Otherwise evaluation can produce predictions and then fail while loading COCO results.
Recommended inference overrides:
{
"inference.trt_engine": "/results/dino.engine",
"dataset.infer_data_sources.image_dir": ["/data/infer/images"],
"dataset.infer_data_sources.classmap": "/data/infer/label_map.txt",
"dataset.batch_size": 1,
"inference.conf_threshold": 0.5,
}label_map.txt must contain one class name per line. Class ids are assigned starting at 1 in file order.
Job Chain Mapping
When generating a chained job runner, infer parent artifacts as follows:
| Action | Spec field | Parent |
|---|---|---|
gen_trt_engine | gen_trt_engine.onnx_file | export job ONNX |
gen_trt_engine | gen_trt_engine.trt_engine | new engine output path |
gen_trt_engine | gen_trt_engine.tensorrt.calibration.cal_cache_file | new calibration cache output path |
evaluate | evaluate.trt_engine | engine job output |
inference | inference.trt_engine | engine job output |
For regular DINO inference from a trained checkpoint, use the dino skill. This deploy workflow's inference action expects inference.trt_engine.
Outputs
| Action | Output |
|---|---|
gen_trt_engine | TensorRT engine at gen_trt_engine.trt_engine |
evaluate | COCO metrics in <results_dir>/results.json |
inference | Annotated images in <results_dir>/images_annotated and labels in <results_dir>/labels |
Important Parameters
- `gen_trt_engine.tensorrt.data_type`:
FP32,FP16, orINT8. Prefer
FP16 unless INT8 calibration is explicitly requested.
- `gen_trt_engine.tensorrt.workspace_size`: MB of TensorRT workspace. Very
large ViT backbones need a larger workspace; DINO deploy raises the workspace for vit_large_dinov2 when needed.
- `gen_trt_engine.tensorrt.min_batch_size` / `opt_batch_size` / `max_batch_size`:
Dynamic profile bounds. Runtime dataset.batch_size for evaluate/inference must fit within the engine profile.
- `dataset.num_classes`: Must match train/export and should be
max(category_id) + 1 for COCO-style ids.
- `model.num_select`: Top-K boxes selected during post-processing. Keep it
less than model.num_queries * dataset.num_classes.
- `dataset.augmentation.input_mean` / `input_std`: Keep these aligned with
training/export preprocessing.
Known Pitfalls
Engine build uses the wrong shape or class count: The deploy default spec is not the training default. Copy structural values from the export spec before building the engine.
INT8 calibration fails with a missing directory: TAO Deploy expects cal_image_dir entries to be local directories at runtime. Mount or extract the calibration images before invoking Docker.
`Number of calibration images ... should be larger`: Reduce cal_batch_size or cal_batches, or provide more calibration images.
TensorRT inference cannot find the engine: Chain inference from the gen_trt_engine output. The train/export job does not produce inference.trt_engine.
No detections are drawn: Check inference.conf_threshold, class-map order, and dataset.num_classes. For quick inspection, lower the threshold.
TensorRT evaluate fails with `IndexError: index ... is out of bounds`: The deploy evaluator expects 100 detections per image. Set model.num_select to at least 100 in the deploy evaluate spec, and make sure it does not exceed model.num_queries * dataset.num_classes.
name: dino-deploy
type: model
network_arch: dino
container_image: tao_toolkit.deploy
data_format: coco
actions:
gen_trt_engine:
command: dino gen_trt_engine -e {config_path}
config_format: yaml
mode: config
inputs:
gen_trt_engine.onnx_file:
type: file
outputs:
results_dir:
type: folder
gen_trt_engine.trt_engine:
type: file
upload_excludes:
- inputs/
evaluate:
command: dino evaluate -e {config_path}
config_format: yaml
mode: config
inputs:
evaluate.trt_engine:
type: file
dataset.test_data_sources.image_dir:
type: folder
dataset.test_data_sources.json_file:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
inference:
command: dino inference -e {config_path}
config_format: yaml
mode: config
inputs:
inference.trt_engine:
type: file
dataset.infer_data_sources.image_dir[0]:
type: folder
dataset.infer_data_sources.classmap:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
data_sources:
gen_trt_engine:
gen_trt_engine.tensorrt.calibration.cal_image_dir:
source: calibration_dataset
path: images.tar.gz
list: true
runtime: extracted_folder
evaluate:
dataset.test_data_sources.image_dir:
source: eval_dataset
path: images.tar.gz
runtime: extracted_folder
dataset.test_data_sources.json_file:
source: eval_dataset
path: annotations.json
inference:
dataset.infer_data_sources.image_dir:
source: inference_dataset
path: images.tar.gz
list: true
runtime: extracted_folder
dataset.infer_data_sources.classmap:
source: inference_dataset
path: label_map.txt
spec_params:
gen_trt_engine:
results_dir: output_dir
encryption_key: key
gen_trt_engine.onnx_file: parent_model
gen_trt_engine.trt_engine: create_engine_file
gen_trt_engine.tensorrt.calibration.cal_cache_file: create_cal_cache
evaluate:
results_dir: output_dir
encryption_key: key
evaluate.trt_engine: parent_model
inference:
results_dir: output_dir
encryption_key: key
inference.trt_engine: parent_model
spec_shorthand_keys:
num_classes: dataset.num_classes
batch_size: dataset.batch_size
trt_data_type: gen_trt_engine.tensorrt.data_type
trt_engine: gen_trt_engine.trt_engine
description: DINO deploy workflow for TensorRT engine generation, TensorRT evaluation, and TensorRT inference using TAO Deploy.
spec_templates:
gen_trt_engine: spec_template_deploy_gen_trt_engine.yaml
evaluate: spec_template_deploy_evaluate.yaml
inference: spec_template_deploy_inference.yaml
{
"actions": {
"distill": {
"automl_default_parameters": [
"dataset.augmentation.horizontal_flip_prob",
"dataset.augmentation.train_random_crop_max",
"dataset.augmentation.train_random_crop_min",
"dataset.batch_size",
"dataset.workers",
"model.dec_layers",
"model.enc_layers",
"model.num_queries",
"model.num_select",
"train.optim.layer_decay_rate",
"train.optim.lr",
"train.optim.lr_backbone",
"train.optim.lr_decay",
"train.optim.lr_linear_proj_mult",
"train.optim.lr_step_size",
"train.optim.momentum",
"train.optim.weight_decay"
],
"automl_disabled_parameters": [
"dataset",
"dataset.augmentation",
"dataset.augmentation.input_mean",
"dataset.augmentation.input_std",
"dataset.augmentation.scales",
"dataset.augmentation.test_random_resize",
"dataset.augmentation.train_random_resize",
"dataset.eval_class_ids",
"dataset.infer_data_sources",
"dataset.quant_calibration_data_sources",
"dataset.test_data_sources",
"dataset.train_data_sources",
"dataset.val_data_sources",
"distill",
"evaluate",
"evaluate.gpu_ids",
"export",
"gen_trt_engine",
"gen_trt_engine.tensorrt",
"gen_trt_engine.tensorrt.calibration",
"gen_trt_engine.tensorrt.calibration.cal_image_dir",
"gen_trt_engine.tensorrt.layers_precision",
"inference",
"inference.color_map",
"inference.gpu_ids",
"model",
"model.backbone_names",
"model.hidden_dim",
"model.linear_proj_names",
"model.loss_types",
"model.return_interm_indices",
"quantize",
"quantize.backend_kwargs",
"quantize.layers",
"quantize.skip_names",
"train",
"train.cudnn",
"train.freeze",
"train.gpu_ids",
"train.optim",
"train.optim.lr_steps",
"wandb",
"wandb.tags"
],
"core_module": "dino",
"path": "schemas/distill.schema.json",
"popular": {
"evaluate": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"gen_trt_engine": {
"batch_size": -1,
"gpu_id": 0,
"tensorrt": {
"calibration": {
"cal_batch_size": 1,
"cal_batches": 1
},
"max_batch_size": 1,
"min_batch_size": 1,
"opt_batch_size": 1
}
},
"inference": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"train": {
"checkpoint_interval": 1,
"gpu_ids": [
0
],
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"validation_interval": 1
}
},
"schema_action": "distill",
"spec_template": "references/spec_template_distill.yaml"
},
"evaluate": {
"automl_default_parameters": [
"dataset.augmentation.horizontal_flip_prob",
"dataset.augmentation.train_random_crop_max",
"dataset.augmentation.train_random_crop_min",
"dataset.batch_size",
"dataset.workers",
"model.dec_layers",
"model.enc_layers",
"model.num_queries",
"model.num_select",
"train.optim.layer_decay_rate",
"train.optim.lr",
"train.optim.lr_backbone",
"train.optim.lr_decay",
"train.optim.lr_linear_proj_mult",
"train.optim.lr_step_size",
"train.optim.momentum",
"train.optim.weight_decay"
],
"automl_disabled_parameters": [
"dataset",
"dataset.augmentation",
"dataset.augmentation.input_mean",
"dataset.augmentation.input_std",
"dataset.augmentation.scales",
"dataset.augmentation.test_random_resize",
"dataset.augmentation.train_random_resize",
"dataset.eval_class_ids",
"dataset.infer_data_sources",
"dataset.quant_calibration_data_sources",
"dataset.test_data_sources",
"dataset.train_data_sources",
"dataset.val_data_sources",
"distill",
"evaluate",
"evaluate.gpu_ids",
"export",
"gen_trt_engine",
"gen_trt_engine.tensorrt",
"gen_trt_engine.tensorrt.calibration",
"gen_trt_engine.tensorrt.calibration.cal_image_dir",
"gen_trt_engine.tensorrt.layers_precision",
"inference",
"inference.color_map",
"inference.gpu_ids",
"model",
"model.backbone_names",
"model.hidden_dim",
"model.linear_proj_names",
"model.loss_types",
"model.return_interm_indices",
"quantize",
"quantize.backend_kwargs",
"quantize.layers",
"quantize.skip_names",
"train",
"train.cudnn",
"train.freeze",
"train.gpu_ids",
"train.optim",
"train.optim.lr_steps",
"wandb",
"wandb.tags"
],
"core_module": "dino",
"path": "schemas/evaluate.schema.json",
"popular": {
"evaluate": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"gen_trt_engine": {
"batch_size": -1,
"gpu_id": 0,
"tensorrt": {
"calibration": {
"cal_batch_size": 1,
"cal_batches": 1
},
"max_batch_size": 1,
"min_batch_size": 1,
"opt_batch_size": 1
}
},
"inference": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"train": {
"checkpoint_interval": 1,
"gpu_ids": [
0
],
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"validation_interval": 1
}
},
"schema_action": "evaluate",
"spec_template": "references/spec_template_evaluate.yaml"
},
"export": {
"automl_default_parameters": [
"dataset.augmentation.horizontal_flip_prob",
"dataset.augmentation.train_random_crop_max",
"dataset.augmentation.train_random_crop_min",
"dataset.batch_size",
"dataset.workers",
"model.dec_layers",
"model.enc_layers",
"model.num_queries",
"model.num_select",
"train.optim.layer_decay_rate",
"train.optim.lr",
"train.optim.lr_backbone",
"train.optim.lr_decay",
"train.optim.lr_linear_proj_mult",
"train.optim.lr_step_size",
"train.optim.momentum",
"train.optim.weight_decay"
],
"automl_disabled_parameters": [
"dataset",
"dataset.augmentation",
"dataset.augmentation.input_mean",
"dataset.augmentation.input_std",
"dataset.augmentation.scales",
"dataset.augmentation.test_random_resize",
"dataset.augmentation.train_random_resize",
"dataset.eval_class_ids",
"dataset.infer_data_sources",
"dataset.quant_calibration_data_sources",
"dataset.test_data_sources",
"dataset.train_data_sources",
"dataset.val_data_sources",
"distill",
"evaluate",
"evaluate.gpu_ids",
"export",
"gen_trt_engine",
"gen_trt_engine.tensorrt",
"gen_trt_engine.tensorrt.calibration",
"gen_trt_engine.tensorrt.calibration.cal_image_dir",
"gen_trt_engine.tensorrt.layers_precision",
"inference",
"inference.color_map",
"inference.gpu_ids",
"model",
"model.backbone_names",
"model.hidden_dim",
"model.linear_proj_names",
"model.loss_types",
"model.return_interm_indices",
"quantize",
"quantize.backend_kwargs",
"quantize.layers",
"quantize.skip_names",
"train",
"train.cudnn",
"train.freeze",
"train.gpu_ids",
"train.optim",
"train.optim.lr_steps",
"wandb",
"wandb.tags"
],
"core_module": "dino",
"path": "schemas/export.schema.json",
"popular": {
"evaluate": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"gen_trt_engine": {
"batch_size": -1,
"gpu_id": 0,
"tensorrt": {
"calibration": {
"cal_batch_size": 1,
"cal_batches": 1
},
"max_batch_size": 1,
"min_batch_size": 1,
"opt_batch_size": 1
}
},
"inference": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"train": {
"checkpoint_interval": 1,
"gpu_ids": [
0
],
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"validation_interval": 1
}
},
"schema_action": "export",
"spec_template": "references/spec_template_export.yaml"
},
"inference": {
"automl_default_parameters": [
"dataset.augmentation.horizontal_flip_prob",
"dataset.augmentation.train_random_crop_max",
"dataset.augmentation.train_random_crop_min",
"dataset.batch_size",
"dataset.workers",
"model.dec_layers",
"model.enc_layers",
"model.num_queries",
"model.num_select",
"train.optim.layer_decay_rate",
"train.optim.lr",
"train.optim.lr_backbone",
"train.optim.lr_decay",
"train.optim.lr_linear_proj_mult",
"train.optim.lr_step_size",
"train.optim.momentum",
"train.optim.weight_decay"
],
"automl_disabled_parameters": [
"dataset",
"dataset.augmentation",
"dataset.augmentation.input_mean",
"dataset.augmentation.input_std",
"dataset.augmentation.scales",
"dataset.augmentation.test_random_resize",
"dataset.augmentation.train_random_resize",
"dataset.eval_class_ids",
"dataset.infer_data_sources",
"dataset.quant_calibration_data_sources",
"dataset.test_data_sources",
"dataset.train_data_sources",
"dataset.val_data_sources",
"distill",
"evaluate",
"evaluate.gpu_ids",
"export",
"gen_trt_engine",
"gen_trt_engine.tensorrt",
"gen_trt_engine.tensorrt.calibration",
"gen_trt_engine.tensorrt.calibration.cal_image_dir",
"gen_trt_engine.tensorrt.layers_precision",
"inference",
"inference.color_map",
"inference.gpu_ids",
"model",
"model.backbone_names",
"model.hidden_dim",
"model.linear_proj_names",
"model.loss_types",
"model.return_interm_indices",
"quantize",
"quantize.backend_kwargs",
"quantize.layers",
"quantize.skip_names",
"train",
"train.cudnn",
"train.freeze",
"train.gpu_ids",
"train.optim",
"train.optim.lr_steps",
"wandb",
"wandb.tags"
],
"core_module": "dino",
"path": "schemas/inference.schema.json",
"popular": {
"evaluate": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"gen_trt_engine": {
"batch_size": -1,
"gpu_id": 0,
"tensorrt": {
"calibration": {
"cal_batch_size": 1,
"cal_batches": 1
},
"max_batch_size": 1,
"min_batch_size": 1,
"opt_batch_size": 1
}
},
"inference": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"train": {
"checkpoint_interval": 1,
"gpu_ids": [
0
],
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"validation_interval": 1
}
},
"schema_action": "inference",
"spec_template": "references/spec_template_inference.yaml"
},
"quantize": {
"automl_default_parameters": [
"dataset.augmentation.horizontal_flip_prob",
"dataset.augmentation.train_random_crop_max",
"dataset.augmentation.train_random_crop_min",
"dataset.batch_size",
"dataset.workers",
"model.dec_layers",
"model.enc_layers",
"model.num_queries",
"model.num_select",
"train.optim.layer_decay_rate",
"train.optim.lr",
"train.optim.lr_backbone",
"train.optim.lr_decay",
"train.optim.lr_linear_proj_mult",
"train.optim.lr_step_size",
"train.optim.momentum",
"train.optim.weight_decay"
],
"automl_disabled_parameters": [
"dataset",
"dataset.augmentation",
"dataset.augmentation.input_mean",
"dataset.augmentation.input_std",
"dataset.augmentation.scales",
"dataset.augmentation.test_random_resize",
"dataset.augmentation.train_random_resize",
"dataset.eval_class_ids",
"dataset.infer_data_sources",
"dataset.quant_calibration_data_sources",
"dataset.test_data_sources",
"dataset.train_data_sources",
"dataset.val_data_sources",
"distill",
"evaluate",
"evaluate.gpu_ids",
"export",
"gen_trt_engine",
"gen_trt_engine.tensorrt",
"gen_trt_engine.tensorrt.calibration",
"gen_trt_engine.tensorrt.calibration.cal_image_dir",
"gen_trt_engine.tensorrt.layers_precision",
"inference",
"inference.color_map",
"inference.gpu_ids",
"model",
"model.backbone_names",
"model.hidden_dim",
"model.linear_proj_names",
"model.loss_types",
"model.return_interm_indices",
"quantize",
"quantize.backend_kwargs",
"quantize.layers",
"quantize.skip_names",
"train",
"train.cudnn",
"train.freeze",
"train.gpu_ids",
"train.optim",
"train.optim.lr_steps",
"wandb",
"wandb.tags"
],
"core_module": "dino",
"path": "schemas/quantize.schema.json",
"popular": {
"evaluate": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"gen_trt_engine": {
"batch_size": -1,
"gpu_id": 0,
"tensorrt": {
"calibration": {
"cal_batch_size": 1,
"cal_batches": 1
},
"max_batch_size": 1,
"min_batch_size": 1,
"opt_batch_size": 1
}
},
"inference": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"train": {
"checkpoint_interval": 1,
"gpu_ids": [
0
],
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"validation_interval": 1
}
},
"schema_action": "quantize",
"spec_template": "references/spec_template_quantize.yaml"
},
"train": {
"automl_default_parameters": [
"dataset.augmentation.horizontal_flip_prob",
"dataset.augmentation.train_random_crop_max",
"dataset.augmentation.train_random_crop_min",
"dataset.batch_size",
"dataset.workers",
"model.dec_layers",
"model.enc_layers",
"model.num_queries",
"model.num_select",
"train.optim.layer_decay_rate",
"train.optim.lr",
"train.optim.lr_backbone",
"train.optim.lr_decay",
"train.optim.lr_linear_proj_mult",
"train.optim.lr_step_size",
"train.optim.momentum",
"train.optim.weight_decay"
],
"automl_disabled_parameters": [
"dataset",
"dataset.augmentation",
"dataset.augmentation.input_mean",
"dataset.augmentation.input_std",
"dataset.augmentation.scales",
"dataset.augmentation.test_random_resize",
"dataset.augmentation.train_random_resize",
"dataset.eval_class_ids",
"dataset.infer_data_sources",
"dataset.quant_calibration_data_sources",
"dataset.test_data_sources",
"dataset.train_data_sources",
"dataset.val_data_sources",
"distill",
"evaluate",
"evaluate.gpu_ids",
"export",
"gen_trt_engine",
"gen_trt_engine.tensorrt",
"gen_trt_engine.tensorrt.calibration",
"gen_trt_engine.tensorrt.calibration.cal_image_dir",
"gen_trt_engine.tensorrt.layers_precision",
"inference",
"inference.color_map",
"inference.gpu_ids",
"model",
"model.backbone_names",
"model.hidden_dim",
"model.linear_proj_names",
"model.loss_types",
"model.return_interm_indices",
"quantize",
"quantize.backend_kwargs",
"quantize.layers",
"quantize.skip_names",
"train",
"train.cudnn",
"train.freeze",
"train.gpu_ids",
"train.optim",
"train.optim.lr_steps",
"wandb",
"wandb.tags"
],
"core_module": "dino",
"path": "schemas/train.schema.json",
"popular": {
"evaluate": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"gen_trt_engine": {
"batch_size": -1,
"gpu_id": 0,
"tensorrt": {
"calibration": {
"cal_batch_size": 1,
"cal_batches": 1
},
"max_batch_size": 1,
"min_batch_size": 1,
"opt_batch_size": 1
}
},
"inference": {
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1
},
"train": {
"checkpoint_interval": 1,
"gpu_ids": [
0
],
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"validation_interval": 1
}
},
"schema_action": "train",
"spec_template": "references/spec_template_train.yaml"
}
},
"automl_enabled": true,
"failures": {},
"model": "dino",
"network_arch": "dino",
"schema_version": 1
}
Description: <br>
DINO (DETR with Improved DeNoising Anchor Boxes) for 2D object detection — a transformer-based detector with denoising training, multi-scale features, and optional distillation support. <br>
This skill is ready for commercial/non-commercial use. <br>
Owner
NVIDIA <br>
License/Terms of Use: <br>
Apache 2.0 <br>
Use Case: <br>
Developers and engineers training, evaluating, exporting, distilling, quantizing, or running inference for NVIDIA TAO DINO 2D object detectors. <br>
Deployment Geography for Use: <br>
Global <br>
Known Risks and Mitigations: <br>
Risk: Review before execution as proposals could introduce incorrect or misleading guidance into skills. <br> Mitigation: Review and scan skill before deployment. <br>
Reference(s): <br>
- DINO Data Specs <br>
- DINO Actions and Error Patterns <br>
- DINO AutoML and SDK <br>
- DINO Tuning and Multi-GPU <br>
- TAO Deploy DINO <br>
- Detailed Guide Map <br>
Skill Output: <br>
Output Type(s): [Shell commands, Configuration instructions] <br> Output Format: [Markdown with inline bash code blocks] <br> Output Parameters: [1D] <br> Other Properties Related to Output: [None] <br>
Evaluation Agents Used: <br>
- Claude Code (
claude-code) <br> - Codex (
codex) <br>
Evaluation Tasks: <br>
Evaluated against 1 evaluation task in the NVSkills-Eval external profile on the astra-sandbox environment. <br>
Evaluation Metrics Used: <br>
Reported benchmark dimensions: <br>
- Security: Checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access. <br>
- Correctness: Checks whether the agent follows the expected workflow and produces the correct final output. <br>
- Discoverability: Checks whether the agent loads the skill when relevant and avoids using it when irrelevant. <br>
- Effectiveness: Checks whether the agent performs measurably better with the skill than without it. <br>
- Efficiency: Checks whether the agent uses fewer tokens and avoids redundant work. <br>
Underlying evaluation signals used in this run: <br>
security: Checks for unsafe operations, secret leakage, and unauthorized access. <br>skill_execution: Verifies that the agent loaded the expected skill and workflow. <br>skill_efficiency: Checks routing quality, decoy avoidance, and redundant tool usage. <br>accuracy: Grades final-answer correctness against the reference answer. <br>goal_accuracy: Checks whether the overall user task completed successfully. <br>behavior_check: Verifies expected behavior steps, including safety expectations. <br>token_efficiency: Compares token usage with and without the skill. <br>
Evaluation Results: <br>
| Dimension | Num | claude-code | codex |
|---|---|---|---|
| Security | 1 | 100% (+0%) | 100% (+0%) |
| Correctness | 1 | 100% (+60%) | 97% (+97%) |
| Discoverability | 1 | 88% (+88%) | 97% (+97%) |
| Effectiveness | 1 | 100% (+30%) | 90% (+58%) |
| Efficiency | 1 | 72% (+45%) | 96% (+68%) |
Skill Version(s): <br>
0.1.0 (source: frontmatter) <br>
Ethical Considerations: <br>
NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal team to ensure this skill meets requirements for the relevant industry and use case and addresses unforeseen product misuse. <br>
(For Release on NVIDIA Platforms Only) <br> Please report quality, risk, security vulnerabilities or NVIDIA AI Concerns here. <br>
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAidGFvLXRyYWluLWRpbm8iLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2ZkNjg1M2VjYzBhYzljMzNiMzc0NTIyNmY1Y2FjOTFlMThiN2I4NjZkMDcyODE3MjM4NTM5NDVjMDljYzliZSIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJpZ25vcmVfcGF0aHMiOiBbCiAgICAgICAgIi5naXRodWIiLAogICAgICAgICIuZ2l0YXR0cmlidXRlcyIsCiAgICAgICAgIi5naXRpZ25vcmUiLAogICAgICAgICIuZ2l0IgogICAgICBdLAogICAgICAibWV0aG9kIjogImZpbGVzIiwKICAgICAgImhhc2hfdHlwZSI6ICJzaGEyNTYiLAogICAgICAiYWxsb3dfc3ltbGlua3MiOiBmYWxzZQogICAgfSwKICAgICJyZXNvdXJjZXMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJCRU5DSE1BUksubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjI2ZjZhMzc5ZTE4MGYxOTEwZGFhNDllMjZlZmIyZjk3ZWQyY2ZjYzJmMDhiMWUyNDJkMGRhZDYzYzJmOGMwOTYiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJTS0lMTC5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiMTczYTZmMmE1OWEwOTA3ZGMwZjhhNTNhMjFmMGJkZjZkYzA5ODU5ZjE1MjI2OGM3NDkzNDgwNzNjN2ZhMzc1ZSIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogImV2YWxzL2V2YWxzLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjEyMTZlNWY5MWE2YTgxYWExZjI0Y2YxYjAxMWE1OGI3YjRjOTQ2Zjg4MTc5OGQyN2E3NjcxNTUwNDExYmMyNDUiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL2RldGFpbGVkLWd1aWRlLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI4ZjIwNmNjYmJiNjEyOTZiMDU5MzQ0MzI3NjM4N2ExY2ZkNGIyOWRjYzY0OTAzODkxMDU5MzUwM2I3YTkwNTU3IgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy9kaW5vLWFjdGlvbnMtZXJyb3JzLm1kIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI3MWYyMjQwY2JhNDRjY2I4NDM3NzY2YzFkYWZmNTBlYmUyNDk4MzU4NTQ0NTg5YTAyZjliNzI0YTQ0OTdjMmVmIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy9kaW5vLWF1dG9tbC1zZGsubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjc0ZGIzMTA5MDY2MjUyNWFmZjlkNzY1YjA4YjU2MTc4MDlmMjdjMWFmMTc2Nzc1ZjFlZWZiZTFiMDVmZGRhZGQiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL2Rpbm8tZGF0YS1zcGVjcy5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiM2JjNWVmMmE2YjQyNDEyNjcxZjExNGM5YTJmMzA3NjgyMjNhOWU1YTI1MmE3MjIyZGNiMWU3ZjM3YjhhNmMyMCIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInJlZmVyZW5jZXMvZGluby10dW5pbmctbXVsdGlncHUubWQiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjc3NzIyMTg0ZDNkMzdiZTI0ZGNjMWM5YTRiNzMyNDJhMGE2MTU0MzUzNWE5NmViNjYyYzA3ZGRmMGVlZDc0MTAiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL3NraWxsX2luZm8ueWFtbCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiZTkxZjY5ODNiZDgwZDU3MzA3YTlkNWNlNDkxNjcxOTAzMmZmYWM1NDVkZTIyNjkzODZmMzI4Y2Y1ZmU5YzQ0OSIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInJlZmVyZW5jZXMvc3BlY190ZW1wbGF0ZV9kZXBsb3lfZXZhbHVhdGUueWFtbCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiM2FhZmQxN2E0NjZkM2U4NDM5ODUzZjljMGI2YTBmYmRmZWM0OWMxNzVhODEwZTNmZDQ3ZGQxNmM2ZmUyMGRjYyIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInJlZmVyZW5jZXMvc3BlY190ZW1wbGF0ZV9kZXBsb3lfZ2VuX3RydF9lbmdpbmUueWFtbCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiM2MzODNiYmFhODQ4ZTljYTljYjZjZWUwY2QzZmFjYjVhYzQzY2E3N2E4MzkzYjE1ODdmZTE0ZTQ5OTQ1N2Y1YyIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInJlZmVyZW5jZXMvc3BlY190ZW1wbGF0ZV9kZXBsb3lfaW5mZXJlbmNlLnlhbWwiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImQxMmRlOWM0YmVmMmIxMDAwMTBhZTg1OTcxOWFhMmVkMDE0OTc1NzE3NDU3MTA1YTMyYTY2YWQyNzRmNjI0NGUiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL3NwZWNfdGVtcGxhdGVfZGlzdGlsbC55YW1sIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICJkY2ZhMDVmOTcyYWMzZGU5NDdiZTc0MmM5ZTNiYTZmYThlYTc2YmU1Njc3MmY1YjkzZTk2YjQxMGY3MjVlODJmIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy9zcGVjX3RlbXBsYXRlX2V2YWx1YXRlLnlhbWwiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjU2MTIyN2M4ZmM3MzgwZGIyZmU0YWU0OTIyZTQ0YTgzZjdhZGUxNjI4MWRmNTg5YjlkNjM5OTM0ODhmMTEzMGEiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL3NwZWNfdGVtcGxhdGVfZXhwb3J0LnlhbWwiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImQxYzY1OGY4ZjM1NTMxZmRkNzMwNWExZGYxMGUzZWY0MGZhMTMwOThmMGUyMmQ4MDgwYjMxMjFiZGNmOGE3MmYiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL3NwZWNfdGVtcGxhdGVfZ2VuX3RydF9lbmdpbmUueWFtbCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiOTIyZjliN2QzY2JmYmVlODFhZTVhZGNkOTA2NjBkZTNlMDlhZmY5Y2QxYTYwNzE0NjNmYjJlMGQ4ZGJjYTdiNCIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInJlZmVyZW5jZXMvc3BlY190ZW1wbGF0ZV9pbmZlcmVuY2UueWFtbCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiZmNhYjlhYjY3ZjAyNDI3ZTc2MjFlMWZhM2RmYmRlNDJiNjhjYzAzZjViNjc3ZWM0YzY5ZWVhOTkyZjMxZjIxNSIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInJlZmVyZW5jZXMvc3BlY190ZW1wbGF0ZV9xdWFudGl6ZS55YW1sIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI2ZGFkNTRhMjk3NzY3NTg2ODcyODRjM2MzZTU4OTRiY2UwOGUwNmExYmU4MmU3NDM3ZDk0MWM2YTQ5MzNmMzcyIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAicmVmZXJlbmNlcy9zcGVjX3RlbXBsYXRlX3RyYWluLnlhbWwiLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjZkYWQ1NGEyOTc3Njc1ODY4NzI4NGMzYzNlNTg5NGJjZTA4ZTA2YTFiZTgyZTc0MzdkOTQxYzZhNDkzM2YzNzIiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJyZWZlcmVuY2VzL3Rhby1kZXBsb3ktZGluby5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiYmJmNTlmYmYxOGQwMDlkN2M2ODgxMzY2MjVjZTgzMGM5NzRiODA2NzQwOGM5ZTM3OTUyMzAyMzdjOWRiN2I5MyIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInJlZmVyZW5jZXMvdGFvLWRlcGxveS1kaW5vLnNraWxsX2luZm8ueWFtbCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiY2YwYzMyY2E5ZmY3YjBiNTg5NzE3MmQ0M2Y2MzU1ZGFlMDE4MWIxMDU0NmQ3ZjFkNzdjMDQyN2FiZTE0ZWYxYyIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInNjaGVtYXMvZGlzdGlsbC5zY2hlbWEuanNvbiIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiZjNlMjdhYWI3ZGFhM2NjZWRiMDcwNjFhZmM5ZmFhZjY5MTA3YWU3NjlhNjNkNjUxMTY3YzI0OTBkOTRhYWUzYiIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInNjaGVtYXMvZXZhbHVhdGUuc2NoZW1hLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjIyNDVjNDY1MjE1MjBmMWI1ZTc5ZDYwOGIxMWNlMzU4NmRhYmUwN2MwMTRiNTQxMzg5NjFkYjQwNjNiMTc2YTMiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJzY2hlbWFzL2V4cG9ydC5zY2hlbWEuanNvbiIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiNDBkMDcyOTg1NmU1ODAxODA1ZTgzYTY3YmQ5NjA0YWY3MDVkOWRiNTJhMTk2ZDZkYTI0ZTIyNGU2NjFkMmJiZSIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInNjaGVtYXMvZ2VuX3RydF9lbmdpbmUuc2NoZW1hLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjk2MWExZDY0ODkwOGFiYmEyNDQ1MDMzMTQxMjg3MjY5MTkzYTUwYjQ1ZmEzZmNmYjA2NDkwYzJhOGVlM2E3OTAiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJzY2hlbWFzL2luZmVyZW5jZS5zY2hlbWEuanNvbiIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiNDFiNmNmMWQ4Y2YxZGE4OTE0NGZhODI4MGZhZmIyOTFjY2FkZjI5MWY5NjMyYTUyMDM4MGM1YTFlMTk4YzQ0NyIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInNjaGVtYXMvbWFuaWZlc3QuanNvbiIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiZDU0YzA5OWYwNjc0NGU0M2UwYjdjN2Q2NmRiNWY2YzZhODUxMjBkNTQ2OTQ4MjZjYjBlYjQwNTM4ODQwNDQzMSIKICAgICAgfSwKICAgICAgewogICAgICAgICJuYW1lIjogInNjaGVtYXMvcXVhbnRpemUuc2NoZW1hLmpzb24iLAogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjRlYzdjMTI3ZmMzNjQxYTNiNzJjYjgyZmFkYTkzNjlkYjI4M2MzY2I4NjMyYTlkMTlhYTc0NTA5NTRkMTcxMzYiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJzY2hlbWFzL3RyYWluLnNjaGVtYS5qc29uIiwKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICIxMGNjZjQ2OWJmZWUxZTU4OTE2NTNlZWM2ZGIyNTA1Njk1YzM4Mzg1NDgyYTJmM2IzZGVkMjkzMjhhNmRkYzhmIgogICAgICB9LAogICAgICB7CiAgICAgICAgIm5hbWUiOiAic2tpbGwtY2FyZC5tZCIsCiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiM2RjZTY3M2ZhZmE5NjE1ZjEzMWUzODgyYjQxY2MyMDhmMWViZTU3NzhlZWUzNjNmNzFkMWNiMzI3MGE2MDI3MyIKICAgICAgfQogICAgXQogIH0KfQ==","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGYCMQC0SeHR7SZJGZ6uwdbGKbgwJrTJcLtXI/o+ADsYRAG6XSca6ZwxwzqFrO0U1aMwBigCMQCfEOr6uR2U88SywYm6jEi2/pUREIrQ0FizPd1d+aPlqOj8q68RSTx8jxgn3TBaOeU=","keyid":""}]}}Related skills
How it compares
Choose tao-train-dino over grounding-dino skills when detection uses a fixed COCO class vocabulary rather than open-vocabulary text prompts.
FAQ
What dataset format does tao-train-dino require?
tao-train-dino requires object_detection datasets in COCO or coco_raw format with images.tar.gz plus annotations.json. Both train and validation dataset URIs are mandatory because DINO unconditionally builds a validation dataloader at startup regardless of monitoring metric choic
What are the default DINO training hyperparameters?
tao-train-dino defaults include num_epochs 10, batch_size 4, learning_rate 2e-4, lr_backbone 2e-5, and num_classes 91 for COCO. Production datasets typically need 30-50+ epochs, and num_classes must be at least max category_id plus one.
Does tao-train-dino support AutoML hyperparameter search?
tao-train-dino is AutoML-enabled at the model layer and routes train actions through tao-run-automl by default when automl_policy is on. The recommended monitoring metric is mAP50 with maximize direction, using packaged schemas/train.schema.json for hyperparameter bounds.