SigLIP
SigLIP addestra encoder di immagini e testo con una loss sigmoide a coppie invece della softmax di CLIP, riducendo l’uso di memoria. Scopri come funziona, SigLIP 2 e il codice.
SigLIP (funzione di perdita sigmoide per il preaddestramento di immagini e linguaggio) è un metodo sviluppato da ricercatori di Google per addestrare encoder di immagini e testo su coppie di immagini e didascalie, nonché il nome della famiglia di modelli addestrata con questo metodo. Come CLIP, apprende uno spazio condiviso di embedding in cui un'immagine e la didascalia che la descrive si trovano vicine. La differenza sta nella funzione di perdita: SigLIP tratta ogni coppia immagine-testo di un batch come una domanda sì o no a sé stante, valutata con una sigmoide, invece di chiedere a ogni immagine di scegliere la propria didascalia tra tutte quelle del batch con una softmax. Introdotta nell'articolo SigLIP del 2023, questa modifica riduce l'uso della memoria, funziona meglio con dimensioni dei batch ridotte e ha reso gli encoder SigLIP un componente visivo comune dei modelli di visione-linguaggio (VLMs).
Come funziona la funzione di perdita sigmoide#
Per un batch di N coppie immagine-didascalia, SigLIP calcola la similarità tra ogni embedding di immagine e ogni embedding di testo, ottenendo N×N punteggi. Moltiplica ogni punteggio per una temperatura apprendibile t, aggiunge un bias apprendibile b e applica una funzione di perdita log-sigmoide binaria: le N coppie corrette sulla diagonale sono etichettate come corrispondenze e le altre N² − N come non corrispondenze. La temperatura parte da 10 e il bias da −10, così l’addestramento inizia ipotizzando che quasi tutte le coppie non corrispondano ed evita grandi aggiornamenti iniziali dovuti allo squilibrio tra un positivo e N − 1 negativi per immagine.
Il codice PyTorch qui sotto calcola questa funzione di perdita per quattro coppie, una volta con le didascalie corrette e una volta con le didascalie spostate di una posizione:
import torch
import torch.nn.functional as F
# Normalized embeddings for 4 image-caption pairs: row i of each tensor belongs together
torch.manual_seed(0)
images = F.normalize(torch.randn(4, 64), dim=-1)
texts = F.normalize(images + 0.05 * torch.randn(4, 64), dim=-1)
# Learnable temperature and bias, at the values SigLIP initializes them to
t, b = 10.0, -10.0
# Every image-text pair is its own binary problem: +1 for a match, -1 for the other 12 pairs
labels = 2 * torch.eye(4) - 1
for name, captions in [("matched", texts), ("shuffled", texts.roll(1, dims=0))]:
logits = t * images @ captions.T + b
loss = -F.logsigmoid(labels * logits).sum() / 4
print(f"{name} captions: loss {loss:.2f}")Stampa matched captions: loss 1.21 e shuffled captions: loss 10.50. Quando le didascalie vengono spostate, ogni coppia diagonale etichettata come corrispondenza è una non corrispondenza e la funzione di perdita aumenta di quasi nove volte.
Il termine di perdita di ogni coppia dipende solo da quella coppia, quindi non è necessario che l’intera matrice N×N esista su un unico dispositivo. Ogni acceleratore calcola i punteggi delle proprie immagini rispetto ai propri testi, poi passa gli embedding di testo all’acceleratore successivo e ripete:
Una funzione di perdita softmax non può essere suddivisa in questo modo, perché la probabilità di ogni immagine viene normalizzata rispetto a tutte le didascalie del batch.
SigLIP a confronto con CLIP#
Entrambi addestrano due encoder con apprendimento contrastivo e differiscono per ciò su cui viene applicata la normalizzazione della funzione di perdita:
- CLIP: entropia incrociata softmax applicata a ogni riga e colonna della matrice di similarità del batch, calcolata dopo che ogni dispositivo ha raccolto gli embedding di tutti gli altri.
- SigLIP: una funzione di perdita binaria indipendente per ogni coppia. Nell’articolo, SigLIP ha superato la funzione di perdita softmax con batch piccoli; i vantaggi derivanti dall’aumento del batch si sono appiattiti e una dimensione di batch di 32k è risultata sufficiente. Abbinato a un encoder di immagini pre-addestrato e congelato, ha addestrato un modello che ha raggiunto un’accuratezza zero-shot su ImageNet dell’84,5% in due giorni su quattro chip TPUv4.
La funzione di perdita influenza anche i punteggi in fase di inferenza: un modello SigLIP assegna a ogni etichetta candidata una probabilità di corrispondenza indipendente, quindi le probabilità di un insieme di etichette non devono necessariamente sommare a 1.
SigLIP 2#
SigLIP 2, rilasciato a febbraio 2025, mantiene la funzione di perdita sigmoide, aggiunge un decoder per la generazione di didascalie, introduce l'auto-distillazione e la predizione mascherata durante l'addestramento, oltre alla curatela online dei dati. Gli encoder sono multilingue e migliorano la localizzazione e le feature dense, aspetti importanti per il rilevamento e la segmentazione basati su questi encoder. Una variante NaFlex elabora immagini a diverse risoluzioni mantenendone il rapporto d'aspetto nativo e i modelli sono disponibili nelle dimensioni ViT-B, L, So400m e g, dove So400m è un ViT con una struttura ottimizzata e 400 milioni di parametri.
Applicazioni nel mondo reale#
- Encoder visivi per VLM: PaliGemma di Google usa un encoder di immagini SigLIP So400m, mentre Gemma 3 usa un encoder SigLIP con 400 milioni di parametri per gli input di immagini.
- Classificazione zero-shot: le etichette formulate come testo vengono valutate rispetto a un’immagine senza addestrare un classificatore, in molte lingue con SigLIP 2.
- Ricerca semantica: gli embedding delle immagini archiviati in un database vettoriale possono essere cercati con query testuali o altre immagini.
- Esplorazione dei dataset: Ultralytics Platform calcola gli embedding di ogni immagine di un dataset analizzato con un encoder immagine-testo di questo tipo, così le immagini visivamente simili si trovano vicine nel grafico a dispersione Clustering; Find similar images restituisce le immagini più simili appartenenti ad altri dataset e una ricerca testuale come «carrello elevatore vicino a un ingresso» restituisce anche immagini che corrispondono alla descrizione.










