Classification de poses
Classification de poses utilisant ST-GCN (Spatial Temporal Graph Convolutional Network). Classifie les séquences de squelettes en catégories d'action à partir de données de points clés de pose.
Typiquement entraîné à partir de zéro sur des données de squelettes.
Schémas de classes de données
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 de 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 se prennent en charge. Utilisez le schéma d'entraînement empaqueté pour automl_default_parameters, automl_disabled_parameters, les valeurs par défaut, les bornes min/max, les énumérations, les poids d'options, les conditions mathématiques, les dépendances et les paramètres populaires. Ne comptez pas sur ~/tao-core au moment de l'exécution ; les mainteneurs régénèrent les schémas/templates avant d'empaqueter la skill bank.
Politique d'action d'entraînement
Ce modèle est activé 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, par défaut sur auto. Lorsque 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 par défaut via tao-skill-bank:tao-run-automl avec le skill_dir de ce modèle. Préservez les substitutions de workflow/application pour les ensembles de données, les specs, les répertoires de sortie, les paramètres GPU/plateforme, les checkpoints parents et automl_policy. Utilisez l'entraînement direct du modèle uniquement lorsque automl_policy: off ou que le schéma/template d'entraînement empaqueté est manquant ; dans le cas d'un schéma manquant, rapportez 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 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 : pose_classification
- Formats : default
- Métrique de surveillance : val_acc
Exigences d'ensemble de données par action
| Action | Clé Spec | Source | Fichiers | Liste ? |
|---|---|---|---|---|
| evaluate | evaluate.test_dataset.data_path | train_datasets | Non | |
| evaluate | evaluate.test_dataset.label_path | train_datasets | Non | |
| inference | inference.test_dataset.data_path | train_datasets | Non | |
| train | dataset.train_dataset.data_path | train_datasets | Non | |
| train | dataset.train_dataset.label_path | train_datasets | Non | |
| train | dataset.val_dataset.data_path | train_datasets | Non | |
| train | dataset.val_dataset.label_path | train_datasets | Non |
Substitutions de 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"
train (sources de données obligatoires) :
{
"train.num_epochs": 30,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"num_classes": 6,
"graph_layout": "nvidia",
"dataset.train_dataset.data_path": f"{S3_TRAIN}",
"dataset.train_dataset.label_path": f"{S3_TRAIN}",
"dataset.val_dataset.data_path": f"{S3_TRAIN}",
"dataset.val_dataset.label_path": f"{S3_TRAIN}",
}
evaluate (sources de données obligatoires) :
{
"evaluate.test_dataset.data_path": f"{S3_TRAIN}",
"evaluate.test_dataset.label_path": f"{S3_TRAIN}",
}
inference (sources de données obligatoires) :
{
"inference.test_dataset.data_path": f"{S3_TRAIN}",
}
Ensemble de données d'évaluation
Optionnel. Les données de validation sont fournies parallèlement à l'entraînement sous forme de val_data.npy / val_label.pkl.
Paramètres importants
- dataset.num_classes : Nombre de classes d'action de pose. Par défaut 6.
- model.graph_layout : Disposition du graphique du squelette. Options : nvidia, openpose. Détermine la connectivité des articulations.
- model.graph_strategy : Stratégie de partitionnement de graphique pour le GCN.
- train.optim.lr : Taux d'apprentissage. Par défaut 0,1 (SGD). Plus élevé que les modèles de vision en raison des propriétés de convolution de graphe.
- model.dropout : Taux de dropout pour la régularisation.
Multi-GPU / Multi-nœud
Méthode de lancement : Géré par Lightning (processus python unique, Lightning génère les workers).
| Clé Spec | Description | Par défaut |
|---|---|---|
train.num_gpus |
Nombre de GPUs | 1 |
train.gpu_ids |
Indices de périphérique GPU | [0] |
- Stratégie :
auto(Lightning choisit automatiquement la meilleure stratégie) - Aucune configuration explicite de
num_nodesoudistributed_strategy— nœud unique uniquement - Modèle léger, un seul GPU généralement suffisant
Matériel
Minimum 1 GPU, recommandé 1 GPU. 8 Go+ de VRAM par GPU. La classification de poses est très légère — les données de squelettes sont petites. Un seul GPU est suffisant.
Motifs d'erreur
Inadéquation de disposition de graphique : Assurez-vous que model.graph_layout correspond au format de squelette dans vos fichiers .npy.
Inadéquation de forme d'étiquette : Les indices de classe dans train_label.pkl doivent être dans la plage [0, num_classes).
Inférence de paramètre Spec / Modèle parent
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 aides SDK avant create_job(). Cela reflète l'ancien flux infer_params.py des microservices.
Mappages d'inférence à partir de pose_classification.config.json de TAO Core :
| Action | Champ Spec | Fonction d'inférence | Sens |
|---|---|---|---|
| evaluate | encryption_key |
key |
clé de chiffrement |
| evaluate | evaluate.checkpoint |
parent_model |
fichier modèle déduit du dossier de résultats du travail parent |
| evaluate | results_dir |
output_dir |
répertoire de résultats du travail actuel |
| export | encryption_key |
key |
clé de chiffrement |
| export | export.checkpoint |
parent_model |
fichier 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 actuel |
| inference | encryption_key |
key |
clé de chiffrement |
| inference | inference.checkpoint |
parent_model |
fichier modèle déduit du dossier de résultats du travail parent |
| inference | inference.output_file |
create_inference_result_file_pose |
fichier de résultat d'inférence de pose |
| inference | results_dir |
output_dir |
répertoire de résultats du travail actuel |
| train | encryption_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 de résultats du travail actuel |
| train | train.resume_training_checkpoint_path |
resume_model |
fichier modèle déduit du dossier de résultats du travail actuel |
Pour parent_model ou parent_model_folder, passez l'ID du travail enfant train/export/AutoML en amont en tant que parent_job_id. Le SDK liste le dossier de résultats parent, filtre les artefacts 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.