KI‑Kompass
Kompass

Vision Transformer und CLIP

Bilder in Kacheln zerlegen und wie Text behandeln: warum das funktioniert, wann es CNNs schlägt und wie ein gemeinsamer Bild-Text-Raum entsteht.

·2 Min. Lesezeit·Von Fachredaktion Technik
DETAILGRAD
3 Abschnitte

Die Idee

Ein Sprachmodell zerlegt einen Satz in Wortstücke und lässt jedes Stück auf alle anderen schauen. Ein Vision Transformer macht dasselbe mit einem Bild: Er schneidet es in Quadrate von meist 16 mal 16 Pixeln und behandelt jedes Quadrat wie ein Wort.

Was daran anders ist

Ein CNN sieht zunächst nur die unmittelbare Nachbarschaft und wird erst über viele Schichten weitsichtig. Ein Transformer kann von der ersten Schicht an eine Kachel oben links mit einer unten rechts vergleichen. Das ist ein Vorteil bei Zusammenhängen über das ganze Bild und ein Nachteil, wenn wenig Daten vorliegen.

Zero-Shot-Klassifikation mit CLIP

# Prinzip, unabhaengig von der konkreten Bibliothek:
klassen = ["eine Palette mit Kartons",
           "eine leere Palette",
           "ein beschaedigter Karton"]

bild_vektor  = bild_encoder(bild)                    # 512 Werte, normiert
text_vektoren = [text_encoder(t) for t in klassen]   # je 512 Werte, normiert

# Kosinusaehnlichkeit, weil beide Vektoren auf Laenge 1 normiert sind.
scores = [float(bild_vektor @ t) for t in text_vektoren]
print(klassen[int(max(range(len(scores)), key=scores.__getitem__))])

Die Formulierung der Klassentexte ist dabei kein Detail. „ein Foto einer leeren Palette" schneidet regelmäßig besser ab als „leere Palette", weil das Trainingsmaterial überwiegend aus Bildunterschriften bestand.

Wann was

LageEmpfehlung
Unter 5.000 eigene BilderVortrainiertes CNN feinabstimmen
5.000 bis 100.000 BilderVortrainierter ViT oder modernes CNN, beides prüfen
Über 100.000 BilderViT skaliert besser
Keine Annotation vorhandenCLIP zero-shot als Ausgangswert
Randgerät, wenig RechenleistungCNN, meist mit trennbaren Faltungen

Die Zerlegung in Kacheln

Anzahl der Kacheln und Sequenzlänge

N = (H · W) / P² (+1 für das Klassentoken)

Die Anzahl der Kacheln ist die Bildfläche geteilt durch die Kachelfläche; dazu kommt ein zusätzliches Klassifikationstoken.

H, W
Bildhöhe und -breite
P
Kachelgröße, üblich 14 oder 16
N
Anzahl der Kacheln, also die Sequenzlänge

Bei 224 × 224 und P = 16 sind das 196 + 1 = 197 Token. Bei 512 × 512 bereits 1024 + 1. Da der Aufwand der Attention quadratisch in N wächst, ist die Verdopplung der Bildkantenlänge ein Faktor 16 im Attention-Aufwand: der Grund für hierarchische Varianten wie Swin, die Attention nur innerhalb von Fenstern rechnen.

Der kontrastive Verlust

InfoNCE, symmetrisch

L = ½ · [ CE( zᵢ·tⱼ/τ , i ) + CE( tᵢ·zⱼ/τ , i ) ]

Im Batch soll jedes Bild zu seinem eigenen Text passen und zu allen anderen nicht; dasselbe gilt in der Gegenrichtung.

zᵢ
der Bildvektor von Paar i
tⱼ
der Textvektor von Paar j
τ
Temperatur, gelernt, typisch um 0,01
N
Batch-Größe

Die Batch-Größe ist hier kein Effizienzparameter, sondern Teil des Verfahrens: jedes Element des Batches dient als Gegenbeispiel für alle anderen. CLIP wurde mit Batches von 32.768 trainiert, und kleinere Batches liefern messbar schwächere Repräsentationen.

Aufmerksamkeitskarten als Erklärung

Attention-Gewichte lassen sich als Karte über das Bild zeichnen und wirken wie eine Erklärung. Sie sind es nur eingeschränkt: Attention zeigt, welche Kacheln miteinander gerechnet haben, nicht, welche für das Ergebnis ursächlich waren. Für eine belastbare Begründung sind Verfahren wie Attention Rollout oder gradientenbasierte Zuordnung nötig, und auch die bleiben Zuschreibungen, keine Kausalaussagen. Wer eine solche Karte in eine technische Dokumentation nach AI Act aufnimmt, muss das benennen.

Passende Kurse und Quellen

StudieKostenlosEN

An Image is Worth 16x16 Words

Bilder als Folge von Feldern, verarbeitet wie Text. Die Arbeit, die Transformer in die Bildverarbeitung gebracht hat.

Für alle, die Bild und Text in einem Modell verarbeiten wollen.

KursKostenlos1500 Min.EN

Hugging Face Computer-Vision-Kurs

Von der Bildvorverarbeitung über Faltungsnetze bis zu Vision Transformern, mit lauffähigen Beispielen zu Erkennung und Segmentierung.

Für Entwicklung mit Bilddaten; setzt Python voraus, liefert dafür lauffähige Beispiele.

Hugging FaceZum Angebot
War diese Seite hilfreich?
Vision Transformer und CLIP