Vision Transformer (ViT)
Eine Transformer-Architektur für Computer Vision, die Bilder in Patches aufteilt und wie Tokens verarbeitet – ohne Convolutional Layers.
Ein multimodales Modell von OpenAI, das Text und Bilder in einen gemeinsamen Vektorraum einbettet – die Grundlage für Bild-Suche, DALL-E und viele Vision-Language-Modelle.
CLIP (Contrastive Language-Image Pretraining) hat 2021 die Computer Vision neu definiert. Statt ein Modell für eine spezifische Aufgabe zu trainieren, lernte CLIP ein universelles Verständnis der Beziehung zwischen Bildern und Sprache – und das durch schlichtes Lesen des Internets.
Das Training war radikal einfach: 400 Millionen Bild-Text-Paare aus dem Web, und das Modell lernt, dass zusammengehörige Bilder und Texte ähnliche Embeddings haben sollen. Das Ergebnis war überraschend mächtig: CLIP konnte Bilder in beliebige Kategorien einordnen, ohne je auf diesen Kategorien trainiert zu werden – Zero-Shot-Klassifikation auf ImageNet mit Accuracy vergleichbar zu überwachten Modellen von 2019.
Warum CLIP so wichtig ist:
- Es verbindet zwei Modalitäten (Text + Bild) in einem einzigen Vektorraum
- Zero-Shot-Fähigkeiten ohne task-spezifisches Training
- Wurde zur Grundlage für DALL-E, Stable Diffusion und fast alle modernen multimodalen Modelle
CLIP besteht aus zwei Encodern:
Text: "a photo of a dog"
→ Text Encoder (Transformer) → Text-Embedding [512d]
Bild: 🐕 (Foto eines Hundes)
→ Image Encoder (ViT oder ResNet) → Bild-Embedding [512d]
Cosine Similarity(Text-Embedding, Bild-Embedding) → hoch (0.9)
Das Training nutzt eine N×N-Matrix von Ähnlichkeiten:
| Text 1 | Text 2 | Text 3 | |
|---|---|---|---|
| Bild 1 | ✅ Hoch | ❌ Niedrig | ❌ Niedrig |
| Bild 2 | ❌ Niedrig | ✅ Hoch | ❌ Niedrig |
| Bild 3 | ❌ Niedrig | ❌ Niedrig | ✅ Hoch |
Die Diagonale soll maximiert, alles andere minimiert werden.
import clip
import torch
from PIL import Image
model, preprocess = clip.load("ViT-B/32")
image = preprocess(Image.open("dog.jpg")).unsqueeze(0)
text = clip.tokenize(["a photo of a cat", "a photo of a dog", "a photo of a car"])
with torch.no_grad():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
# Cosine Similarity
similarity = (image_features @ text_features.T).softmax(dim=-1)
# → [0.02, 0.95, 0.03] → "a photo of a dog" gewinnt CLIP ist wie ein Übersetzer zwischen Bildern und Sprache: Es lernt, dass das Bild eines Hundes und das Wort 'Hund' dasselbe bedeuten – und kann deshalb Bilder nach Textbeschreibungen suchen, ohne je explizit dafür trainiert zu werden.
Trainiert auf 400 Millionen Bild-Text-Paaren aus dem Internet
Zero-Shot-Klassifikation: Bilder klassifizieren ohne task-spezifisches Training
Basis für DALL-E, Stable Diffusion und viele multimodale Modelle
Semantische Bildsuche
Bilder per Textbeschreibung suchen – 'Sonnenuntergang am Meer' findet passende Fotos
Zero-Shot-Klassifikation
Bilder in beliebige Kategorien einordnen ohne Retraining
Content Moderation
Automatische Erkennung von problematischen Bildinhalten
Multimodale Modelle
Als Vision-Encoder in GPT-5, LLaVA und anderen VLMs
CLIP wird mit Contrastive Learning trainiert: Für ein Bild-Text-Paar soll das Modell lernen, dass diese zusammengehören (positives Paar), während es gleichzeitig lernt, dass das Bild nicht zu anderen Texten im Batch passt (negative Paare). Das erzeugt einen gemeinsamen Embedding-Raum.
Statt Klassen als Zahlen zu kodieren, beschreibt man sie als Text: 'a photo of a cat', 'a photo of a dog'. CLIP berechnet, welche Textbeschreibung am ähnlichsten zum Bild-Embedding ist – ohne je auf diesen Klassen trainiert zu haben.
CLIP war bahnbrechend, aber es gibt inzwischen bessere Modelle: SigLIP (Google), EVA-CLIP und MetaCLIP. Für die meisten Anwendungen sind diese Nachfolger vorzuziehen.