Découvrez comment les auto-encodeurs masqués (MAE) révolutionnent l'apprentissage auto-supervisé. Découvrez comment la reconstruction MAE améliore les performances et l'efficacité Ultralytics .
Les auto-encodeurs masqués (MAE) constituent une approche hautement efficace et évolutive de l' apprentissage auto-supervisé dans le domaine plus large de la vision par ordinateur. Introduit comme une méthode permettant d'entraîner des réseaux neuronaux fortement paramétrés sans nécessiter de vastes ensembles de données étiquetées, un MAE fonctionne en masquant intentionnellement une grande partie aléatoire d'une image d'entrée et en entraînant le modèle à reconstruire les pixels manquants. En prédisant avec succès les informations visuelles cachées, le réseau acquiert intrinsèquement une compréhension sémantique profonde des formes, des textures et des relations spatiales.
Cette technique s'inspire largement du succès de la modélisation linguistique masquée dans les systèmes textuels, mais elle est adaptée à la nature hautement dimensionnelle des données d'images. L'architecture s'appuie sur le très populaire cadre Transformer, en utilisant une structure asymétrique d'encodeur-décodeur.
L'innovation principale du MAE réside dans son efficacité de traitement. Pendant l'apprentissage, l'image d'entrée est divisée en une grille de fragments. Une grande partie de ces patches (souvent jusqu’à 75 %) sont masqués de manière aléatoire et écartés. L’ encodeur, généralement un Vision Transformer (ViT), ne traite que les patches visibles et non masqués. Comme l’encodeur ignore complètement les parties masquées, il nécessite nettement moins de ressources de calcul et de mémoire, ce qui rend le processus d’apprentissage remarquablement rapide.
Une fois que l'encodeur a généré les représentations latentes des zones visibles, un décodeur léger prend le relais. Le décodeur reçoit les zones visibles encodées ainsi que des « jetons de masque » (des espaces réservés pour les données manquantes) et tente de reconstituer l'image d'origine. Comme le décodeur n'est utilisé que pendant cette phase de pré-entraînement, il peut être conçu de manière très compacte, ce qui réduit encore davantage la charge de calcul. Une fois le pré-entraînement terminé, le décodeur est supprimé et le puissant encodeur est conservé pour les applications en aval.
Pour bien saisir le concept des MAE, il est utile de comprendre en quoi ils diffèrent des concepts plus anciens ou plus généraux du deep learning:
Comme les MAE apprennent des représentations extrêmement robustes des données visuelles, ils constituent un point de départ idéal pour les systèmes d'IA complexes destinés au monde réel.
Une fois qu'un modèle de base a été pré-entraîné à l'aide d'une approche MAE, l'étape suivante consiste à affiner et à déployer le modèle pour des tâches spécifiques telles que la classification d'images ou la segmentation d'images. Les écosystèmes cloud modernes rendent cette transition transparente. Par exemple, les équipes peuvent tirer parti de Ultralytics pour annoter facilement des ensembles de données spécifiques à une tâche, orchestrer l'entraînement dans le cloud et déployer les modèles finaux prêts pour la production sur des périphériques ou des serveurs. Cela élimine une grande partie du travail d'infrastructure standard généralement associé aux opérations d'apprentissage automatique (MLOps).
Bien que l'entraînement d'un MAE complet nécessite une architecture de transformateur complète, le principe fondamental du masquage de patches peut être facilement illustré à l'aide tensor PyTorch . Cet extrait de code simple montre comment sélectionner de manière aléatoire des patches visibles dans un tensor d'entrée.
import torch
def create_random_mask(batch_size, num_patches, mask_ratio=0.75):
"""Generates a random mask to simulate MAE patch dropping."""
# Calculate how many patches to keep visible
num_keep = int(num_patches * (1 - mask_ratio))
# Generate random noise to determine patch shuffling
noise = torch.rand(batch_size, num_patches)
# Sort noise to get random indices
ids_shuffle = torch.argsort(noise, dim=1)
# Select the indices of the patches that remain visible
ids_keep = ids_shuffle[:, :num_keep]
return ids_keep
# Simulate a batch of 4 images, each divided into 196 patches
visible_patches = create_random_mask(batch_size=4, num_patches=196)
print(f"Visible patch indices shape: {visible_patches.shape}")
Pour les développeurs qui souhaitent intégrer des capacités visuelles puissantes et pré-entraînées dans leurs flux de travail sans avoir à concevoir des architectures à partir de zéro, la consultation de Ultralytics très complète Ultralytics constitue un excellent point de départ pour appliquer des modèles de vision de pointe à vos défis spécifiques. De plus, les principaux frameworks tels que TensorFlow offrent également des écosystèmes robustes permettant de mettre en œuvre les dernières recherches en matière d'apprentissage automatique dans des environnements de production évolutifs.