14 Calcul des features
Ce chapitre est en cours de construction et peut être incomplet.
14.1 Vue d’ensemble
Bien que l’API MOSAIKS fournisse des features pré-calculées pour de nombreuses applications, certains cas d’usage nécessitent le calcul de features personnalisées. Ce chapitre couvre les aspects techniques de la génération de features MOSAIKS à partir d’images satellites.
14.2 Prérequis
Pour calculer les features MOSAIKS, vous aurez besoin de :
- Imagerie satellite (voir Chapitre 10)
- Un environnement de calcul avec GPU (fortement recommandé)
- Python avec bibliothèques de deep learning (PyTorch recommandé)
- Stockage suffisant pour les matrices de features
14.3 Implémentation
Il existe plusieurs manières d’implémenter l’extraction des features MOSAIKS :
14.3.1 Implémentation avec torchgeo
La bibliothèque torchgeo fournit une implémentation PyTorch des features de convolution aléatoires (RCF) :
import torch
from torchgeo.models import RCF
# Définition des paramètres du modèle
= 3 # Taille des patches aléatoires
patch_size = 4 # Nombre de bandes spectrales d’entrée
in_channels = 4000 # Nombre de features à générer
num_filters
# Pour le mode 'empirical', fournir une classe PyTorch Dataset personnalisée
# Si 'gaussian', ne pas fournir de dataset.
# Initialisation du modèle RCF
= RCF(
model =in_channels,
in_channels=num_filters,
features=3,
kernel_size=-1.0,
bias=42,
seed='empirical',
mode=CustomDataset,
dataset
)
# Déplacement du modèle sur GPU si disponible
= torch.device("cuda" if torch.cuda.is_available() else "cpu")
device = model.to(device) model
14.4 Paramètres des features
Plusieurs paramètres clés influencent l’extraction des features :
14.4.1 Nombre de features (K)
- Détermine la dimensionnalité du vecteur de features
- Un plus grand nombre de features capture plus d’informations
- Augmente la charge de calcul et les besoins en stockage
- Plage typique : 1 000 - 8 192 features
- Diminution des gains au-delà de 4 000 features
14.4.2 Taille des patches
- Détermine l’étendue spatiale prise en compte
- Des patches plus grands capturent plus de contexte
- Mais augmentent la charge de calcul
- Taille typique : 3×3 ou 5×5 pixels
- À adapter à la résolution de l’imagerie
14.4.3 Nombre de canaux en entrée
- Dépend du nombre de bandes spectrales disponibles
- RVB = 3 canaux
- Possibilité d’utiliser des bandes supplémentaires (ex. NIR, SWIR)
- Plus de bandes = information spectrale plus riche
- Mais augmente la charge de calcul
14.5 Considérations pratiques
14.5.1 Gestion de la mémoire
Lors du traitement de grands ensembles de données satellitaires :
- Utilisation de mini-batches pour limiter la consommation mémoire
- Stockage temporaire sur disque si la RAM est insuffisante
-
Utilisation de
torch.no_grad()
pour désactiver la rétropropagation
14.5.2 Formats de stockage
Formats efficaces pour stocker de grandes matrices de features :
- Parquet (rapide, compressé, optimisé pour le stockage et l’accès)
- Zarr (bon pour l’accès distribué et le cloud computing)
- Feather (optimisé pour Pandas et Apache Arrow)
14.5.3 Traitement parallèle
Pour extraire les features sur de grands ensembles de données :
- Utilisation de
torch.multiprocessing
- Découpage des images en lots
- Exécution sur plusieurs GPU (si disponible)
- Traitement en parallèle sur un cluster
14.6 Contrôle qualité
Vérifications essentielles lors de l’extraction des features :
-
Validation des entrées
- Dimensions des images
- Gamme des valeurs de pixels
- Données manquantes
- Ordre des bandes spectrales
-
Analyse statistique des features
- Vérification des distributions
- Détection de valeurs nulles/anormales
- Corrélation entre features
- Analyse de l’importance des features
-
Suivi des performances
- Utilisation de la mémoire
- Vitesse de traitement
- Utilisation du GPU
- Efficacité du stockage
14.7 Bonnes pratiques
-
Documentation
- Enregistrer tous les paramètres utilisés
- Tracer les sources de données
- Documenter les étapes de traitement
- Noter les éventuels problèmes rencontrés
-
Tests
- Tests unitaires sur les fonctions critiques
- Tests d’intégration
- Tests de performance
- Vérifications de validité des résultats
-
Gestion des versions
- Versionner le code
- Versionner les features
- Suivre les paramètres d’extraction
- Enregistrer les résultats intermédiaires
Dans le prochain chapitre, nous travaillerons sur un exemple complet de calcul de features MOSAIKS personnalisées.