Configuraton et Exécution du Pipeline nnUNet
Prérequis et Installation
Avant de commencer, assurez-vous d'avoir un environnement Python avec les dépendances requises. L'installation de nnUNet peut être effectuée via pip ou conda. Veillez à vérifier la compatibilité de PyTorch avec votre version de CUDA.
Configuration des Chemins d'Accès
Définissez les variables d'environnement pour organiser les données et les résultats :
nnUNet_raw: répertoire pour les données brutes.nnUNet_preprocessed: répertoire pour les données prétraitées.nnUNet_results: répertoire pour les poids des modèles entraînés.
Exemple de configuraton dans le terminal :
export nnUNet_raw="/chemin/vers/donnees_brutes"
export nnUNet_preprocessed="/chemin/vers/donnees_pretraitees"
export nnUNet_results="/chemin/vers/resultats_modele"
Préparation des Données
Structurez les ensembles de données selon le format attendu par nnUNet. Chaque tâche doit contenir des images et des masques de segmentation. Pour les données multimodales, assurez que toutes les modalités ont la même géométrie et sont co-registrées. Un fichier dataset.json doit décrire les données, y compris les noms des canaux, les étiquettes et les paramètres de prétraitement.
Exemple de contenu pour dataset.json :
{
"channel_names": {
"0": "IRM"
},
"labels": {
"fond": 0,
"organes": 1,
"lésions": 2
},
"folds": 3,
"numTraining": 200,
"file_ending": ".nii.gz"
}
Exécution du Pipeline
Planification et Prétraitement
Lancez la planification et le prétraitement des données avec la commande suivante. Cela génère les plans d'entraînement et prépare les données pour le modèle.
nnUNetv2_plan_and_preprocess -d IDENTIFIANT_DATASET --verify_dataset_integrity
Entraînement du Modèle
Utilisez la commande d'entraînement pour chaque pli de validation croisée. Spécifiez le GPU à utiliser via CUDA_VISIBLE_DEVICES.
CUDA_VISIBLE_DEVICES=0 nnUNetv2_train IDENTIFIANT_DATASET 3d_fullres 0 --npz
CUDA_VISIBLE_DEVICES=1 nnUNetv2_train IDENTIFIANT_DATASET 3d_fullres 1 --npz
Pour accélérer l'entraînement, modifiez les hyperparamètres dans le fichier plans.json sous le répertoire de prétraitement, par exemple en augmentant la taille du batch. Cependant, tenez compte des contraintes de mémoire GPU.
Inference et Post-traitement
Après l'entraînement, trouvez la meilleure configuration et effectuez l'inférence sur de nouvelles données :
nnUNetv2_find_best_configuration IDENTIFIANT_DATASET -c 3d_fullres
CUDA_VISIBLE_DEVICES=0 nnUNetv2_predict -d IDENTIFIANT_DATASET -i /chemin/entree -o /chemin/sortie -f 0 1 2 3 4 -tr nnUNetTrainer -c 3d_fullres -p nnUNetPlans
Appliquez le post-traitement pour affiner les résultats :
nnUNetv2_apply_postprocessing -i /chemin/predictions -o /chemin/predictions_posttraitees -pp_pkl_file /chemin/vers/postprocessing.pkl -np 8 -plans_json /chemin/vers/plans.json
Évaluation
Évaluez les performances du modèle en comparant les prédictions aux vérités terrain. Vérifiez que les étiquettes correspondent : par exemple, si les prédictions utliisent plusieurs labels et la vérité terrain un seul, remappez les valeurs pour assurer la cohérence avant le calcul des métriques comme le Dice.
Résolution des Problèmes Courants
- Erreurs de module : Si des modules comme
nnUNetv2outorchne sont pas trouvés, réinstallez-les dans l'environnement conda ou pip, en veillant à la version de CUDA. - Conflits de versions : Utilisez des commandes spécifiques pour installer PyTorch avec le support CUDA, par exemple :
pip install torch==1.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116. - Problèmes d'évaluation : Si les scores Dice sont nuls, vérifiez la correspondance entre les labels des prédictions et de la vérité terrain, et appliquez un remappage si nécessaire.
Paramètres Avancés
Pour personnaliser l'entraînement, modifiez les hyperparamètres dans le fichier source nnUNetTrainer.py, par exemple en ajustant le taux d'apprentissage ou le nombre d'époques. Pour les labels partiels, utilisez CrossEntropy avec l'option ignore_index pour ignorer les valeurs manquantes (souvent codées comme -1).