SigLIP
SigLIP trainiert Bild- und Text-Encoder mit einem paarweisen Sigmoid-Verlust statt der Softmax-Funktion von CLIP und senkt so den Speicherbedarf. Erfahre, wie SigLIP funktioniert, was SigLIP 2 auszeichnet und wie der Code aussieht.
SigLIP (Sigmoid-Verlust für das Vortraining von Sprache und Bildern) ist ein Verfahren von Forschern bei Google zum Training von Bild- und Text-Encodern mit Bild-Beschriftungs-Paaren. Der Name bezeichnet außerdem die damit trainierte Modellfamilie. Wie CLIP lernt SigLIP einen gemeinsamen Einbettungsraum, in dem ein Bild und eine passende Beschreibung nahe beieinander liegen. Der Unterschied liegt in der Verlustfunktion: SigLIP behandelt jedes Bild-Text-Paar in einem Batch als eigenständige Ja-Nein-Frage, die mit einer Sigmoidfunktion bewertet wird. Bei Softmax muss dagegen jedes Bild seine passende Beschriftung aus dem gesamten Batch auswählen. Die Änderung wurde in der SigLIP-Studie von 2023 vorgestellt. Sie senkt den Speicherbedarf, funktioniert besser bei kleinen Batchgrößen und machte SigLIP-Encoder zu einer verbreiteten Bildverarbeitungskomponente in Bild-Sprach-Modellen (VLMs).
So funktioniert der Sigmoid-Verlust#
Für einen Batch aus N Bild-Beschreibungs-Paaren berechnet SigLIP die Ähnlichkeit jedes Bild-Embeddings mit jedem Text-Embedding und erhält so N×N Werte. SigLIP multipliziert jeden Wert mit einer lernbaren Temperatur t, addiert einen lernbaren Bias b und wendet einen binären Log-Sigmoid-Verlust an: Die N echten Paare auf der Diagonalen werden als Treffer markiert, die übrigen N² − N Paare als Nichttreffer. Die Temperatur beginnt bei 10 und der Bias bei −10. Dadurch startet das Training nahe an der Annahme, dass fast jedes Paar nicht übereinstimmt. Zugleich werden große frühe Aktualisierungen aufgrund des Ungleichgewichts von einem positiven und N − 1 negativen Paaren pro Bild vermieden.
Der folgende PyTorch-Code berechnet diesen Verlust für vier Paare – einmal mit den passenden Beschreibungen und einmal mit Beschreibungen, die um eine Position verschoben sind:
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}")Ausgegeben werden matched captions: loss 1.21 und shuffled captions: loss 10.50. Sind die Beschreibungen verschoben, ist jedes auf der Diagonalen als Treffer markierte Paar ein Nichttreffer, und der Verlust steigt auf fast das Neunfache.
Der Verlustterm jedes Paars hängt nur von diesem Paar ab, sodass die vollständige N×N-Matrix nicht auf einem einzelnen Gerät vorhanden sein muss. Jeder Beschleuniger berechnet die Bewertungen für seine eigenen Bilder und Texte, gibt seine Text-Embeddings anschließend an den nächsten Beschleuniger weiter und wiederholt den Vorgang:
Ein Softmax-Verlust lässt sich nicht auf diese Weise aufteilen, da die Wahrscheinlichkeit jedes Bildes über alle Beschreibungen im Batch normalisiert wird.
SigLIP und CLIP#
Beide trainieren zwei Encoder mit kontrastivem Lernen. Sie unterscheiden sich darin, worüber der Verlust normalisiert wird:
- CLIP: Eine Softmax-Kreuzentropie über jede Zeile und jede Spalte der Ähnlichkeitsmatrix des Batches. Sie wird berechnet, nachdem jedes Gerät die Embeddings aller anderen Geräte gesammelt hat.
- SigLIP: Ein unabhängiger binärer Verlust pro Paar. In der Studie übertraf SigLIP bei kleinen Batchgrößen den Softmax-Verlust. Der Zugewinn durch größere Batches flachte ab; eine Batchgröße von 32k genügte. In Kombination mit einem eingefrorenen, vortrainierten Bild-Encoder erreichte das trainierte Modell nach zwei Tagen auf vier TPUv4-Chips bei ImageNet eine Zero-Shot-Genauigkeit von 84,5 %.
Der Verlust beeinflusst auch die Bewertungen bei der Inferenz: Ein SigLIP-Modell weist jedem Kandidatenlabel unabhängig eine Trefferwahrscheinlichkeit zu. Deshalb müssen die Wahrscheinlichkeiten einer Menge von Labels zusammen nicht 1 ergeben.
SigLIP 2#
SigLIP 2, veröffentlicht im Februar 2025, behält den Sigmoid-Verlust bei und ergänzt einen Beschriftungsdecoder, Selbstdestillation und maskierte Vorhersagen während des Trainings sowie eine Online-Datenaufbereitung. Die Encoder sind mehrsprachig und verbessern Lokalisierung und dichte Merkmale, die für darauf aufbauende Erkennung und Segmentierung wichtig sind. Eine NaFlex-Variante verarbeitet Bilder in mehreren Auflösungen und behält dabei ihr ursprüngliches Seitenverhältnis bei. Die Modelle gibt es in den Größen ViT-B, L, So400m und g. So400m ist eine größenoptimierte ViT-Variante mit 400 Millionen Parametern.
Anwendungen in der Praxis#
- Bild-Encoder für VLMs: Googles PaliGemma verwendet einen SigLIP-So400m-Bild-Encoder, und Gemma 3 nutzt für Bildeingaben einen SigLIP-Encoder mit 400 Millionen Parametern.
- Zero-Shot-Klassifizierung: In vielen Sprachen lassen sich in Textform angegebene Labels mit SigLIP 2 anhand eines Bildes bewerten, ohne einen Klassifikator zu trainieren.
- Semantische Suche: In einer Vektordatenbank gespeicherte Bild-Embeddings lassen sich mit Textanfragen oder anderen Bildern durchsuchen.
- Erkundung von Datensätzen: Die Ultralytics Platform erstellt mit einem solchen Bild-Text-Encoder für jedes Bild eines analysierten Datensatzes ein Embedding. Dadurch liegen visuell ähnliche Bilder im Streudiagramm „Clustering“ nahe beieinander. „Ähnliche Bilder finden“ liefert die ähnlichsten Bilder aus anderen Datensätzen. Eine Texteingabe wie „Gabelstapler in der Nähe einer Tür“ findet außerdem Bilder, die der Beschreibung ähneln.










