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é mechanizmy 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.


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.
  • Čo z toho máš: keď napíšeš vetu, nájdeš obrázky, ktoré sú jej „najbližšie“ — a naopak.

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.


2. Ako to funguje

Dva enkódery

  • textový enkóder zoberie vetu a spraví z nej vektor (embedding),
  • vizuálny enkóder (typicky Vision Transformer alebo CNN) zoberie obrázok a spraví z neho vektor.

Kontrastívne učenie

  • model dostáva veľký batch párov (obrázok, popis),
  • učí sa, aby správny pár bol v embedding priestore blízko,
  • a 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 — model rieši, ktorý popis patrí ku ktorému obrázku (a naopak). To je tzv. symetrická kontrastívna strata (InfoNCE).

Použitie pri inferencii

  • vyrobíš embedding pre text aj pre obrázky,
  • spočítaš podobnosť (najčastejšie cosine similarity),
  • vyberieš top-N najbližších.

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 zvyčajne normalizujú na jednotkovú dĺžku, takže podobnosť = skalárny súčin.


4. Zero-shot klasifikácia v praxi

Najefektnejšia ukážka CLIP je klasifikácia bez tréningu na konkrétne 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)
    # normalizácia + podobnosť
    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ť.


5. Prečo je to dôležité / kde sa to 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.
  • Automatické tagovanie a organizácia knižníc: triedenie fotiek bez ručného popisu.
  • Zero-shot klasifikácia: namiesto trénovania na pevný zoznam tried skúšaš textové popisy.
  • Kvalita datasetov: CLIP-like modely filtrujú, či obrázok zodpovedá textu — dôležité pri tréningu generatívnych modelov.
  • Stavebný blok multimodálnych systémov: CLIP enkóder je „v pozadí“ mnohých multimodálnych agentov a generátorov obrázkov (napr. ako vodítko pri difúznych modeloch).

6. CLIP a vektorové databázy

Typický produkčný pattern pre vyhľadávanie:

1. Pre každý obrázok v archíve spočítaj image embedding (offline).
2. Ulož embeddingy do vektorovej databázy (FAISS, pgvector, Qdrant...).
3. Pri dotaze spočítaj text embedding a nájdi najbližšie vektory (ANN).

Embeddingy z CLIP fungujú ako most medzi modalitami — uložíš obrázkové vektory, vyhľadávaš textom.


7. Výhody a obmedzenia

  • Výhody:
    • škáluje bez štítkovania v štýle „1 obrázok = 1 trieda“,
    • výborný na retrieval (nájdi, čo sedí),
    • umožňuje zero-shot tam, kde by si inak musel trénovať klasifikátor.
  • Obmedzenia:
    • citlivý na bias v dátach (učí sa z internetu),
    • nejde o „porozumenie“ v ľudskom zmysle — je to podobnosť v embedding priestore,
    • v špecifických doménach (medicína, priemyselné diely) býva bez doladenia slabší,
    • problémy s počítaním objektov a presnými priestorovými vzťahmi.
Stránka Silné stránky Typické limity
Retrieval rýchle a praktické omyly pri podobných konceptoch
Zero-shot netreba trénovať triedy závisí od kvality textových popisov
Robustnosť často lepšia než „naškatuľkované“ modely bias a doménové diery v dátach

8. 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, aj keď to tak nevolajú.
  • 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.
  • Vývoj: spravíš embeddingy obrázkov, uložíš do vektorovej DB, vyhľadávaš cez text embedding.
  • 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.

9. Príbuzné a nadväzujúce modely

CLIP odštartoval celú vlnu vision-language modelov:

  • OpenCLIP — otvorené reimplementácie trénované na verejných dátach.
  • SigLIP — náhrada kontrastívnej straty za sigmoidovú, lepšia efektivita.
  • Vision-language modely používané v multimodálnych asistentoch často stavajú na CLIP-podobnom vizuálnom enkóderi.

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.
  • Funguje cez dva enkódery + kontrastívne učenie, ktoré pritiahne správne text–obrázok páry k sebe.
  • Najväčší prínos je v retrieval a zero-shot scenároch; limity sú najmä bias a špecifické domény.
  • Aj keď CLIP nie je generátor, je dôležitý „neviditeľný“ komponent mnohých multimodálnych produktov.