Transformers pour images

Vision Transformers (ViT)

Découvrez comment les Transformers, initialement conçus pour le texte, ont révolutionné la vision par ordinateur en surpassant les CNN traditionnels sur de nombreuses tâches.

Partager :

Le défi : adapter les Transformers aux images

Le problème initial

Les Transformers traitent des séquences de tokens (mots). Mais une image n'est pas une séquence : c'est une grille 2D de pixels. Une image 224×224 pixels contient 50 176 pixels ! Impossible de traiter chaque pixel comme un token : ce serait trop coûteux en calcul (complexité quadratique de l'attention).

Exemple concret

Une image 224×224 = 50 176 pixels. Avec l'attention classique, cela nécessiterait 50 176² ≈ 2,5 milliards d'opérations par couche !

La solution : les patches

L'idée géniale du Vision Transformer (ViT) : découper l'image en patches carrés (morceaux) de 16×16 pixels. Chaque patch devient un token, comme un mot dans une phrase. Une image 224×224 devient une séquence de seulement 196 patches (14×14).

Réduction spectaculaire

50 176 pixels → 196 patches. L'attention ne calcule plus que 196² ≈ 38 000 opérations par couche. C'est 65 000 fois moins !

Visualisation interactive : Découpage en patches
Explorez comment une image est découpée en patches pour être traitée par un Vision Transformer
196 patches au total
224×224
Taille image
16×16
Taille patch
14×14
Grille patches
196
Total patches
Image originale
Séquence de patches
... et 132 autres patches
Comment ça marche ?
  1. L'image 224×224 est découpée en 196 patches de 16×16 pixels
  2. Chaque patch est aplati en un vecteur de 256 valeurs (RGB)
  3. Une projection linéaire transforme chaque patch en un embedding de dimension 768
  4. Un positional encoding est ajouté pour conserver l'information spatiale
  5. La séquence de 196 embeddings est traitée par le Transformer
❌ Sans patches (pixels directs)
50176 tokens → Attention : 2.5B opérations
Trop coûteux en mémoire et calcul !
✅ Avec patches
196 tokens → Attention : 38.4K opérations
Réduction de 66× du coût de calcul !

Architecture du Vision Transformer

Pipeline Vision Transformer : Image → Patches → Embedding → Transformer → Classification

Pipeline complet du Vision Transformer : de l'image brute à la prédiction finale

1
Découpage en patches
Transformer l'image en séquence

L'image (par exemple 224×224×3 pour RGB) est découpée en patches de 16×16 pixels. Chaque patch contient 16×16×3 = 768 valeurs. On obtient 196 patches (14×14).

Image [224, 224, 3] → 196 patches [16, 16, 3] → Flatten → 196 vecteurs de 768 dimensions

2
Embedding linéaire
Projeter dans l'espace latent

Chaque vecteur de 768 dimensions est projeté dans un espace de dimension D (souvent 768 ou 1024) via une couche linéaire apprise. C'est l'équivalent de l'embedding des mots en NLP.

196 vecteurs [768] → Linear(768, D) → 196 embeddings [D]

3
Token [CLS] et encodage positionnel
Ajouter le contexte spatial

On ajoute un token spécial [CLS] au début (comme en BERT) qui servira pour la classification. On ajoute aussi un encodage positionnel à chaque patch pour que le modèle sache où se trouve chaque morceau dans l'image.

[CLS] + 196 patches + Position Embeddings → 197 tokens [D]

4
Transformer Encoder
Attention entre tous les patches

La séquence de 197 tokens passe dans un Transformer Encoder standard(comme BERT) avec plusieurs couches d'attention multi-têtes. Chaque patch peut "regarder" tous les autres patches pour comprendre le contexte global de l'image.

Avantage clé : Contrairement aux CNN qui ont un champ réceptif local (convolutions 3×3), ViT voit l'image entière dès la première couche grâce à l'attention globale.

5
Tête de classification
Prédire la classe de l'image

À la sortie du Transformer, on prend uniquement le token [CLS] qui a agrégé l'information de toute l'image. On le passe dans une couche linéaire pour prédire la classe (chat, chien, voiture, etc.).

[CLS] token [D] → Linear(D, num_classes) → Softmax → Probabilités par classe

Applications des Vision Transformers

Classification d'images
Identifier le contenu d'une image

ViT surpasse ResNet sur ImageNet avec moins de calculs. Il excelle particulièrement quand il est pré-entraîné sur de très grandes quantités de données (JFT-300M).

Performance

ViT-Huge : 88.55% top-1 sur ImageNet (vs 86.4% pour ResNet-152)

Détection d'objets
Localiser et identifier plusieurs objets

DETR (DEtection TRansformer) utilise un Transformer pour détecter des objets sans avoir besoin d'ancres prédéfinies. Il prédit directement les boîtes englobantes et les classes.

Modèles

DETR, Deformable DETR, DINO (Self-supervised)

Segmentation sémantique
Classifier chaque pixel

Segmenter (Mask2Former) utilise des Transformers pour assigner une classe à chaque pixel de l'image. Utile pour la conduite autonome, l'imagerie médicale, la réalité augmentée.

Applications

Voitures autonomes, diagnostic médical, effets vidéo

Génération d'images
Créer des images à partir de texte

DALL-E, Stable Diffusion et Midjourney utilisent des Transformers (souvent combinés avec des diffusion models) pour générer des images photoréalistes à partir de descriptions textuelles.

Modèles populaires

DALL-E 3, Stable Diffusion XL, Midjourney v6, Imagen

Modèles Vision Transformers populaires

ViT (Vision Transformer)
Google Research, 2020

Le modèle fondateur qui a prouvé que les Transformers purs peuvent surpasser les CNN sur la classification d'images.

Classification
Swin Transformer
Microsoft, 2021

Utilise des fenêtres glissantes hiérarchiques pour réduire la complexité. Excellent pour la détection et la segmentation.

Multi-tâches
CLIP
OpenAI, 2021

Apprend conjointement vision et langage. Peut classifier des images avec des descriptions textuelles sans fine-tuning.

Vision-Langage
DINO
Meta AI, 2021

Auto-supervisé (self-supervised). Apprend des représentations visuelles puissantes sans labels, juste en regardant des images.

Self-supervised
DeiT
Meta AI, 2021

Data-efficient Image Transformer. Entraînable sur ImageNet seul (sans JFT-300M) grâce à la distillation de connaissances.

Efficient
Segment Anything (SAM)
Meta AI, 2023

Segmente n'importe quel objet dans une image avec un simple clic. Entraîné sur 1 milliard de masques.

Segmentation

CNN vs Vision Transformer : Quelle différence ?

CNN (Convolutional Neural Networks)
Architecture traditionnelle pour la vision

🔍 Champ réceptif local

Les convolutions (3×3, 5×5) ne voient qu'une petite région à la fois. Le champ réceptif global n'est atteint qu'après plusieurs couches.

📐 Biais inductif spatial

Les convolutions supposent que les pixels proches sont liés (localité spatiale). Bon pour les textures et motifs locaux.

⚡ Efficace sur petits datasets

Grâce au biais inductif, les CNN performent bien même avec peu de données (ImageNet-1k suffit).

🔢 Complexité linéaire

O(n) par rapport à la taille de l'image. Rapide et léger.

Vision Transformer (ViT)
Architecture moderne basée sur l'attention

🌍 Attention globale immédiate

Chaque patch peut "voir" tous les autres patches dès la première couche. Capture les dépendances à longue distance.

🎯 Pas de biais inductif

ViT apprend la structure spatiale des données. Plus flexible mais nécessite plus d'exemples pour apprendre.

📊 Scalabilité exceptionnelle

Les performances continuent de s'améliorer avec plus de données (JFT-300M) et de paramètres. Pas de plateau.

🔢 Complexité quadratique

O(n²) pour l'attention. Plus coûteux en calcul, d'où l'utilisation de patches.

Comparaison détaillée
CritèreCNNViT
Champ réceptifLocal → Global (progressif)Global dès le début
Données nécessairesImageNet-1k (1.3M images)ImageNet-21k ou JFT-300M (14M-300M)
ComplexitéO(n) - LinéaireO(n²) - Quadratique (sur patches)
InterprétabilitéFeature maps difficiles à interpréterCartes d'attention visuelles
Transfer learningVision uniquementVision + Langage (CLIP, GPT-4V)
Performance ImageNetResNet-152 : 86.4%ViT-Huge : 88.55%

Avantages et limites

✅ Avantages

Attention globale dès la première couche

Contrairement aux CNN, ViT voit l'image entière immédiatement, capturant les dépendances à longue distance.

Scalabilité

Les performances s'améliorent constamment avec plus de données et de paramètres (pas de plateau comme les CNN).

Transfert inter-domaines

Facile d'adapter un modèle texte-image (CLIP) ou de combiner vision et langage.

Interprétabilité

Les cartes d'attention montrent quelles parties de l'image le modèle regarde.

⚠️ Limites

Besoin de beaucoup de données

ViT nécessite des millions d'images pour bien performer (ImageNet-21k, JFT-300M). Sur de petits datasets, les CNN restent meilleurs.

Coût computationnel élevé

L'attention quadratique rend l'entraînement coûteux. ViT-Huge nécessite des TPU/GPU puissants.

Moins de biais inductif

Les CNN ont un biais inductif spatial (convolutions locales). ViT doit tout apprendre des données, d'où le besoin de plus d'exemples.

Résolution fixe

ViT est entraîné sur une résolution fixe (224×224). Changer la résolution nécessite un ajustement des embeddings positionnels.

🎯 En résumé

Les Vision Transformers ont prouvé que l'architecture Transformer, initialement conçue pour le langage, est universelle et peut exceller sur n'importe quelle modalité. En découpant les images en patches et en appliquant l'attention globale, ViT capture des relations spatiales complexes que les CNN peinent à modéliser.

Aujourd'hui, les ViT dominent les benchmarks de vision par ordinateur et sont au cœur des modèles multimodaux comme GPT-4 Vision, Gemini, et Claude 3 qui peuvent "voir" et comprendre des images.

Site pédagogique sur les Transformers et l'Intelligence Artificielle

Créé pour rendre l'IA accessible à tous 🚀

Soyez le premier à donner votre avis !

Votre retour est précieux pour améliorer cette page. Partagez votre expérience ci-dessous.

Question 1 / 3Score : 0 / 0
Vision Transformers
Testez vos connaissances

Comment les Vision Transformers (ViT) traitent-ils les images ?

Votre avis compte ! 💡
Aidez-nous à améliorer cette page en partageant votre expérience. Votre retour est précieux pour rendre le contenu encore plus clair et utile.

Comment évaluez-vous cette page ?

🍪 Gestion des cookies
Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser l'utilisation du site et vous proposer des contenus personnalisés. Vous pouvez accepter tous les cookies, les refuser ou personnaliser vos préférences.