Mask Grounding DINO
Mask Grounding DINO pour la segmentation d'instance ancrée. Étend Grounding DINO avec une tête de prédiction de masque pour la segmentation open-set guidée par des invites texte.
Définissez train.pretrained_model_path pour les poids du modèle complet.
Pour les actions TAO Deploy TensorRT (gen_trt_engine, évaluation TensorRT et inférence TensorRT), lisez d'abord references/tao-deploy-mask-grounding-dino.md. Les modèles de spécification de déploiement se trouvent dans le dossier references/ de cette compétence avec le préfixe spec_template_deploy_*.yaml.
Schémas Dataclass
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 depuis le champ default du niveau supérieur 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 s'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 d'option, les conditions mathématiques, les dépendances et les paramètres populaires. N'attendez pas ~/tao-core à l'exécution ; les responsables régénèrent les schémas/modèles avant d'empaqueter la banque de compétences.
Politique d'action d'entraînement
Ce modèle est activé pour AutoML au niveau du modèle. Avant de traiter toute demande au stade de l'entraînement, lisez references/skill_info.yaml et résolvez la substitution d'exécution à partir d'une valeur automl_policy explicite ou de la demande de workflow de l'utilisateur. Traitez les expressions comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette exécution uniquement ; sinon, utilisez la valeur par défaut auto. Quand automl_policy: auto, automl_enabled: true, et que schemas/train.schema.json et references/spec_template_train.yaml sont empaquetés, acheminez 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 substitutions de workflow/application pour les ensembles de données, les spécifications, les répertoires de sortie, les paramètres GPU/plateforme, les points de contrôle parents et automl_policy. Utilisez uniquement l'entraînement direct du modèle quand automl_policy: off ou 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 liées à l'entraînement, comme evaluate, inference, export et les flux de déploiement, restent dans cette compétence de modèle. La substitution automl_policy par exécution ne change pas les métadonnées du modèle.
Exigences d'entraînement
- Type d'ensemble de données : segmentation
- Formats : odvg, coco, coco_raw
- Métrique de surveillance : [bbox] val_mAP@50
Exigences d'ensemble de données par action
| Action | Clé Spec | Source | Fichiers | Liste ? |
|---|---|---|---|---|
| evaluate | dataset.test_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | Non |
| inference | dataset.infer_data_sources | inference_dataset | image_dir: images.tar.gz, classmap: label_map.txt, json_file: inference.jsonl, captions: inference.jsonl | Non |
| quantize | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Oui |
| quantize | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | Non |
| quantize | dataset.quant_calibration_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Non |
| train | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Oui |
| train | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | Non |
Substitutions Spec typiques
Les substitutions de source de données sont obligatoires pour chaque action — l'agent DOIT construire les chemins de source de données à partir du tableau Exigences d'ensemble de données par action ci-dessus et les inclure dans spec_overrides.
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"
train (sources de données obligatoires) :
{
"train.num_gpus": 1,
"train.num_epochs": 10,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"val_data_sources.data_type": "OD",
"model.num_region_queries": 100,
"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"},
}
evaluate (sources de données obligatoires) :
{
"test_data_sources.data_type": "OD",
"dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}
inference (sources de données obligatoires) :
{
"infer_data_sources.data_type": "OD",
"dataset.infer_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "classmap": f"{S3_EVAL}/label_map.txt", "json_file": f"{S3_EVAL}/inference.jsonl", "captions": f"{S3_EVAL}/inference.jsonl"},
}
quantize (sources de données obligatoires) :
{
"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"},
}
Ensemble de données d'évaluation
Optionnel. La validation utilise les annotations au format COCO même quand l'entraînement utilise ODVG.
Paramètres importants
- model.backbone : Valeur par défaut swin_tiny_224_1k. Mêmes options de backbone que Grounding DINO.
- train.optim.lr : Taux d'apprentissage. Valeur par défaut 2e-4. lr_backbone 2e-5. Réutilise GDINOTrainExpConfig — même configuration d'entraînement que Grounding DINO.
- model.num_queries : Requêtes d'objet. Valeur par défaut 900.
- model.has_mask : Active la tête de prédiction de masque. Valeur par défaut True. Ajoute les coefficients de perte mask/dice/rela.
- model.num_region_queries : Nombre de requêtes de région pour la prédiction de masque. Valeur par défaut 100.
- model.loss_types : Composants de perte. Valeur par défaut [labels, boxes, masks]. Inclut mask_loss_coef, dice_loss_coef, rela_loss_coef.
- evaluate.ioi_threshold : Seuil IoI pour l'évaluation de masque. Valeur par défaut 0,5.
- evaluate.nms_threshold : Seuil NMS. Valeur par défaut 0,2.
- evaluate.text_threshold : Seuil de correspondance texte. Valeur par défaut 0,3.
- dataset.has_mask : L'ensemble de données inclut les annotations de masque. Valeur par défaut True. Le type de données par défaut de val_data_sources est « VG ».
Multi-GPU / Multi-Nœud
Méthode de lancement : Gérée par Lightning. Même comportement DDP/FSDP que Grounding DINO.
| Clé Spec | Description | Valeur par défaut |
|---|---|---|
train.num_gpus |
Nombre de GPU | 1 |
train.gpu_ids |
Indices des appareils GPU | [0] |
train.num_nodes |
Nombre de nœuds | 1 |
train.distributed_strategy |
ddp ou fsdp |
ddp |
Matériel
Minimum 1 GPU, recommandé 4 GPU. 24 Go+ (A100 recommandé) de VRAM par GPU. Plus lourd que Grounding DINO en raison de la tête de prédiction de masque. 24 Go+ de mémoire GPU recommandés.
Motifs d'erreur
CUDA mémoire insuffisante : Réduisez batch_size. La prédiction de masque ajoute des frais généraux en plus de Grounding DINO.
Spec Param / Inférence du modèle parent
Les mappages d'inférence spécifiques au modèle appartiennent à ce fichier MD, pas à config.json. Les exécuteurs générés doivent lire cette section et appliquer les mappages avec les assistants SDK avant create_job(). Cela reflète l'ancien flux microservices infer_params.py.
Mappages d'inférence du fichier TAO Core mask_grounding_dino.config.json :
| Action | Champ Spec | Fonction d'inférence | Signification |
|---|---|---|---|
| evaluate | encryption_key |
key |
clé de chiffrement |
| evaluate | evaluate.checkpoint |
parent_model |
fichier de modèle déduit du dossier de résultats du travail parent |
| evaluate | evaluate.trt_engine |
parent_model |
fichier de modèle déduit du dossier de résultats du travail parent |
| evaluate | results_dir |
output_dir |
répertoire de résultats du travail courant |
| export | encryption_key |
key |
clé de chiffrement |
| export | export.checkpoint |
parent_model |
fichier de modèle déduit du dossier de résultats du travail parent |
| export | export.onnx_file |
create_onnx_file |
chemin ONNX de sortie |
| export | results_dir |
output_dir |
répertoire de résultats du travail courant |
| gen_trt_engine | encryption_key |
key |
clé de chiffrement |
| gen_trt_engine | gen_trt_engine.onnx_file |
parent_model |
fichier de modèle déduit du dossier de résultats du travail 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 de résultats du travail courant |
| inference | encryption_key |
key |
clé de chiffrement |
| inference | inference.checkpoint |
parent_model |
fichier de modèle déduit du dossier de résultats du travail parent |
| inference | inference.trt_engine |
parent_model |
fichier de modèle déduit du dossier de résultats du travail parent |
| inference | results_dir |
output_dir |
répertoire de résultats du travail courant |
| quantize | encryption_key |
key |
clé de chiffrement |
| quantize | quantize.model_path |
parent_model |
fichier de modèle déduit du dossier de résultats du travail parent |
| quantize | results_dir |
output_dir |
répertoire de résultats du travail courant |
| train | encryption_key |
key |
clé de chiffrement |
| train | model.pretrained_backbone_path |
ptm_if_no_resume_model |
PTM quand aucun point de contrôle de reprise n'existe |
| train | results_dir |
output_dir |
répertoire de résultats du travail courant |
| train | train.pretrained_model_path |
ptm_if_no_resume_model |
PTM quand aucun point de contrôle de reprise n'existe |
| train | train.resume_training_checkpoint_path |
resume_model |
fichier de modèle déduit du dossier de résultats du travail courant |
Pour parent_model ou parent_model_folder, passez l'ID du travail enfant de train/export/AutoML en amont sous forme parent_job_id. Le SDK énumère le dossier de résultats parent, filtre les artefacts de point de contrôle et retourne le fichier ou dossier de modèle sélectionné. N'ajoutez pas ces mappages à config.json et ne corrigez pas les scripts de lanceur générés pour deviner les chemins de point de contrôle.
Déploiement
- tao-deploy-mask-grounding-dino — Flux de déploiement Mask Grounding DINO pour la génération du moteur TensorRT, l'évaluation TensorRT et l'inférence TensorRT en utilisant TAO Deploy.