Le processus : (1) découper une image 224×224 en 196 patches de 16×16 pixels, (2) aplatir chaque patch en un vecteur et le projeter via une couche linéaire pour créer des embeddings de patch, (3) ajouter des embeddings positionnels pour que le modèle sache où se trouve chaque patch, (4) préfixer un token [CLS] dont la représentation finale est utilisée pour la classification, (5) traiter via des couches d'encodeur Transformer standard. La sortie est une séquence de représentations de patches qui peuvent être utilisées pour la classification, la détection, ou comme features pour d'autres modèles.
Les CNN ont des biais inductifs intégrés : la localité (les pixels proches sont liés) et l'équivariance de translation (les patterns sont reconnus quelle que soit la position). ViT n'a ni l'un ni l'autre — il traite les patches comme un ensemble non ordonné (la position vient d'embeddings appris) et porte attention à tous les patches également. Cela rend ViT moins efficace en données que les CNN pour les petits jeux de données mais plus puissant pour les grands jeux de données, où il peut apprendre ces biais à partir des données plutôt que de les avoir codés en dur.
ViT a engendré une famille de Vision Transformers : DeiT (entraînement efficace en données), Swin Transformer (vision hiérarchique avec fenêtres décalées), MAE (auto-encodeur masqué pour la vision auto-supervisée), et DINO/DINOv2 (représentations visuelles auto-supervisées). Ces modèles dominent maintenant les tâches de vision : classification d'images, détection d'objets, segmentation et extraction de features. L'architecture ViT est aussi l'encodeur d'images dans la plupart des modèles multimodaux (LLaVA, GPT-4V).