DeiT (Data-efficient Image Transformer)
DeiT (Data-efficient Image Transformer) est une famille de Vision Transformers développée par Meta AI et l’Université Sorbonne, capable d’atteindre des performances compétitives en classification d’images en s’entraînant uniquement sur ImageNet-1k (1,2 million d’images) grâce à une stratégie de distillation par token d’attention et des techniques d’augmentation de données avancées.
- Nom complet
- Data-efficient Image Transformer
- Créateur
- Meta AI (Facebook AI Research) + Université Sorbonne
- Publication
- ICML 2021 (article original) · ECCV 2022 (DeiT III)
- Auteurs clés
- Hugo Touvron, Matthieu Cord, Hervé Jégou
- Architecture
- Vision Transformer (ViT) + token de distillation
- Meilleur score
- 85,2 % top-1 sur ImageNet-1k (DeiT-B⚗↑384) · 87,7 % (DeiT III Large, pré-entraîné ImageNet-21k)
- Licence
- Open Source Apache 2.0
- Code
- github.com/facebookresearch/deit
Pourquoi DeiT existe : le problème de ViT
Quand Google a publié le Vision Transformer (ViT) fin 2020, le résultat était impressionnant mais assorti d’une contrainte lourde : pour obtenir de bonnes performances, ViT devait être pré-entraîné sur JFT-300M, un dataset interne de 300 millions d’images non accessible au public. Entraîné uniquement sur ImageNet-1k, ViT-B n’atteignait que 77,9 % top-1, soit largement en dessous des CNN de l’époque comme EfficientNet (84,7 %).
Le constat de l’équipe de Meta AI était clair : les Transformers appliqués à la vision n’ont pas de biais inductif spatial (pas de convolutions, pas de pooling hiérarchique). Ils doivent donc « voir » beaucoup plus d’exemples pour apprendre les structures visuelles que les CNN captent naturellement. La question : peut-on compenser ce déficit sans données massives ?
DeiT répond par l’affirmative avec deux leviers : une recette d’entraînement optimisée (augmentation de données, régularisation, optimisation) et un mécanisme de distillation natif au Transformer via un token dédié.
Architecture de DeiT
La base : un ViT standard
L’architecture de DeiT est quasiment identique à celle de ViT. L’image d’entrée (par défaut 224×224 pixels) est découpée en patches de 16×16 pixels. Chaque patch est projeté linéairement dans un espace d’embedding de dimension D. Un token de classe ([CLS]) est ajouté au début de la séquence, et des embeddings de position absolue sont sommés pour encoder la localisation spatiale des patches.
La séquence complète passe ensuite dans un encodeur Transformer standard composé de couches d’attention multi-têtes et de blocs Feed-Forward (MLP). À la sortie, le token [CLS] sert de représentation globale de l’image pour la classification.
Le token de distillation : l’innovation clé
L’apport principal de DeiT est l’ajout d’un token de distillation ([DIST]) à la séquence d’entrée, au même niveau que le token de classe. Ce token est un vecteur appris par rétropropagation qui interagit avec tous les autres tokens (patches et [CLS]) via les couches de self-attention.
Pendant l’entraînement, deux têtes de classification distinctes sont utilisées :
| Tête | Token source | Objectif d’entraînement |
|---|---|---|
| Classifieur principal | [CLS] |
Cross-entropy avec le label réel (ground truth) |
| Classifieur de distillation | [DIST] |
Cross-entropy avec la prédiction du modèle professeur |
À l’inférence, les sorties des deux têtes sont fusionnées (addition des softmax) pour produire la prédiction finale. Ce mécanisme force le modèle à capturer deux types d’information complémentaires : la supervision directe via le label réel et le « savoir-faire » du professeur via la distillation.
Distillation hard vs. soft
La distillation peut prendre deux formes :
Distillation soft : le token [DIST] apprend à reproduire la distribution de probabilités complète du professeur. La loss utilisée est la divergence KL entre les softmax du professeur et de l’élève, pondérée par un paramètre de température τ. Plus la température est élevée, plus la distribution est « douce » et répartie.
Distillation hard : le token [DIST] apprend simplement à prédire le label « dur » (la classe choisie par le professeur, sans probabilités). On utilise ici une cross-entropy classique entre la prédiction de l’élève et le label du professeur.
Résultat contre-intuitif : la distillation hard donne de meilleurs résultats que la soft. DeiT-B avec distillation hard atteint 83,0 % top-1 sur ImageNet à résolution 224, contre 81,8 % avec la distillation soft.
Les variantes de DeiT
DeiT (2021) : la famille originale
La publication ICML 2021 introduit trois tailles de modèles, toutes basées sur des patches 16×16 et une résolution de 224×224 :
| Modèle | Dim. (D) | Têtes | Couches | Params | Top-1 ImageNet | Top-1 (⚗ distillé) |
|---|---|---|---|---|---|---|
| DeiT-Ti (Tiny) | 192 | 3 | 12 | 5 M | 72,2 % | 74,5 % |
| DeiT-S (Small) | 384 | 6 | 12 | 22 M | 79,8 % | 81,2 % |
| DeiT-B (Base) | 768 | 12 | 12 | 86 M | 81,8 % | 83,4 % |
| DeiT-B↑384 | 768 | 12 | 12 | 86 M | 83,1 % | 85,2 % |
Le symbole ⚗ indique l’utilisation de la distillation par token d’attention avec un professeur RegNetY-16GF (82,9 % top-1). La variante ↑384 correspond au fine-tuning à résolution 384×384 via la technique FixRes. Le modèle DeiT-B⚗↑384, avec 85,2 % top-1, dépasse le ViT-B pré-entraîné sur JFT-300M (84,15 %) tout en étant entraîné uniquement sur ImageNet-1k.
DeiT III : Revenge of the ViT (2022)
Publié à ECCV 2022 par la même équipe (Touvron, Cord, Jégou), DeiT III ne modifie pas l’architecture de ViT. L’objectif est de montrer qu’une recette d’entraînement supervisé améliorée suffit à rivaliser avec les architectures modifiées comme Swin Transformer et ConvNeXt, ainsi qu’avec les méthodes d’apprentissage auto-supervisé comme BEiT et MAE.
Les améliorations clés de DeiT III :
3-Augment : une stratégie d’augmentation simplifiée à seulement 3 transformations (niveaux de gris, solarisation, flou gaussien), choisies aléatoirement à chaque batch. C’est plus simple que le cocktail RandAugment + MixUp + CutMix + Erasing utilisé dans DeiT original, et pourtant plus performant.
Simple Random Cropping : remplacement du Random Resize Cropping par un cropping rectangulaire simple, réduisant l’overfitting sur les grands datasets comme ImageNet-21k.
Entraînement à basse résolution : le pré-entraînement se fait à résolution réduite, ce qui divise par plus de 2 les GPU nécessaires et le temps d’entraînement pour les très grands modèles (ViT-H notamment).
LayerScale : normalisation par canal apprise dans chaque couche, facilitant la convergence des Transformers profonds.
Stochastic Depth : suppression aléatoire de couches pendant l’entraînement pour régulariser le modèle.
| Modèle DeiT III | Params | Top-1 (ImageNet-1k) | Top-1 (pré-entraîné 21k → fine-tuné 1k) |
|---|---|---|---|
| DeiT III-S/16 | 22 M | 81,4 % | 84,8 % |
| DeiT III-B/16 | 86 M | 83,8 % | 86,7 % |
| DeiT III-L/16 | 304 M | 84,9 % | 87,0 % |
| DeiT III-L/16↑384 | 304 M | n/a | 87,7 % |
| DeiT III-H/14 | 632 M | 85,2 % | 87,2 % |
Le point fort de DeiT III : ces résultats sont obtenus avec une architecture ViT vanilla, sans aucune modification structurelle (pas de fenêtres locales comme Swin, pas de pyramide hiérarchique, pas de convolutions hybrides). Cela prouve que le potentiel des Transformers purs en vision est largement sous-exploité quand la recette d’entraînement est mal calibrée.
DeiT-LT (2024) : adaptation aux données déséquilibrées
Publié à CVPR 2024, DeiT-LT adapte le mécanisme de distillation de DeiT aux datasets à distribution long-tail (où certaines classes ont très peu d’exemples). Le principe : utiliser la distillation OOD (out-of-distribution) via un professeur CNN entraîné avec SAM (Sharpness Aware Minimization) pour renforcer l’apprentissage des classes minoritaires. Les tokens [CLS] et [DIST] se spécialisent sur des régions différentes de l’image, apportant une complémentarité utile pour les classes rares.
La recette d’entraînement de DeiT : les ingrédients clés
Le succès de DeiT ne repose pas uniquement sur le token de distillation. La recette d’entraînement complète est un ensemble de techniques soigneusement calibrées, chacune apportant une contribution mesurable.
Augmentation de données
Le DeiT original utilise un ensemble agressif de techniques de data augmentation pour simuler un dataset plus grand :
Rand-Augment : applique une séquence aléatoire de transformations (rotation, translation, cisaillement, ajustement de couleur, etc.) avec une amplitude contrôlée par deux hyperparamètres.
MixUp : crée de nouvelles images en combinant linéairement deux images et leurs labels. Par exemple, une image est 70 % chat + 30 % chien, et le label cible devient [0,7 ; 0,3].
CutMix : découpe un rectangle d’une image et le colle sur une autre, avec le label ajusté proportionnellement à la surface.
Random Erasing : masque aléatoirement une zone rectangulaire de l’image pour forcer le modèle à ne pas dépendre d’une seule région.
Ces techniques sont cruciales : sans elles, DeiT-B ne passe que de 72,2 % (ViT-B entraîné naïvement) à ~79 %. Avec l’ensemble complet, on monte à 81,8 % avant même la distillation.
Régularisation et optimisation
Stochastic Depth : chaque couche du Transformer a une probabilité de « drop » pendant l’entraînement (typiquement 0,1 pour DeiT-B). Cela régularise le modèle en créant implicitement un ensemble de sous-réseaux.
Repeated Augmentation : chaque image du batch est augmentée plusieurs fois (typiquement 3), ce qui permet d’exposer le modèle à plus de variations sans augmenter la taille effective du dataset.
Exponential Moving Average (EMA) : les poids du modèle final sont une moyenne pondérée exponentielle des poids observés pendant l’entraînement, lissant les oscillations.
Optimiseur AdamW : Adam avec weight decay découplé, learning rate de 5×10⁻⁴ avec warm-up cosinus sur 5 epochs, et un total de 300 epochs d’entraînement.
Utiliser DeiT en pratique
Via Hugging Face Transformers
DeiT est intégré nativement dans la bibliothèque Hugging Face Transformers. Les modèles pré-entraînés sont disponibles sur le Hub, prêts à être utilisés pour l’inférence ou le fine-tuning.
from transformers import DeiTImageProcessor, DeiTForImageClassification
from PIL import Image
import requests
# Charger le modèle et le processeur
processor = DeiTImageProcessor.from_pretrained(
"facebook/deit-base-distilled-patch16-224"
)
model = DeiTForImageClassification.from_pretrained(
"facebook/deit-base-distilled-patch16-224"
)
# Charger et traiter une image
url = "https://example.com/image.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(images=image, return_tensors="pt")
# Inférence
outputs = model(**inputs)
predicted_class = outputs.logits.argmax(-1).item()
print(model.config.id2label[predicted_class])
Les modèles disponibles sur Hugging Face incluent les variantes Tiny, Small et Base, en version standard et distillée :
| Modèle Hugging Face | Résolution | Distillé |
|---|---|---|
facebook/deit-tiny-patch16-224 |
224 | Non |
facebook/deit-small-patch16-224 |
224 | Non |
facebook/deit-base-patch16-224 |
224 | Non |
facebook/deit-base-patch16-384 |
384 | Non |
facebook/deit-tiny-distilled-patch16-224 |
224 | Oui |
facebook/deit-small-distilled-patch16-224 |
224 | Oui |
facebook/deit-base-distilled-patch16-224 |
224 | Oui |
facebook/deit-base-distilled-patch16-384 |
384 | Oui |
distilled) : elles sont plus performantes sans surcoût à l’inférence. Pour du transfer learning sur un dataset custom, partez de deit-base-distilled-patch16-224 si vous avez un GPU correct (16 Go VRAM), ou deit-small-distilled-patch16-224 pour des contraintes plus serrées.
Via timm (PyTorch Image Models)
La bibliothèque timm de Ross Wightman inclut tous les modèles DeiT (y compris DeiT III) avec des poids pré-entraînés :
import timm
# DeiT original (distillé)
model = timm.create_model(
"deit_base_distilled_patch16_224",
pretrained=True
)
# DeiT III (entraîné sur ImageNet-21k, fine-tuné sur 1k)
model = timm.create_model(
"deit3_large_patch16_224.fb_in22k_ft_in1k",
pretrained=True
)
# Liste de tous les modèles DeiT disponibles
deit_models = timm.list_models("deit*")
print(f"{len(deit_models)} modèles DeiT disponibles")
timm offre davantage de variantes que Hugging Face, notamment tous les modèles DeiT III (Small, Base, Large, Huge) avec différentes combinaisons de résolution et de pré-entraînement.
Fine-tuning sur un dataset personnalisé
Pour adapter DeiT à une tâche de classification spécifique, la procédure standard est la suivante :
1. Remplacer la tête de classification. Le modèle pré-entraîné a 1 000 classes (ImageNet). Remplacez la couche finale par une couche linéaire correspondant à votre nombre de classes.
2. Choisir un learning rate différencié. Utilisez un learning rate faible (1×10⁻⁵ à 5×10⁻⁵) pour le backbone pré-entraîné et un rate plus élevé (1×10⁻³) pour la nouvelle tête. C’est la stratégie de « discriminative fine-tuning ».
3. Adapter la résolution si nécessaire. DeiT gère nativement le changement de résolution via l’interpolation des embeddings de position. Passer de 224 à 384 pixels améliore généralement les performances, surtout sur des images à grain fin (imagerie médicale, classification botanique, etc.).
4. Ajuster l’augmentation. Si votre dataset est petit (< 10 000 images), conservez les augmentations agressives de DeiT. Sur un dataset plus grand, vous pouvez simplifier (comme dans DeiT III avec 3-Augment).
DeiT vs. les autres Vision Transformers
Le paysage des Vision Transformers a considérablement évolué depuis la publication de DeiT. Voici comment il se positionne face aux principales alternatives :
| Critère | DeiT / DeiT III | ViT | Swin | BEiT |
|---|---|---|---|---|
| Architecture | ViT vanilla | ViT vanilla | Fenêtres locales + shifted windows | ViT vanilla |
| Pré-entraînement | Supervisé (ImageNet-1k/21k) | Supervisé (JFT-300M) | Supervisé (ImageNet) | Auto-supervisé (masked image modeling) |
| Innovation clé | Distillation par token + recette training | Architecture patches + Transformer | Attention locale hiérarchique | Pré-entraînement type BERT pour la vision |
| Complexité attention | O(n²) globale | O(n²) globale | O(n × w²) locale | O(n²) globale |
| Top-1 ImageNet (Base, 224) | 83,8 % (DeiT III) | 77,9 % (sans JFT) | 83,5 % | 83,2 % |
| Données requises | ImageNet-1k suffit | JFT-300M recommandé | ImageNet-1k suffit | ImageNet-1k suffit |
| Généralité | Très généraliste (ViT pur) | Très généraliste | Optimisé détection/segmentation | Très généraliste |
Verdict comparatif. DeiT III ferme le fossé entre les ViT purs et les architectures spécialisées comme Swin. Si vous avez besoin d’un backbone polyvalent qui fonctionne aussi bien en classification qu’en segmentation sémantique et en détection d’objets, DeiT III est un excellent point de départ. Pour des tâches nécessitant une attention locale efficace (images haute résolution, détection dense), Swin garde un avantage structurel. Pour le pré-entraînement auto-supervisé, BEiT et DINOv2 sont mieux adaptés.
Impact et héritage de DeiT
Démocratisation des Vision Transformers
Avant DeiT, travailler avec des Vision Transformers nécessitait soit un accès à des datasets privés massifs, soit des budgets GPU considérables. DeiT a changé la donne en prouvant qu’un entraînement efficace sur ImageNet-1k, avec du matériel académique standard, pouvait produire des résultats compétitifs. Cette démocratisation a déclenché une vague de recherches sur les ViT dans des laboratoires qui n’auraient jamais pu s’offrir le coût d’entraînement d’un ViT original.
Influence sur la distillation en vision
Le mécanisme de token de distillation de DeiT a ouvert une voie nouvelle pour la distillation de connaissances dans les Transformers. Plutôt que d’utiliser des techniques de distillation externes (comme celle de Hinton, qui opère au niveau des logits), DeiT intègre la distillation directement dans l’architecture via un token dédié. Cette approche a été reprise et adaptée dans de nombreux travaux ultérieurs.
La recette d’entraînement comme contribution majeure
L’un des enseignements les plus importants de DeiT (renforcé par DeiT III) est que la recette d’entraînement compte autant, voire plus, que l’architecture. Les techniques d’augmentation, de régularisation et d’optimisation développées pour DeiT sont devenues des standards dans le domaine. Le papier « ResNet Strikes Back » de la même équipe a montré que ces techniques pouvaient aussi améliorer drastiquement les performances des CNN classiques comme ResNet.
Impact académique
Le papier DeiT original a accumulé plus de 5 000 citations depuis sa publication, ce qui en fait l’un des travaux les plus influents dans le domaine des Vision Transformers. Il est systématiquement cité comme baseline dans les publications de vision par ordinateur, et les modèles DeiT restent parmi les plus téléchargés sur Hugging Face dans la catégorie classification d’images.
Limites et cas où DeiT n’est pas optimal
Complexité quadratique de l’attention. DeiT utilise une attention globale standard, dont la complexité est O(n²) par rapport au nombre de tokens. Pour des images haute résolution (512×512 et au-delà), le coût mémoire et computationnel explose. Des architectures comme Swin ou Flash Attention gèrent mieux ce cas.
Pas de hiérarchie native. Contrairement à Swin qui produit des feature maps à différentes résolutions (comme un CNN), DeiT produit une seule résolution de tokens. Pour la détection d’objets et la segmentation, il faut ajouter un décodeur (comme un FPN) pour reconstruire les multi-échelles, ce qui est moins élégant.
Dépendance au professeur CNN. La distillation par token fonctionne mieux avec un professeur CNN fort. Si vous n’avez pas de bon modèle professeur pour votre domaine spécifique (imagerie satellitaire, microscopie, etc.), le bénéfice de la distillation est réduit.
Dépassé par les approches auto-supervisées à grande échelle. Des modèles comme DINOv2 (Meta, 2023) et les modèles de fondation visuels actuels utilisent des techniques d’apprentissage auto-supervisé sur des datasets massifs et non annotés, atteignant des performances supérieures à DeiT III en transfer learning. Pour un usage industriel, DINOv2 est souvent un meilleur choix comme backbone pré-entraîné.
Cas d’usage concrets
Classification d’images médicales. DeiT-S et DeiT-B sont régulièrement utilisés comme backbone pour la classification de radiographies, dermoscopies et coupes histologiques. La distillation aide à extraire des features robustes même sur des datasets médicaux limités (quelques milliers d’images).
Feature extraction pour le retrieval. Les embeddings produits par le token [CLS] de DeiT fonctionnent comme représentations visuelles pour la recherche d’images similaires. Les variantes distillées produisent des embeddings plus riches grâce à l’information complémentaire du professeur CNN.
Backbone pour la détection et la segmentation. DeiT III peut servir de backbone pour des détecteurs comme DETR ou des segmenteurs comme Segmenter. Les résultats sur ADE20k (segmentation sémantique) montrent des performances compétitives avec Swin Transformer.
Edge deployment. DeiT-Ti (5 M de paramètres) est suffisamment compact pour être quantifié en INT8 et déployé sur des processeurs embarqués (BPU, NPU). Des travaux récents montrent que la quantification de DeiT-Ti préserve une précision acceptable sur des datasets de taille modeste.
DeiT dans l’écosystème multimodal
DeiT n’est pas un modèle multimodal en soi, mais son architecture ViT est la brique de base de nombreux modèles multimodaux. CLIP (OpenAI), par exemple, utilise un encodeur ViT pour sa branche visuelle. Les techniques d’entraînement développées pour DeiT (augmentation, régularisation) sont directement applicables à ces encodeurs visuels.
De même, les vision-language models actuels (comme LLaVA, Flamingo, ou les modes multimodaux de GPT-5.4 et Claude Opus 4.6) s’appuient sur des encodeurs visuels ViT dont la lignée remonte à DeiT. La contribution de DeiT à l’efficacité d’entraînement de ces encodeurs a un effet multiplicateur sur tout l’écosystème multimodal.
Questions fréquentes sur DeiT
Quelle est la différence entre DeiT et ViT ?
DeiT et ViT partagent la même architecture de base (patches + Transformer encoder). La différence est double. Premièrement, DeiT ajoute un token de distillation qui lui permet d’apprendre d’un modèle professeur (typiquement un CNN). Deuxièmement, DeiT utilise une recette d’entraînement fortement optimisée (augmentation de données, régularisation, optimisation) qui lui permet d’atteindre des performances compétitives en s’entraînant uniquement sur ImageNet-1k, alors que ViT nécessitait JFT-300M pour être performant.
DeiT est-il toujours pertinent face aux modèles récents comme DINOv2 ?
En performances brutes de transfer learning, DINOv2 et d’autres modèles de fondation auto-supervisés surpassent DeiT. Cependant, DeiT reste pertinent dans plusieurs contextes : comme baseline académique solide et reproductible, pour des projets où l’entraînement supervisé est préféré (labels fiables disponibles), pour le déploiement edge avec DeiT-Ti, et comme outil pédagogique pour comprendre les Vision Transformers et la distillation.
Peut-on utiliser DeiT pour autre chose que la classification ?
Oui. DeiT peut servir de backbone (extracteur de features) pour la détection d’objets (avec DETR, par exemple), la segmentation sémantique (avec Segmenter ou UPerNet), le captioning d’images et le retrieval visuel. Le token [CLS] fournit une représentation globale, et les tokens de patches fournissent des représentations locales exploitables par des décodeurs spécialisés.
Combien de temps faut-il pour entraîner DeiT ?
DeiT-B (86 M de paramètres) s’entraîne en environ 53 heures sur un serveur équipé de 8 GPU V100, sur 300 epochs ImageNet-1k. Avec 2 nœuds (16 GPU), ce temps descend à environ 37 heures. DeiT-Ti (5 M de paramètres) est significativement plus rapide. DeiT III, grâce à son entraînement à basse résolution, divise par plus de 2 le temps nécessaire pour les grands modèles (ViT-L, ViT-H).
Quelle version de DeiT utiliser pour un nouveau projet ?
Pour un nouveau projet de classification en 2026, partez de DeiT III plutôt que du DeiT original. Si vous cherchez le meilleur rapport performance/coût et que vous avez accès à des poids pré-entraînés sur ImageNet-21k, utilisez deit3_large_patch16_224.fb_in22k_ft_in1k via timm (87,0 % top-1). Si vos contraintes sont plus serrées (GPU limité, inférence rapide), deit3_small_patch16_224 reste un excellent choix. Pour du transfer learning sur un domaine spécifique, envisagez aussi DINOv2 comme alternative auto-supervisée.