Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Swin Transformer

Swin Transformer è un vision Transformer gerarchico che calcola l’autoattenzione in finestre locali spostate, così il costo cresce linearmente con le dimensioni dell’immagine.

Swin Transformer, abbreviazione di Shifted Window Transformer, è un transformer per la visione gerarchico che calcola l'autoattenzione all'interno di piccole finestre locali e le sposta tra livelli consecutivi. Ze Liu e colleghi di Microsoft Research Asia lo hanno introdotto nell'articolo del 2021 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows, vincitore del Marr Prize per il miglior articolo a ICCV 2021. Le finestre locali fanno sì che il costo dell'attenzione cresca linearmente con il numero di pixel anziché quadraticamente, mentre l'unione graduale delle patch produce mappe delle caratteristiche multiscala simili a quelle di una rete neurale convoluzionale. Queste caratteristiche hanno reso i transformer backbone generici pratici per il rilevamento degli oggetti e la segmentazione di immagini ad alta risoluzione, non solo per la classificazione.

Come funzionano le finestre spostate#

Swin divide innanzitutto l'immagine in patch da 4×4 pixel e proietta ciascuna in un embedding di token, così un'immagine da 224×224 diventa una griglia di token 56×56 con 96 canali nel modello Tiny. L'attenzione globale su tutti i 3.136 token confronterebbe ogni token con tutti gli altri; Swin suddivide la griglia in finestre non sovrapposte di 7×7 token e calcola l'attenzione solo all'interno di ciascuna finestra. L'articolo esprime il costo dell'attenzione globale come 4hwC² + 2(hw)²C per una griglia h×w con C canali, rispetto a 4hwC² + 2M²hwC per finestre di M×M token, un valore lineare rispetto a hw.

Le finestre da sole non si scambierebbero mai informazioni, quindi ogni secondo blocco sposta la griglia delle finestre di mezza finestra, cioè 3 token, facendo sì che le nuove finestre attraversino i vecchi confini. Per mantenere costante il numero di finestre, l'implementazione fa scorrere ciclicamente la mappa delle caratteristiche e maschera l'attenzione tra token che nell'immagine originale non erano vicini. Ogni blocco aggiunge inoltre ai punteggi di attenzione un bias di posizione relativa appreso.

Tra una fase e l'altra, un livello di fusione delle patch concatena ciascun gruppo di 2×2 token vicini e lo proietta linearmente, dimezzando la risoluzione e raddoppiando i canali. Le quattro fasi producono mappe delle caratteristiche con risoluzioni pari a 1/4, 1/8, 1/16 e 1/32 di quella dell'input, gli stessi stride di ResNet; Swin si inserisce quindi nelle teste di rilevamento e segmentazione esistenti, come una rete piramidale di caratteristiche. L'implementazione torchvision mostra entrambi i meccanismi:

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)}")

Stampa Window [7, 7], shift [0, 0] then [3, 3], seguito dagli output delle fasi (1, 56, 56, 96), (1, 28, 28, 192), (1, 14, 14, 384) e (1, 7, 7, 768): ogni fase dimezza la griglia e raddoppia i canali, creando la piramide attesa dalle teste di predizione densa.

Swin Transformer, ViT e CNN a confronto#

Il ViT originale suddivide le immagini in patch da 16×16, mantiene un'unica risoluzione in tutti i livelli e applica l'attenzione globale, una soluzione adatta alla classificazione delle immagini ma costosa con gli input ad alta risoluzione del rilevamento e della segmentazione. Swin reintroduce due prior delle reti convoluzionali, la località e una gerarchia di caratteristiche, mantenendo però i pesi dipendenti dall'input del meccanismo di attenzione. Le sue finestre locali differiscono dall'attenzione a finestra scorrevole, in cui ogni token presta attenzione ai propri vicini, perché le finestre di Swin sono partizioni fisse condivise dai token, che si mappano in modo efficiente sulle moltiplicazioni tra matrici delle GPU.

Al momento del rilascio, il modello più grande, Swin-L preaddestrato su ImageNet-22K, ha raggiunto un'accuratezza top-1 dell'87,3% su ImageNet-1K, 58,7 box AP e 51,1 mask AP su COCO test-dev e 53,5 mIoU su ADE20K, i migliori risultati pubblicati allora nei benchmark di rilevamento e segmentazione semantica. Il suo successo ha dato impulso anche alla ricerca sulle convoluzioni: ConvNeXt di Meta (2022) ha modernizzato ResNet adottando scelte progettuali ispirate a Swin e ne ha eguagliato o superato l'accuratezza.

Swin può fungere da backbone per un modello Ultralytics personalizzato: il modulo TorchVision in un file YAML del modello carica swin_t di torchvision con i pesi ImageNet preaddestrati, mentre una testa di rilevamento YOLO si addestra sulla singola mappa delle caratteristiche con stride 32 che restituisce.

Varianti e applicazioni#

  • Swin Transformer V2: nel 2022 ha esteso il progetto a 3 miliardi di parametri e immagini fino a 1.536×1.536 pixel, usando l'attenzione coseno scalata e un bias di posizione continuo a scala logaritmica per mantenere stabile l'addestramento.
  • Riconoscimento delle azioni video: Video Swin Transformer estende le finestre a tre dimensioni, nello spazio e nel tempo, per classificare le azioni nei clip video.
  • Super-risoluzione e restauro: SwinIR usa blocchi Swin per ingrandire le immagini, ridurre il rumore e rimuovere gli artefatti JPEG.
  • Analisi delle immagini mediche: Swin-Unet e Swin UNETR combinano encoder Swin con decoder in stile U-Net; Swin UNETR segmenta i tumori cerebrali in volumi MRI 3D.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning