PointPillars
PointPillars pour la détection 3D d'objets à partir de nuages de points LiDAR. Encode les nuages de points en pseudo-image via une représentation basée sur des piliers, puis applique la détection 2D. Utilisé en conduite autonome / robotique.
Généralement entraîné de zéro. Fournissez train.resume_training_checkpoint_path pour reprendre.
Pour les actions TAO Deploy TensorRT (gen_trt_engine, évaluation TensorRT et inference TensorRT), consultez d'abord references/tao-deploy-pointpillars.md. Les modèles de spec Deploy se trouvent dans le dossier references/ de cette skill avec le préfixe spec_template_deploy_*.yaml.
Schémas Dataclass
Les schémas TAO Core générés sont packagé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 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. L'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 train packagé pour automl_default_parameters, automl_disabled_parameters, les valeurs par défaut, les limites min/max, les enums, 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 mainteneurs régénèrent les schémas/modèles avant de packager la skill bank.
Politique d'Action Train
Ce modèle est activé pour AutoML au niveau du modèle. Avant de traiter toute requête au stade de l'entraînement, lisez references/skill_info.yaml et résolvez l'override d'exécution à partir soit d'une valeur automl_policy explicite, soit de la requête de workflow de l'utilisateur. Traitez des phrases comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette exécution uniquement ; sinon, par défaut sur auto. Quand automl_policy: auto, automl_enabled: true et que schemas/train.schema.json et references/spec_template_train.yaml sont packagés, routez l'action train via tao-skill-bank:tao-run-automl par défaut avec le skill_dir de ce modèle. Préservez les overrides de workflow/application pour les datasets, specs, répertoires de sortie, paramètres GPU/platform, checkpoints parents et automl_policy. Utilisez l'entraînement direct du modèle uniquement quand automl_policy: off ou que le schéma/modèle train packagé 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-train comme evaluate, inference, export et les flux de déploiement restent dans cette skill de modèle. L'override automl_policy par exécution ne change pas les métadonnées du modèle.
Exigences d'Entraînement
- Type de dataset : pointpillars
- Formats : default
- Métrique de surveillance : loss
Exigences de Dataset par Action
| Action | Clé Spec | Source | Fichiers | Liste ? |
|---|---|---|---|---|
| dataset_convert | dataset.data_path | id | Non | |
| evaluate | dataset.data_path | train_datasets | Non | |
| evaluate | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | Non |
| export | dataset.data_path | train_datasets | Non | |
| export | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | Non |
| inference | dataset.data_path | train_datasets | Non | |
| inference | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | Non |
| prune | dataset.data_path | train_datasets | Non | |
| prune | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | Non |
| retrain | dataset.data_path | train_datasets | Non | |
| retrain | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | Non |
| train | dataset.data_path | train_datasets | Non | |
| train | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | Non |
Overrides Spec Typiques
Les overrides 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 de Dataset par Action ci-dessus et les inclure dans spec_overrides.
S3_TRAIN = "s3://bucket/data/train"
train (sources de données obligatoires) :
{
"train.num_epochs": 30,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}
evaluate (sources de données obligatoires) :
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}
export (sources de données obligatoires) :
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}
inference (sources de données obligatoires) :
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}
prune (sources de données obligatoires) :
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}
retrain (sources de données obligatoires) :
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}
Dataset d'Évaluation
Optionnel. Les données de validation (val.tar.gz) sont séparées de l'entraînement. Utilisées pour l'évaluation mAP.
Paramètres Importants
- train.num_epochs : Par défaut 80 (beaucoup plus élevé que les autres modèles TAO). PointPillars a besoin de plus d'epochs pour converger sur la détection 3D.
- train.lr : Taux d'apprentissage. Par défaut 0,003 (planificateur adam_onecycle).
- dataset.class_names : Liste des classes d'objets 3D. Par défaut 7 classes (style KITTI). Modifiez pour correspondre à votre dataset.
- dataset.data_path : Chemin vers le répertoire de données du nuage de points.
- dataset.data_info_path : Chemin vers les fichiers d'information de données de l'étape dataset_convert.
- dataset.point_cloud_range : Étendue spatiale du nuage de points à considérer. Doit correspondre à votre configuration de capteur.
- model.dense_head.anchor_generator_config : Configurations d'ancre par classe. Doit être ajustée selon les tailles d'objets et l'étendue du nuage de points.
Multi-GPU / Multi-Nœud
Méthode de lancement : torchrun (LIGHTNING_EXCLUDED_NETWORK). Utilise le natif PyTorch DistributedDataParallel (PAS Lightning Trainer).
| Clé Spec | Description | Par défaut |
|---|---|---|
train.num_gpus |
Nombre de GPUs par nœud | 1 |
train.gpu_ids |
Indices de dispositif GPU | [0] |
train.num_nodes |
Nombre de nœuds | 1 |
CUDA_VISIBLE_DEVICESest explicitement défini à partir deTAO_VISIBLE_DEVICES- Utilise
nn.parallel.DistributedDataParalleldirectement (pas de stratégie Lightning) NODE_RANKest copié versRANKsiRANKn'est pas défini
Variables d'environnement multi-nœuds (définies par l'orchestrateur) :
| Variable | Objectif |
|---|---|
WORLD_SIZE |
Nombre de nœuds |
NODE_RANK |
Rang de ce nœud |
MASTER_ADDR |
IP du nœud de rang-0 |
MASTER_PORT |
Port de rang-0 (par défaut 29 500) |
NUM_GPU_PER_NODE |
GPUs par nœud |
Matériel
Minimum 1 GPU, recommandé 4 GPU. 16 Go+ (V100 ou A100) de VRAM par GPU. PointPillars est relativement efficace pour la détection 3D. Le principal goulot d'étranglement est l'E/S de données pour les grands datasets de nuages de points.
Motifs d'Erreur
dataset_convert obligatoire : L'entraînement échouera si data_info_path n'est pas rempli à partir d'une tâche dataset_convert antérieure. Exécutez toujours la conversion en premier.
Incompatibilité d'étendue du nuage de points : Si point_cloud_range ne correspond pas à l'étendue réelle des données du capteur, les détections seront mauvaises ou vides.
Numérotation des epochs : Les numéros d'epoch des checkpoints PointPillars peuvent être décalés de 1 par rapport aux epochs signalés dans status.json.
Inference Spec Param / Parent Model
Les mappages d'inference 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 helpers SDK avant create_job(). Cela reflète l'ancien flux microservices infer_params.py.
Mappages d'inference depuis TAO Core pointpillars.config.json :
| Action | Champ Spec | Fonction Inference | Signification |
|---|---|---|---|
| dataset_convert | results_dir |
output_dir |
répertoire des résultats de tâche courant |
| evaluate | evaluate.checkpoint |
parent_model |
fichier de modèle déduit du dossier des résultats de tâche parent |
| evaluate | key |
key |
clé de chiffrement |
| evaluate | results_dir |
output_dir |
répertoire des résultats de tâche courant |
| export | export.checkpoint |
parent_model |
fichier de modèle déduit du dossier des résultats de tâche parent |
| export | export.onnx_file |
create_onnx_file |
chemin ONNX de sortie |
| export | export.save_engine |
create_engine_file |
chemin moteur TensorRT de sortie |
| export | key |
key |
clé de chiffrement |
| export | results_dir |
output_dir |
répertoire des résultats de tâche courant |
| gen_trt_engine | gen_trt_engine.onnx_file |
parent_model |
fichier de modèle déduit du dossier des résultats de tâche parent |
| gen_trt_engine | gen_trt_engine.save_engine |
create_engine_file |
chemin moteur TensorRT de sortie |
| gen_trt_engine | key |
key |
clé de chiffrement |
| gen_trt_engine | results_dir |
output_dir |
répertoire des résultats de tâche courant |
| inference | inference.checkpoint |
parent_model |
fichier de modèle déduit du dossier des résultats de tâche parent |
| inference | inference.trt_engine |
parent_model |
fichier de modèle déduit du dossier des résultats de tâche parent |
| inference | key |
key |
clé de chiffrement |
| inference | results_dir |
output_dir |
répertoire des résultats de tâche courant |
| prune | key |
key |
clé de chiffrement |
| prune | prune.model |
parent_model |
fichier de modèle déduit du dossier des résultats de tâche parent |
| prune | results_dir |
output_dir |
répertoire des résultats de tâche courant |
| retrain | key |
key |
clé de chiffrement |
| retrain | results_dir |
output_dir |
répertoire des résultats de tâche courant |
| retrain | train.pruned_model_path |
parent_model |
fichier de modèle déduit du dossier des résultats de tâche parent |
| train | key |
key |
clé de chiffrement |
| train | model.pretrained_model_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 tâche courant |
| train | train.resume_training_checkpoint_path |
resume_model |
fichier de modèle déduit du dossier des résultats de tâche courant |
Pour parent_model ou parent_model_folder, passez l'id de tâche enfant train/export/AutoML en amont en tant que parent_job_id. Le SDK liste le dossier de résultat parent, filtre les artefacts de checkpoint et retourne le fichier ou dossier de modèle sélectionné. N'ajoutez pas ces mappages dans config.json et ne patchez pas les scripts runner générés pour deviner les chemins de checkpoints.
Déploiement
- tao-deploy-pointpillars — Workflow de déploiement PointPillars pour la génération de moteur TensorRT, l'évaluation TensorRT et l'inference TensorRT avec TAO Deploy.