Grounding DINO
Grounding DINO pour la détection d'objets en ensemble ouvert. Combine la détection de style DINO avec un encodeur de texte BERT pour la détection guidée par le langage. Détecte les objets décrits par des invites textuelles sans vocabulaire de classe fixe.
Définissez train.pretrained_model_path pour les poids complets de Grounding DINO ou model.pretrained_backbone_path pour le backbone uniquement.
Pour les actions TAO Deploy TensorRT (gen_trt_engine, TensorRT evaluate et TensorRT inference), lisez d'abord references/tao-deploy-grounding-dino.md. Les modèles de spécification de déploiement se trouvent dans le dossier references/ de cette skill avec le préfixe spec_template_deploy_*.yaml.
Dataclass Schemas
Les schémas TAO Core générés sont empaquetés dans schemas/<action>.schema.json, avec schemas/manifest.json listant les actions disponibles. Chaque schéma généré émet également references/spec_template_<action>.yaml à partir du champ default du haut niveau du schéma. L'activation d'AutoML est déclarée au niveau du modèle dans references/skill_info.yaml via automl_enabled. AutoML exécutable nécessite toujours que schemas/train.schema.json et references/spec_template_train.yaml existent et se analysent correctement. Utilisez le schéma d'entraînement empaqueté pour automl_default_parameters, automl_disabled_parameters, les valeurs par défaut, les limites min/max, les énumérations, les poids des options, les conditions mathématiques, les dépendances et les paramètres populaires. Ne vous attendez pas à ~/tao-core à l'exécution ; les responsables régénèrent les schémas/modèles avant d'empaqueter la skill bank.
Train Action Policy
Ce modèle est activé pour AutoML au niveau du modèle. Avant de gérer toute demande d'étape d'entraînement, lisez references/skill_info.yaml et résolvez le remplacement d'exécution à partir d'une valeur automl_policy explicite ou de la demande de workflow de l'utilisateur. Traitez les phrases comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette exécution uniquement ; sinon, utilisez auto par défaut. Quand automl_policy: auto, automl_enabled: true, et que schemas/train.schema.json et references/spec_template_train.yaml sont empaquetés, routez l'action d'entraînement via tao-skill-bank:tao-run-automl par défaut avec le skill_dir de ce modèle. Préservez les remplacements de workflow/application pour les ensembles de données, les spécifications, les répertoires de sortie, les paramètres GPU/plateforme, les checkpoints parent et automl_policy. Utilisez l'entraînement direct du modèle uniquement quand automl_policy: off ou quand le schéma/modèle d'entraînement empaqueté est manquant ; dans le cas du schéma manquant, signalez qu'AutoML est activé mais non exécutable pour ce modèle jusqu'à ce que les schémas soient générés.
Les actions non-entraînement telles que evaluate, inference, export et les flux de déploiement restent dans cette skill de modèle. Le remplacement automl_policy par exécution ne change pas les métadonnées du modèle.
Training Requirements
- Dataset type: object_detection
- Formats: odvg, coco, raw
- Monitoring metric: val_mAP50
Per-Action Dataset Requirements
| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| evaluate | dataset.test_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| inference | dataset.infer_data_sources | inference_dataset | image_dir: images.tar.gz, classmap: label_map.txt | No |
| quantize | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Yes |
| quantize | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| quantize | dataset.quant_calibration_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | No |
| train | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Yes |
| train | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
Typical Spec Overrides
Les remplacements de source de données sont obligatoires pour chaque action — l'agent DOIT construire les chemins de source de données à partir du tableau Per-Action Dataset Requirements ci-dessus et les inclure dans spec_overrides.
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"
train (mandatory data sources):
{
"train.num_epochs": 10,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
"dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}
gen_trt_engine:
{
"gen_trt_engine.tensorrt.data_type": "FP16",
}
inference (mandatory data sources):
{
"dataset.infer_data_sources.captions": [
"person"
],
"dataset.infer_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "classmap": f"{S3_EVAL}/label_map.txt"},
}
evaluate (mandatory data sources):
{
"dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}
quantize (mandatory data sources):
{
"dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
"dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
"dataset.quant_calibration_data_sources": {"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"},
}
Eval Dataset
Optionnel. La validation utilise les annotations au format COCO pour mAP même si l'entraînement peut utiliser le format ODVG.
Important Parameters
- model.backbone: Default swin_tiny_224_1k. Supporte également resnet_50 et d'autres variantes Swin. Swin offre généralement de meilleures performances pour les tâches de grounding.
- model.text_encoder_type: Modèle BERT pour l'encodage de texte. Default bert-base-uncased. max_text_len par défaut à 256.
- train.optim.lr: Learning rate. Default 2e-4. lr_backbone 2e-5. Supporte la précision bf16 en plus de fp16/fp32.
- dataset.max_labels: Nombre maximum d'étiquettes par image lors de l'entraînement. Default 50. Augmentez pour les ensembles de données d'annotation dense.
- model.num_queries: Object queries. Default 900 (supérieur aux 300 de DINO) en raison de la nature du vocabulaire ouvert.
- train.optim.lr_steps: MultiStep LR schedule. Default [10].
Multi-GPU / Multi-Node
Launch method: Lightning-managed (processus python unique, Lightning crée les workers).
| Spec Key | Description | Default |
|---|---|---|
train.num_gpus |
Number of GPUs | 1 |
train.gpu_ids |
GPU device indices | [0] |
train.num_nodes |
Number of nodes | 1 |
train.distributed_strategy |
ddp ou fsdp |
ddp |
Même comportement DDP/FSDP que DINO. Multi-node nécessite que les variables d'environnement WORLD_SIZE, NODE_RANK, MASTER_ADDR, MASTER_PORT soient définies par l'orchestrateur.
Export / TRT Defaults
- Export input: 960x544 (plus grand que les autres modèles OD), opset 17
- TRT data types: FP32, FP16 uniquement — INT8 n'est PAS supporté
- TRT workspace: 8192 MB (8 fois plus grand que les autres modèles OD)
- TRT max_batch_size: 4
Référence TAO Deploy complète : tao-deploy-grounding-dino.
Hardware
Minimum 1 GPU, recommandé 4 GPU. 24 GB+ (A100 recommandé) de VRAM par GPU. Grounding DINO est plus lourd que DINO standard en raison de l'encodeur de texte (BERT). 24 GB+ de mémoire GPU recommandé. Réduisez batch_size pour les GPU 16 GB.
Error Patterns
CUDA out of memory: Réduisez batch_size (4 -> 2 -> 1). L'encodeur de texte BERT ajoute une surcharge de mémoire significative au-dessus du backbone vision.
Val annotation category IDs: Les annotations de validation doivent avoir des ID de catégorie commençant à 0 pour un calcul correct de la perte. Utilisez la conversion de format d'annotation si nécessaire.
Text encoder loading error: Assurez-vous que le conteneur a accès pour télécharger les poids bert-base-uncased ou fournissez un chemin local.
Spec Param / Parent Model Inference
Les mappages d'inférence spécifiques au modèle appartiennent à ce fichier MD, pas à config.json. Les runners générés doivent lire cette section et appliquer les mappages avec les assistants SDK avant create_job(). Cela reflète le flux ancien des microservices infer_params.py.
Mappages d'inférence à partir de grounding_dino.config.json TAO Core :
| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| evaluate | encryption_key |
key |
encryption key |
| evaluate | evaluate.checkpoint |
parent_model |
fichier de modèle déduit du dossier de résultats de la tâche parent |
| evaluate | evaluate.trt_engine |
parent_model |
fichier de modèle déduit du dossier de résultats de la tâche parent |
| evaluate | results_dir |
output_dir |
répertoire des résultats de la tâche actuelle |
| export | encryption_key |
key |
encryption key |
| export | export.checkpoint |
parent_model |
fichier de modèle déduit du dossier de résultats de la tâche parent |
| export | export.onnx_file |
create_onnx_file |
chemin ONNX de sortie |
| export | results_dir |
output_dir |
répertoire des résultats de la tâche actuelle |
| gen_trt_engine | encryption_key |
key |
encryption key |
| gen_trt_engine | gen_trt_engine.onnx_file |
parent_model |
fichier de modèle déduit du dossier de résultats de la tâche parent |
| gen_trt_engine | gen_trt_engine.trt_engine |
create_engine_file |
chemin du moteur TensorRT de sortie |
| gen_trt_engine | results_dir |
output_dir |
répertoire des résultats de la tâche actuelle |
| inference | encryption_key |
key |
encryption key |
| inference | inference.checkpoint |
parent_model |
fichier de modèle déduit du dossier de résultats de la tâche parent |
| inference | inference.trt_engine |
parent_model |
fichier de modèle déduit du dossier de résultats de la tâche parent |
| inference | results_dir |
output_dir |
répertoire des résultats de la tâche actuelle |
| quantize | encryption_key |
key |
encryption key |
| quantize | quantize.model_path |
parent_model |
fichier de modèle déduit du dossier de résultats de la tâche parent |
| quantize | results_dir |
output_dir |
répertoire des résultats de la tâche actuelle |
| train | encryption_key |
key |
encryption key |
| train | model.pretrained_backbone_path |
ptm_if_no_resume_model |
PTM quand aucun checkpoint de reprise n'existe |
| train | results_dir |
output_dir |
répertoire des résultats de la tâche actuelle |
| train | train.pretrained_model_path |
ptm_if_no_resume_model |
PTM quand aucun checkpoint de reprise n'existe |
| train | train.resume_training_checkpoint_path |
resume_model |
fichier de modèle déduit du dossier de résultats de la tâche actuelle |
Pour parent_model ou parent_model_folder, passez l'ID de la tâche enfant train/export/AutoML en amont en tant que parent_job_id. Le SDK liste le dossier de résultats parent, filtre les artifacts de checkpoint et retourne le fichier ou dossier de modèle sélectionné. N'ajoutez pas ces mappages à config.json et ne patchez pas les scripts de runner générés pour deviner les chemins de checkpoint.