CLIP
CLIP (Contrastive Language–Image Pretraining) je technika a zároveň modelová rodina, ktorá spája text a obrázky do spoločného priestoru reprezentácií. V praxi je to základ pre vyhľadávanie obrázkov podľa textu, zero-shot klasifikáciu a pomocný mechanizmus v generatívnych modeloch. Pôvodný CLIP predstavila OpenAI v roku 2021 a odvtedy sa stal jedným z najpoužívanejších „mostov" medzi rečou a obrazom — dnes v roku 2026 sú jeho architektúrne nástupníci jadrom väčšiny multimodálnych produktov na trhu.
1. Čo to je (definícia + analógia)
- Definícia: CLIP sa učí rozumieť tomu, ktoré texty „pasujú" ku ktorým obrázkom, bez toho, aby si mu musel ručne štítkovať milióny kategórií.
- Analógia: predstav si dve mapy sveta — jednu „textovú" a druhú „obrázkovú". CLIP je prevodník, ktorý ich naučí tak, aby rovnaké miesta mali rovnaké súradnice v oboch mapách. Keď potom stojíš na mieste označenom „slnečná pláž s palmami" v textovej mape, automaticky vieš, kde sa to isté nachádza na obrázkovej mape.
- Čo z toho máš: keď napíšeš vetu, nájdeš obrázky, ktoré sú jej „najbližšie" — a naopak. Nemusíš vedieť nič o názvoch súborov, tagoch ani kategóriách.
Kľúčový rozdiel oproti klasickým klasifikátorom: CLIP sa neučí pevný zoznam tried. Učí sa vzťah medzi ľubovoľným textom a ľubovoľným obrázkom. To mu dáva schopnosť narábať s pojmami, ktoré pri tréningu vôbec nevidel.
2. Ako to funguje
Dva enkódery
CLIP má dve vetvy, ktoré pracujú paralelne:
- Textový enkóder zoberie vetu alebo frázu a spraví z nej vektor (embedding) — číselné vyjadrenie „významu" textu v N-dimenzionálnom priestore. Pôvodný CLIP používal Transformer architektúru podobnú GPT.
- Vizuálny enkóder zoberie obrázok a spraví z neho vektor rovnakej dimenzie. Pôvodný CLIP testoval rôzne architektúry: ResNet (CNN) aj Vision Transformer (ViT). Dnes dominuje ViT.
Oba vektory žijú v tom istom priestore — to je kľúč. Text „čierny pes na snehu" a fotka čierneho psa na snehu musia pristáť blízko seba.
Kontrastívne učenie
Tréning prebieha bez ručného štítkovania tried. Model dostáva veľký batch párov (obrázok, textový popis) zozbieraných z internetu:
- Učí sa, aby správny pár bol v embedding priestore blízko — vysoká cosine similarity.
- Učí sa, aby bol ďaleko od všetkých nesprávnych párov v tom istom batchi.
V batchi o veľkosti N je N správnych párov a N²−N nesprávnych kombinácií. Model rieši, ktorý popis patrí ku ktorému obrázku (a naopak). Táto symetria je tzv. symetrická kontrastívna strata — technicky InfoNCE loss aplikovaná obojsmerne.
Veľkosť batchu je kritická: väčší batch = viac negatívnych príkladov = silnejší signál. Preto pôvodné CLIP tréningy bežali na stovkách GPU so stovkami tisíc obrázkov v jednom batchi.
Tréningové dáta
Pôvodný OpenAI CLIP sa trénoval na WebImageText — internom datasete 400 miliónov párov obrázok–text zozbieraných z webu. Komunita neskôr vytvorila verejné alternatívy: LAION-400M a LAION-5B (5 miliárd párov), na ktorých stojí väčšina open-source variantov.
Použitie pri inferencii
- Vyrobíš embedding pre dopytový text.
- Vyrobíš embeddingy pre kandidátske obrázky (zvyčajne offline, uložené vopred).
- Spočítaš cosine similarity medzi textovým a každým obrázkovým vektorom.
- Vrátiš top-N s najvyššou podobnosťou.
3. Mentálny model toku dát
Text → textový enkóder → text embedding ─┐
├─→ cosine similarity → ranking
Obrázok → vizuálny enkóder → image embedding ─┘
Embeddingy sa normalizujú na jednotkovú dĺžku (L2 normalizácia), takže cosine similarity = skalárny súčin. Výsledok je číslo medzi −1 a 1: čím vyššie, tým relevantnejšia dvojica.
4. Zero-shot klasifikácia v praxi
Najefektnejšia ukážka CLIP je klasifikácia bez akéhokoľvek tréningu na cieľové triedy. Stačí triedy opísať vetami:
import torch, clip
from PIL import Image
model, preprocess = clip.load("ViT-B/32")
image = preprocess(Image.open("foto.jpg")).unsqueeze(0)
# triedy ako textové popisy — žiadny tréning na ne netreba
labels = ["fotka psa", "fotka mačky", "fotka auta"]
text = clip.tokenize(labels)
with torch.no_grad():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
logits_per_image, _ = model(image, text)
probs = logits_per_image.softmax(dim=-1)
print(dict(zip(labels, probs[0].tolist())))
Chceš pridať novú triedu? Stačí pridať ďalší textový popis — netreba zbierať dáta ani pretrénovať model. Táto vlastnosť je revolučná v kontexte špecializovaných domén, kde zbieranie labelovaných dát je drahé alebo pomalé.
Tip na lepšie zero-shot výsledky: miesto holého názvu triedy použi popis v kontexte. Namiesto "pes" skús "fotografia psa" alebo "fotka domáceho zvieraťa, psa". CLIP bol trénovaný na prirodzené vety z webu, nie na jednoslovné tagy.
5. CLIP a vektorové databázy
Typický produkčný pattern pre vyhľadávanie v obrazovom archíve:
OFFLINE (raz pri indexácii):
Pre každý obrázok → vizuálny enkóder → image embedding → uložiť do vektorovej DB
ONLINE (pri každom dotaze):
Textový dotaz → textový enkóder → text embedding
→ ANN search vo vektorovej DB
→ vrátiť top-N obrázkov
Populárne vektorové databázy kompatibilné s CLIP embeddingy: FAISS (Meta, lokálne), pgvector (PostgreSQL rozšírenie), Qdrant, Weaviate, Pinecone. Všetky podporujú ANN (Approximate Nearest Neighbor) — rýchle hľadanie bez porovnávania s každým vektorom.
Embeddingy z CLIP fungujú ako most medzi modalitami: uložíš obrázkové vektory, vyhľadávaš textom — alebo naopak, uložíš textové vektory a vyhľadávaš obrázkom (reverzné vyhľadávanie).
6. Kde sa CLIP používa
- Vyhľadávanie obrázkov podľa textu: zadáš „čierny biliardový stôl v zadymenej miestnosti" a systém nájde najpodobnejšie fotky — bez akéhokoľvek manuálneho tagovania.
- Automatické tagovanie a organizácia knižníc: triedenie fotiek, marketingových assetov, eventových fotografií bez ručného popisu.
- Zero-shot klasifikácia: namiesto trénovania klassifikátora na pevný zoznam tried skúšaš textové popisy nových konceptov.
- Filtrovanie kvality datasetov: CLIP-like modely merajú, či obrázok zodpovedá textu — kľúčový krok pri príprave tréningových dát pre generatívne modely. LAION dataset vznikol práve takýmto CLIP-filtrom.
- Vodítko pri generovaní obrázkov: difúzne modely (Stable Diffusion, DALL-E) používajú CLIP alebo jeho nástupníkov na „navigáciu" procesu generovania podľa textu.
- Vizuálny enkóder v multimodálnych LLM: modely ako LLaVA, Gemini Vision, či GPT-4o používajú CLIP-kompatibilné vizuálne enkódery na konverziu obrázkov do reprezentácií, ktoré LLM rozumie.
7. Rodina modelov a aktuálny stav (2026)
CLIP odštartoval celú vlnu vision-language modelov. Tu je prehľad kľúčových variantov:
| Model | Autor | Hlavná inovácia | Stav |
|---|---|---|---|
| CLIP (pôvodný) | OpenAI (2021) | kontrastívne učenie text–obraz | uzavreté dáta, váhy verejné |
| OpenCLIP | LAION / komunita | reimplementácia na verejných dátach | open-source, aktívne udržiavaný |
| SigLIP | Google (2023) | sigmoid loss namiesto softmax, efektívnejší batch | vynikajúci pomer výkon/veľkosť |
| SigLIP 2 | Google (2024) | multi-resolution, captioning signal, lepší reasoning | aktuálne jeden z top open modelov |
| MetaCLIP | Meta (2023) | kurátorované dáta z Common Crawl (bez LAION) | lepší bias profil, reprodukovateľný |
| EVA-CLIP | BAAI (2023–2024) | škálovanie na 18B parametrov | rekordné výsledky na benchmarkoch |
| DFN-CLIP | Apple (2023) | Data Filtering Networks — automatický výber dát | dôraz na dátovú kvalitu |
Čo sa zmenilo od 2021 do 2026:
- Škálovanie: od 400M párov na miliardy; od 400M parametrov na desiatky miliárd.
- Tréningové dáta sú dnes kľúčovejšie než architektúra — MetaCLIP a DFN-CLIP to ukázali empiricky.
- SigLIP nahradil klasickú InfoNCE stratu v mnohých produkčných systémoch — sigmoid loss nevyžaduje globálny batch a škáluje lepšie na distribuovanom tréningu.
- Multimodálne LLM integrujú CLIP enkódery ako štandardný vizuálny modul — nejde už len o retrieval, ale o vstup do jazykových modelov.
8. Fine-tuning CLIP pre špecifické domény
Generický CLIP trénovaný na webových dátach má v úzkych doménach (medicína, priemysel, satelitné snímky, mikroskopia) horšie výsledky než doménovo špecifické modely. Riešenia:
1. Doménový fine-tuning (najčastejší): vezmi predtrénovaný CLIP, dotrénuj na malej doménovej sade s kontrastívnou stratou. Stačia tisíce (nie milióny) párov.
2. Linear probe: zmraz CLIP enkóder, dotrénuj iba lineárnu vrstvu na vrchu image embeddingov. Rýchle, lacné, funguje dobre pri dostatok dát.
3. Doménové CLIP modely: existujú špecializované verzie — BiomedCLIP (medicína), RemoteCLIP (satelitné snímky), PlantCLIP — trénované na doménových dátach od základu alebo fine-tuningom.
# Príklad: doménový fine-tuning s PyTorch Lightning (schématicky)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-5, weight_decay=0.1)
for batch in domain_dataloader:
images, texts = batch
image_feat = model.encode_image(images)
text_feat = model.encode_text(texts)
loss = clip_loss(image_feat, text_feat) # kontrastívna strata
loss.backward()
optimizer.step()
9. Výhody a obmedzenia
Výhody:
- Škáluje bez štítkovania — nepotrebuješ ručne anotovať kategórie, stačia textové popisy.
- Výborný na retrieval (nájdi, čo sedí) — praktická náhrada za klasické kľúčové slová.
- Umožňuje zero-shot klasifikáciu tam, kde by si inak musel zbierať dáta a trénovať.
- Robustný na distribučný posun — lepšie generalizuje mimo tréningovej distribúcie než klasické CNN klasifikátory.
- Modularita: vizuálny enkóder sa dá zapojiť do väčších systémov (multimodálnych LLM, difúznych modelov).
Obmedzenia:
- Bias z webových dát: CLIP zdedí stereotypy a chyby z miliárd internetových obrázkov s popismi.
- Nie je to „porozumenie" v ľudskom zmysle — je to štatistická podobnosť v embedding priestore.
- V úzkych doménach (medicína, priemyselné diely, satelitné snímky) bez doladenia zaostáva.
- Problémy s počítaním objektov a presnými priestorovými vzťahmi („vľavo od", „za", „nad").
- Negácia: CLIP narába zle s negáciami — „červené auto bez strechy" nemusí fungovať lepšie ako „červené auto".
- Textový enkóder má obmedzenie na dĺžku vstupu (pôvodný CLIP: 77 tokenov).
| Scenár | Silné stránky | Typické limity |
|---|---|---|
| Retrieval v archíve | rýchle, bez štítkovania, multimodálne | omyly pri vizuálne podobných konceptoch |
| Zero-shot klasifikácia | netreba trénovať triedy, flexibilné | závisí od kvality textových popisov |
| Doménové použitie | dobrý štartovací bod | bez fine-tuningu zaostáva za špecializovanými modelmi |
| Generatívne pipeline | štandardný vizuálny „jazyk" pre LLM | nenahradí hlbší multimodálny reasoning |
| Filtrovanie dát | efektívne rozpozná nesúlad text–obraz | falošné negatíva pri kreatívnych popisoch |
10. Praktické použitie — čo to znamená pre teba
- Bežný používateľ: veľa nástrojov na „hľadaj v galérii podľa textu" používa niečo CLIP-like pod kapotou, aj keď to tak nevolajú. Apple Photos, Google Photos, ale aj mnohé SaaS archívy.
- Práca s obsahom: CLIP-štýl vyhľadávania je ideálny na interné archívy (marketing, eventy, fotobanky) — ľudia prestanú hľadať podľa názvu súboru a začnú popisovať, čo potrebujú.
- Vývoj: postup je dnes štandardizovaný — vygeneruješ embeddingy offline, uložíš do vektorovej DB, pri dotaze spustíš textový enkóder a ANN search.
- Výber modelu v 2026: pre väčšinu use-casov odporúčame začať so SigLIP 2 alebo OpenCLIP ViT-G — sú verejné, dobre zdokumentované a dosahujú vynikajúci výkon bez komerčných obmedzení.
- Tip na lepšie výsledky: dotazy píš ako krátke popisy atribútov („červený neón, nočná ulica, dažďové odlesky"), nie ako sloh. CLIP lepšie reaguje na konkrétne vizuálne vlastnosti než na abstraktné koncepty.
Zhrnutie
- CLIP spája text a obraz do jedného embedding priestoru, takže vieš vyhľadávať a klasifikovať „podľa významu", nie podľa názvov súborov alebo pevného zoznamu tried.
- Funguje cez dva enkódery (textový + vizuálny) trénované kontrastívnym učením na stovkách miliónov internet párov.
- Najväčší prínos je v retrieval a zero-shot scenároch; limity sú najmä bias, slabá negácia a špecifické domény.
- Od roku 2021 vznikla bohatá rodina nástupníkov — SigLIP 2, MetaCLIP, EVA-CLIP — ktoré prekonávajú originál, ale stoja na rovnakom princípe.
- Aj keď CLIP sám o sebe nie je generátor ani asistent, je dnes neviditeľným komponentom väčšiny multimodálnych produktov — od vyhľadávania obrázkov cez difúzne modely až po vizuálne vstupy jazykových modelov.