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

Vision Transformer (ViT)

Un Vision Transformer (ViT) suddivide un'immagine in patch e le mette in relazione con l'attenzione di sé. Panoramica dell'architettura, delle varianti e dei compromessi rispetto alle CNN.

Un Transformer per la visione (ViT) è una rete neurale che applica alle immagini l'architettura transformer sviluppata per la modellazione del linguaggio. Suddivide un'immagine in patch di dimensioni fisse, trasforma ogni patch in un embedding di token ed elabora la sequenza con l'autoattenzione, così che ogni patch possa attingere alle informazioni di tutte le altre fin dal primo strato. I ricercatori di Google hanno introdotto l'architettura nel lavoro "An Image is Worth 16x16 Words", dimostrando che un transformer puro, privo di strati di convoluzione, eguaglia le prestazioni delle reti neurali convoluzionali (CNNs) più avanzate nella classificazione delle immagini quando viene preaddestrato con dati sufficienti. Oggi i ViT fungono da encoder di immagini per i modelli di visione e linguaggio, i modelli fondazionali per la segmentazione e i backbone autosupervisionati.

Come funzionano i Vision Transformer#

Un ViT trasforma un'immagine in una sequenza e la elabora come testo. I passaggi seguenti usano ViT-Base/16 su un'immagine da 224×224:

  1. Embedding delle patch: l'immagine viene suddivisa in patch da 16×16 pixel, formando una griglia 14×14 di 196 patch. Ogni patch viene appiattita e moltiplicata per una matrice appresa per ottenere un embedding a 768 dimensioni, generalmente implementato come una convoluzione 16×16 con stride 16.
  2. Token di classe ed embedding posizionali: un token di classe apprendibile viene anteposto alla sequenza e a ogni token vengono aggiunti embedding posizionali apprendibili. L'attenzione da sola ignora l'ordine, quindi questi embedding sono l'unica fonte di informazioni sulla posizione da cui proviene ciascuna patch.
  3. Encoder Transformer: una serie di blocchi identici — 12 in ViT-Base — alterna la self-attention multi-head, che mescola le informazioni tra tutti i token, a un MLP a due strati con attivazioni GELU, che trasforma separatamente ciascun token. La normalizzazione degli strati precede ogni sottostrato, avvolto da una connessione residua.
  4. Head: l'output finale del token di classe alimenta un classificatore lineare. Nei compiti densi, come la segmentazione, si usano invece i token delle patch, rimodellati in una griglia 14×14.

Il codice PyTorch seguente crea la sequenza di token di una singola immagine e la passa attraverso un unico blocco encoder.

import torch
from torch import nn

# Impostazioni ViT-Base/16: patch 16x16, token a 768 dimensioni, 12 head di attenzione
image = torch.randn(1, 3, 224, 224)
patch_embed = nn.Conv2d(3, 768, kernel_size=16, stride=16)  # una proiezione lineare per patch

# Suddividi l'immagine in una griglia 14x14 di patch e appiattiscila in 196 token
tokens = patch_embed(image).flatten(2).transpose(1, 2)

# Anteponi un token di classe apprendibile e aggiungi embedding posizionali apprendibili
cls_token = nn.Parameter(torch.zeros(1, 1, 768))
pos_embed = nn.Parameter(torch.zeros(1, 197, 768))
tokens = torch.cat([cls_token, tokens], dim=1) + pos_embed

# Un blocco encoder pre-norm in cui ogni token presta attenzione a tutti gli altri
block = nn.TransformerEncoderLayer(
    d_model=768, nhead=12, dim_feedforward=3072, activation="gelu", batch_first=True, norm_first=True
)
print(block(tokens).shape)

Stampa torch.Size([1, 197, 768]): i 196 token delle patch più il token di classe, tutti ancora a 768 dimensioni, pronti per il successivo dei 12 blocchi di ViT-Base.

Dimensioni e varianti dei modelli#

I nomi ViT indicano le dimensioni del modello e quelle delle patch: ViT-B/16 è il modello Base da 86 milioni di parametri con patch 16×16; i modelli Large e Huge hanno rispettivamente 307 milioni e 632 milioni di parametri. Patch più piccole producono più token, migliorando i dettagli a un costo computazionale più elevato. Diverse varianti hanno modificato l'addestramento o la struttura dei ViT:

  • DeiT: una ricetta di addestramento con aumentazione intensa e un token di distillazione, che permette di addestrare ViT competitivi con il solo ImageNet-1k, senza dati aggiuntivi di preaddestramento.
  • Swin Transformer: calcola l'attenzione all'interno di finestre locali sfalsate e unisce le patch tra le varie fasi, producendo una gerarchia simile a quella delle CNN adatta al rilevamento e alla segmentazione.
  • Autoencoder mascherati (MAE) e DINOv2: metodi autosupervisionati che preaddestrano i ViT su immagini senza etichette, ricostruendo le patch mascherate nel caso di MAE e facendo corrispondere gli output di una rete insegnante nel caso di DINOv2.
  • CLIP e SigLIP: encoder di immagini ViT addestrati ad associare le immagini alle rispettive didascalie, ampiamente riutilizzati come componente visiva dei modelli multimodali.

Applicazioni#

Vision Transformer e CNN#

Le CNN incorporano due presupposti in ogni strato: la località, perché ogni filtro osserva un piccolo intorno, e l'equivarianza alla traslazione, perché lo stesso filtro viene applicato in ogni posizione. A parte la griglia delle patch, un ViT deve apprendere dai dati la struttura spaziale. Nell'articolo originale, i ViT addestrati solo su ImageNet — 1,3 milioni di immagini — hanno ottenuto punteggi inferiori di alcuni punti percentuali rispetto ai ResNet di dimensioni comparabili; il preaddestramento sul dataset JFT-300M da 300 milioni di immagini ha portato ViT-H/14 all'88,55% di accuratezza top-1 su ImageNet. L'altro fattore distintivo è il costo. La self-attention confronta ogni token con tutti gli altri, quindi raddoppiare la lunghezza di un lato dell'immagine quadruplica il numero di token e moltiplica per 16 il costo dell'attenzione. Flash attention riduce il traffico di memoria di questo calcolo, mentre l'attenzione a finestre limita i confronti stessi. Ultralytics esegue il Segment Anything Model di Meta, il cui checkpoint sam_b.pt codifica ogni immagine 1024×1024 con un backbone ViT-B: le patch 16×16 formano una griglia 64×64 di 4.096 token, perciò 8 dei suoi 12 blocchi applicano l'attenzione solo all'interno di finestre 14×14 e 4 usano l'attenzione globale.

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