Réidentification de personne
Réidentification de personne. Apprend des embeddings discriminatifs pour associer la même personne à travers différentes vues de caméra. Basé sur le metric learning.
Définis model.pretrained_model_path pour les poids pré-entraînés.
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 aussi references/spec_template_<action>.yaml à partir du champ default du schéma au niveau supérieur. L'activation AutoML est déclarée au niveau du modèle dans references/skill_info.yaml via automl_enabled. L'exécution d'AutoML nécessite toujours que schemas/train.schema.json et references/spec_template_train.yaml existent et se compilent. Utilise le schéma train 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'attends pas ~/tao-core à l'exécution ; les mainteneurs régénèrent les schémas/templates avant d'empaqueter la banque de skills.
Politique d'action Train
Ce modèle est activé pour AutoML au niveau du modèle. Avant de traiter toute demande au stade train, lis references/skill_info.yaml et résous l'override d'exécution à partir soit d'une valeur automl_policy explicite, soit de la demande de workflow de l'utilisateur. Traite des phrases comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette exécution uniquement ; sinon la valeur par défaut est auto. Quand automl_policy: auto, automl_enabled: true, et que schemas/train.schema.json et references/spec_template_train.yaml sont empaquetés, route l'action train via tao-skill-bank:tao-run-automl par défaut avec le skill_dir de ce modèle. Préserve les overrides workflow/application pour les datasets, les specs, les répertoires de sortie, les paramètres GPU/plateforme, les checkpoints parents, et automl_policy. Utilise l'entraînement direct du modèle uniquement quand automl_policy: off ou que le schéma/template train empaqueté est manquant ; dans le cas du schéma manquant, rapporte 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 ce 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 : re_identification
- Formats : default
- Métrique de monitoring : cmc_rank_1
Exigences de Dataset par Action
| Action | Clé Spec | Source | Fichiers | Liste ? |
|---|---|---|---|---|
| evaluate | evaluate.test_dataset | train_datasets | sample_test.tar.gz | Non |
| evaluate | evaluate.query_dataset | train_datasets | sample_query.tar.gz | Non |
| inference | inference.test_dataset | train_datasets | sample_test.tar.gz | Non |
| inference | inference.query_dataset | train_datasets | sample_query.tar.gz | Non |
| train | dataset.train_dataset_dir | train_datasets | sample_train.tar.gz | Non |
| train | dataset.test_dataset_dir | train_datasets | sample_test.tar.gz | Non |
| train | dataset.query_dataset_dir | train_datasets | sample_query.tar.gz | Non |
Overrides de 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 d'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,
"num_classes": 100,
"num_workers": 4,
"batch_size": 16,
"dataset.train_dataset_dir": f"{S3_TRAIN}/sample_train.tar.gz",
"dataset.test_dataset_dir": f"{S3_TRAIN}/sample_test.tar.gz",
"dataset.query_dataset_dir": f"{S3_TRAIN}/sample_query.tar.gz",
}
evaluate (sources de données obligatoires) :
{
"evaluate.test_dataset": f"{S3_TRAIN}/sample_test.tar.gz",
"evaluate.query_dataset": f"{S3_TRAIN}/sample_query.tar.gz",
}
inference (sources de données obligatoires) :
{
"inference.test_dataset": f"{S3_TRAIN}/sample_test.tar.gz",
"inference.query_dataset": f"{S3_TRAIN}/sample_query.tar.gz",
}
Dataset d'évaluation
Obligatoire. L'évaluation nécessite des datasets test et query pour les métriques basées sur la récupération (CMC, mAP).
Paramètres importants
- dataset.num_classes : Nombre d'identités. Par défaut 751. Doit correspondre au nombre d'identités uniques dans les données d'entraînement.
- model.backbone : Par défaut resnet_50.
- optim.base_lr : Taux d'apprentissage de base. Par défaut 3,5e-4.
- dataset.batch_size : Taille de batch par GPU. Par défaut 64. La réidentification bénéficie de gros batches pour un meilleur échantillonnage triplet/contrastif.
- dataset.num_instances : Nombre d'instances par identité dans un batch. Contrôle la stratégie d'échantillonnage pour le metric learning.
Multi-GPU / Multi-Node
Méthode de lancement : Gérée par Lightning (un seul processus python, Lightning lance les workers).
| Clé Spec | Description | Par défaut |
|---|---|---|
train.num_gpus |
Nombre de GPUs | 1 |
train.gpu_ids |
Indices des appareils GPU | [0] |
- Stratégie multi-GPU :
ddp_find_unused_parameters_true sync_batchnormest toujours activé- Précision forcée à FP16 (
16-mixed) - Pas de config
num_nodesexplicite — orientation single-node
Matériel
Minimum 1 GPU, recommandé 2 GPUs. 16 Go+ de VRAM par GPU. Les modèles de réidentification sont relativement légers mais bénéficient de gros batches pour le metric learning.
Modèles d'erreur
Incompatibilité num_classes : Assure-toi que dataset.num_classes égale le nombre de dossiers d'identités uniques dans l'ensemble d'entraînement.
Incompatibilité query/gallery : Les datasets query et test (gallery) doivent partager le même espace de noms d'identités.
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 runners générés doivent lire cette section et appliquer les mappages avec les aides SDK avant create_job(). Cela reflète le flux ancien infer_params.py des microservices.
Mappages d'inférence depuis re_identification.config.json de TAO Core :
| 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 job parent |
| evaluate | evaluate.output_cmc_curve_plot |
create_evaluate_cmc_plot_reid |
chemin du graphique CMC ReID |
| evaluate | evaluate.output_sampled_matches_plot |
create_evaluate_matches_plot_reid |
chemin du graphique des correspondances échantillonnées ReID |
| evaluate | results_dir |
output_dir |
répertoire de résultats du job 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 job parent |
| export | export.onnx_file |
create_onnx_file |
chemin ONNX de sortie |
| export | results_dir |
output_dir |
répertoire de résultats du job 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 job parent |
| inference | inference.output_file |
create_inference_result_file_reid |
chemin JSON d'inférence ReID |
| inference | results_dir |
output_dir |
répertoire de résultats du job courant |
| 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 job courant |
| train | train.resume_training_checkpoint_path |
resume_model |
fichier de modèle déduit du dossier de résultats du job courant |
Pour parent_model ou parent_model_folder, passe l'ID du job enfant train/export/AutoML en amont comme parent_job_id. Le SDK liste le dossier de résultats parent, filtre les artefacts de checkpoint, et retourne le fichier de modèle sélectionné ou le dossier. N'ajoute pas ces mappages à config.json et ne corrige pas les scripts runner générés pour deviner les chemins de checkpoint.