Swin Transformer
Swin Transformer est un Transformer de vision hiérarchique qui calcule l’auto-attention dans des fenêtres locales décalées, de sorte que son coût augmente de façon linéaire avec la taille de l’image.
Swin Transformer, abréviation de Shifted Window Transformer, est un transformer de vision hiérarchique qui calcule l’auto-attention au sein de petites fenêtres locales et décale ces fenêtres entre les couches consécutives. Ze Liu et ses collègues de Microsoft Research Asia l’ont présenté dans l’article de 2021 Swin Transformer : transformer de vision hiérarchique utilisant des fenêtres décalées, qui a remporté le prix Marr du meilleur article à ICCV 2021. Les fenêtres locales font croître linéairement le coût de l’attention en fonction du nombre de pixels, plutôt que de façon quadratique, et la fusion des patchs par étapes produit des cartes de caractéristiques mult échelles, comme celles d’un réseau neuronal convolutif. Ces propriétés ont rendu les transformers utilisables comme backbones polyvalents pour la détection d’objets et la segmentation d’images haute résolution, au-delà de la classification.
Fonctionnement des fenêtres décalées#
Swin commence par diviser l’image en patchs de 4×4 pixels et projette chacun d’eux dans un embedding de token ; une image de 224×224 devient ainsi une grille de tokens de 56×56 avec 96 canaux dans le modèle Tiny. L’attention globale sur l’ensemble des 3 136 tokens comparerait chacun d’eux à tous les autres ; Swin divise la grille en fenêtres non chevauchantes de 7×7 tokens et ne calcule l’attention qu’à l’intérieur de chacune. L’article donne le coût de l’attention globale comme 4hwC² + 2(hw)²C pour une grille h×w à C canaux, contre 4hwC² + 2M²hwC pour des fenêtres de M×M tokens, ce qui est linéaire en hw.
Les fenêtres seules n’échangeraient jamais d’information ; un bloc sur deux décale donc la grille de fenêtres d’une demi-fenêtre, soit 3 tokens, de sorte que les nouvelles fenêtres chevauchent les anciennes frontières. Pour conserver un nombre constant de fenêtres, l’implémentation fait pivoter cycliquement la carte de caractéristiques et masque l’attention entre les tokens qui n’étaient pas voisins dans l’image d’origine. Chaque bloc ajoute aussi aux scores d’attention un biais de position relative appris.
Entre les étapes, une couche de fusion de patchs concatène chaque groupe de 2×2 tokens voisins et le projette linéairement, divisant la résolution par deux et doublant le nombre de canaux. Les quatre étapes produisent des cartes de caractéristiques à 1/4, 1/8, 1/16 et 1/32 de la résolution d’entrée, soit les mêmes strides que ResNet ; Swin s’intègre ainsi aux têtes de détection et de segmentation existantes, comme un réseau pyramidal de caractéristiques. L’implémentation torchvision présente les deux mécanismes :
import torch
from torchvision.models import swin_t
# Swin-T architecture; random weights are enough to inspect its structure
model = swin_t().eval()
# Each pair of blocks uses 7x7 windows, the second shifted by 3 patches
regular, shifted = model.features[1]
print(f"Window {regular.attn.window_size}, shift {regular.attn.shift_size} then {shifted.attn.shift_size}")
# features alternates stages with patch merging; stage outputs are (batch, height, width, channels)
x = torch.randn(1, 3, 224, 224)
with torch.no_grad():
for i, layer in enumerate(model.features):
x = layer(x)
if i % 2 == 1:
print(f"Stage {i // 2 + 1}: {tuple(x.shape)}")Le programme affiche Window [7, 7], shift [0, 0] then [3, 3], suivi des sorties des étapes (1, 56, 56, 96), (1, 28, 28, 192), (1, 14, 14, 384) et (1, 7, 7, 768) : chaque étape réduit la grille de moitié et double le nombre de canaux, produisant la pyramide attendue par les têtes de prédiction dense.
Swin Transformer, ViT et réseaux convolutifs#
Le ViT d’origine découpe les images en patchs de 16×16, conserve une seule résolution à travers toutes les couches et applique une attention globale. Cela convient à la classification d’images, mais devient coûteux pour les images haute résolution utilisées en détection et en segmentation. Swin réintroduit deux a priori des réseaux convolutifs — la localité et une hiérarchie de caractéristiques — tout en conservant les poids dépendants des entrées du mécanisme d’attention. Ses fenêtres locales diffèrent de l’attention à fenêtre glissante, où chaque token porte son attention sur son propre voisinage : les fenêtres de Swin sont des partitions fixes communes aux tokens, ce qui permet d’effectuer efficacement les multiplications matricielles sur GPU.
À sa sortie, le plus grand modèle, Swin-L préentraîné sur ImageNet-22K, a atteint une précision top-1 de 87,3 % sur ImageNet-22K, un AP de 58,7 pour les boîtes et de 51,1 pour les masques sur COCO test-dev, ainsi qu’un mIoU de 53,5 sur ADE20K, les meilleurs résultats publiés sur ces benchmarks de détection et de segmentation sémantique. Sa réussite a également stimulé la recherche sur les réseaux convolutifs : ConvNeXt de Meta (2022) a modernisé ResNet en reprenant des choix de conception de Swin et a égalé ou dépassé sa précision.
Swin peut servir de backbone à un modèle Ultralytics personnalisé : le module TorchVision d’un fichier YAML de modèle charge swin_t de torchvision avec ses poids ImageNet préentraînés, et une tête de détection YOLO s’entraîne sur l’unique carte de caractéristiques stride-32 qu’il renvoie.
Variantes et applications#
- Swin Transformer V2 : la conception a été étendue à 3 milliards de paramètres et à des images allant jusqu’à 1 536×1 536 pixels en 2022, avec une attention cosinus mise à l’échelle et un biais de position continu à espacement logarithmique pour stabiliser l’entraînement.
- Reconnaissance d’actions vidéo : Video Swin Transformer étend les fenêtres à trois dimensions, dans l’espace et le temps, pour classifier les actions dans des séquences vidéo.
- Super-résolution et restauration : SwinIR utilise des blocs Swin pour agrandir les images, réduire le bruit et supprimer les artefacts JPEG.
- Analyse d’images médicales : Swin-Unet et Swin UNETR associent des encodeurs Swin à des décodeurs de type U-Net, et Swin UNETR segmente les tumeurs cérébrales dans des volumes d’IRM 3D.










