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.