পাঠ ২৭ · ৩৫-এর মধ্যে · মডিউল ৪

CLIP — vision-language

CLIP — Contrastive Language–Image Pretraining
৮ মিনিট পড়া উচ্চ · Advanced Python কোডসহ

এই পাঠে যা শিখবেন

  • CLIP architecture — dual encoder
  • Contrastive learning (InfoNCE loss)
  • Zero-shot classification
  • Multimodal applications

১ · Vision-language alignment

Traditional CV — fixed class set (ImageNet 1000)। Real world — open vocabulary। "What's in this image?" answer infinite।

CLIP-এর insight: natural language-ই caption supervision। Web-এ billions of image-text pair available।

কেন্দ্রীয় ধারণা

CLIP = "image embedding ও text embedding-কে align করা"। Same embedding space-এ image ও তার description close, mismatched far। Zero-shot transfer enabled।

২ · CLIP architecture

(ক) Image encoder

  • ResNet বা ViT।
  • Image → feature vector (512-D for ViT-B)।
  • Linear projection → shared embedding space।

(খ) Text encoder

  • Transformer (GPT-style)।
  • Text → token embedding → final token vector (512-D)।
  • Linear projection → shared embedding space।

(গ) Shared 512-D space

  • Image embedding ও text embedding একই dimension।
  • Cosine similarity compare করা যায়।

৩ · Contrastive learning

Training-এ batch (e.g., 32K) image-text pair। Aim: matched pair close, mismatched far।

InfoNCE loss:

$$\mathcal{L} = -\frac{1}{N} \sum_i \log \frac{\exp(\text{sim}(I_i, T_i) / \tau)}{\sum_j \exp(\text{sim}(I_i, T_j) / \tau)}$$

  • $\text{sim}$ — cosine similarity।
  • $\tau$ — temperature (learnable)।
  • Positive: $(I_i, T_i)$ matched।
  • Negative: $(I_i, T_{j \ne i})$ — N-1 mismatched।
  • Symmetric loss — text-to-image direction also।

৪ · Training data

  • WIT (Web Image Text) — 400M image-text pair।
  • Crawled internet — caption, alt-text, etc।
  • Diverse — open vocabulary capture।
  • Noisy — কিন্তু scale-এ overcome।

৫ · Zero-shot classification

No fine-tune। Just rephrase classification as caption matching:

  1. Class names: ["cat", "dog", "car"]।
  2. Build caption: "A photo of a cat", "A photo of a dog", ...।
  3. Encode all caption — text embeddings।
  4. Encode image — image embedding।
  5. Cosine similarity image vs each caption।
  6. Max similarity → predicted class।

Result: ImageNet zero-shot — 76.2% top-1 (CLIP ViT-L)। Without ImageNet training!

Pre-CLIP: "I trained on cats and dogs only — anything else, I don't know"। CLIP: "I learnt language-image relationship — describe anything in words, I can find it visually"।
CLIP — dual encoder contrastive learning 📷 Image cat photo Image Encoder ViT-L (300M) image emb 512-D 📝 Text "a photo of a cat" Text Encoder Transformer (63M) text emb 512-D Cosine sim → matched/not Training: matched (cat ↔ "cat photo") high, mismatched low InfoNCE loss — softmax over batch negatives 400M image-text pair, web-scraped Zero-shot transfer to any classification by text prompt
CLIP — image ও text encoder একই embedding space-এ। Contrastive loss দিয়ে align।

৬ · CLIP use

Python · CLIP
# pip install git+https://github.com/openai/CLIP.git
import clip
import torch
from PIL import Image

device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = clip.load("ViT-L/14", device=device)

# Image preprocess
img = preprocess(Image.open("photo.jpg")).unsqueeze(0).to(device)

# Text candidates
texts = clip.tokenize([
    "a photo of a cat",
    "a photo of a dog",
    "a photo of a car"
]).to(device)

# Compute features
with torch.no_grad():
    image_features = model.encode_image(img)
    text_features = model.encode_text(texts)

# Cosine similarity
image_features = image_features / image_features.norm(dim=-1, keepdim=True)
text_features = text_features / text_features.norm(dim=-1, keepdim=True)
similarity = (image_features @ text_features.T).softmax(dim=-1)

print("Probabilities:", similarity[0].tolist())
# e.g., cat=0.92, dog=0.06, car=0.02

    
Zero-shot — no training, no labels। Just text descriptions। CLIP understanding language-image association।

৭ · CLIP applications

  • Zero-shot classification: any class via text prompt।
  • Image search: "find sunset over mountain" → matching image।
  • Stable Diffusion: text condition encoder।
  • DALL-E: generation conditioning।
  • Open-vocabulary detection: Grounding DINO, OWL-ViT।
  • Image captioning: CLIP feature → LM generate caption।
  • Content moderation: "adult content" probability।

৮ · Multilingual CLIP

  • M-CLIP: 50+ languages। Bangla supported।
  • OpenCLIP: open implementation, multilingual variant।
  • SigLIP (২০২৩): sigmoid loss replace softmax — multilingual better।
  • BLIP, BLIP-2: generative + understanding।

৯ · CLIP limitations

  • Counting weakness: "3 cats" — CLIP struggles।
  • Spatial reasoning: "cat to left of dog" — limited।
  • Bias: web-scraped data — gender/race bias।
  • Fine-grained: bird species — coarse only।
  • Compositional: "red cube on blue sphere" — wrong sometimes।

১০ · CLIP variants

  • ALIGN (Google): 1B noisy image-text pair।
  • BASIC, FILIP: token-level alignment।
  • SigLIP: sigmoid loss।
  • EVA-CLIP: EVA backbone।
  • BLIP-2: Q-Former — better captioning।
CLIP-এর success-এর key — scale + diverse data। Bangladesh-এ training cost prohibitive — pretrained CLIP/SigLIP use। Bangla specific finetune সম্ভব ছোট cost-এ।

ভাবনার প্রশ্ন

প্র ০১ "A photo of a cat" — কেন এই specific prompt? "Cat" alone কাজ করে কিন্তু কম accurate। Prompt engineering CV-তে?

CLIP-এর underrated detail — prompt template choice। "Prompt engineering" CV-তেও matters।

Why "A photo of":

  • Training data — captions look like "a photo of X"।
  • Model learnt this pattern।
  • Distribution match।

Effect on accuracy:

  • "cat" — 70%।
  • "a photo of a cat" — 76%।
  • "a photo of a {label}, a type of {category}" — 78%।
  • +8% from prompt alone!

Prompt ensembling:

  • Multiple prompt: "a photo of {}", "a picture of {}", "an image of {}"।
  • Average embeddings।
  • Robust।

Domain-specific:

  • Medical: "a chest X-ray showing {}"।
  • Satellite: "a satellite photo of {}"।
  • Drawing: "a sketch of {}"।

Bangla challenge:

  • OpenCLIP Bangla support — "একটি {} ছবি"।
  • Mixed: "a photo of {} (a {})" — English category + Bangla।
  • Test multiple, see what works।

Auto prompt:

  • CoOp (২০২২): learnable prompt token।
  • CoCoOp: conditional on image।
  • Adapt to dataset-specific।

মূল উপলব্ধি: Prompt = vital interface। Multimodal model-এ language-CV bridge careful design।

প্র ০২ CLIP zero-shot ImageNet 76% — supervised-এর কাছাকাছি। কীভাবে natural language supervision-এ এত strong?

CLIP-এর core insight — language label-এর চেয়ে rich।

ImageNet label:

  • 1 word/short phrase per image।
  • Discrete category।
  • 1000 class fixed।

Web caption:

  • Variable length sentence।
  • Continuous natural language।
  • Open vocabulary।
  • Compositional (color + object + action)।

Information density:

  • Caption "fluffy orange tabby cat sitting on red carpet" — much more signal than "cat"।
  • Multi-label implicit।
  • Spatial, attribute, context all encode।

Scale advantage:

  • ImageNet 1.4M label-image pair।
  • CLIP 400M image-text pair।
  • 300x more data + richer label।

Generalization:

  • Web-scraped — natural distribution।
  • Long-tail visual concept।
  • Adapts to new task without retraining।

Empirical:

  • CLIP linear probe ImageNet — 86%।
  • Above ResNet supervised on ImageNet itself।
  • Out-of-distribution robustness — far better।

Cost:

  • CLIP train — multi-million dollar GPU।
  • One time investment, broad applicability।
  • OpenAI-Anthropic-Google cost-affordable।

মূল উপলব্ধি: Label-এর nature matters। "Natural language as supervision" — paradigm shift।

প্র ০৩ Bangla CLIP — Bangladesh data-এর জন্য কী option? OpenCLIP মতো resources-এ Bangla আছে?

Multilingual CLIP — Bangla support gradually improving।

Available options:

  • M-CLIP (Multilingual CLIP): 50+ language, Bangla included। OpenAI CLIP-এর extension।
  • OpenCLIP: Apache 2.0 license, open weight। Multilingual variants।
  • SigLIP: Google, multilingual better generally।
  • NLLB-CLIP: Meta, 200+ language including Bangla।

Bangla-specific challenges:

  • Web data — Bangla less crawled than English।
  • Caption quality variable।
  • Code-mixed (Banglish) common।
  • Cultural concept — local clothing, food, festival।

Performance assessment:

  • Bangla zero-shot — 50-65% on standard benchmarks (vs 75%+ English)।
  • Bangladesh-specific (rickshaw, jamdani) — even lower।
  • Improvement actively researched।

Bangladesh strategies:

  • Use M-CLIP base: immediate availability।
  • Translate + English CLIP: Bangla → English → CLIP। Translation quality critical।
  • Finetune on local data: few thousand Bangla image-caption pair। CLIP base + LoRA finetune।
  • Synthetic data: existing Bangla NLP corpus + image generation।

Local data sources:

  • Bangladesh Wikipedia।
  • Prothom Alo, Daily Star image captions।
  • Bornom OCR, BUET datasets।
  • Crowdsourced caption।

Application:

  • Bangla image search engine।
  • Local content moderation।
  • Educational tool (student question — find image)।
  • Cultural digitization।

Cost reality:

  • Pretrain — multi-million dollar (impossible local)।
  • Finetune — $100-1000 (feasible)।
  • API use — pay-per-call।

মূল উপলব্ধি: Bangla CLIP — emerging field। Foundation model ecosystem leverage critical। BUET, BUP, NSU research groups — focus area।

প্র ০৪ Stable Diffusion-এ CLIP key role। Generation-এ কীভাবে use? Without CLIP, image generation কেমন হত?

CLIP — Stable Diffusion-এর "language understanding" component।

Role in generation:

  • User prompt: "A cat sitting on a moon"।
  • CLIP text encoder → 768-D embedding।
  • U-Net cross-attention input।
  • Each diffusion step — text guides generation।

Why CLIP encoder:

  • Image-text aligned → effectively "what would this prompt look like"।
  • Rich semantic — color, object, action capture।
  • Pre-trained — generation training save।

Without CLIP:

  • Pre-CLIP generation: GAN with class label (ImageNet)।
  • BigGAN — 1000 class। Unable to generate "purple elephant"।
  • Pixel-wise text-to-image (DALL-E 1) — autoregressive, slow।

Stable Diffusion-এ specifically:

  • Original SD: CLIP ViT-L/14।
  • SD 2: OpenCLIP ViT-H/14।
  • SD-XL: dual encoder (CLIP-L + OpenCLIP-G)।
  • SD 3: T5 encoder + CLIP।
  • FLUX: T5 + CLIP।

T5 vs CLIP:

  • T5 — pure text encoder, no vision alignment।
  • Better long prompt understanding।
  • Compositional reasoning improved।
  • Modern SD use both।

DALL-E 3:

  • OpenAI internal architecture।
  • GPT-4 likely involved in prompt understanding।
  • Best compositional generation।

Bangladeshi creative AI:

  • Bangla prompt translate → English → SD।
  • SD finetune on Bangladesh visual culture।
  • LoRA — Bengali New Year, jamdani style।

Future direction:

  • Native multimodal generation — Sora, Gemini।
  • Single model both text + image native।
  • CLIP-style separate encoder eventually phase out।

মূল উপলব্ধি: CLIP → diffusion model bridge। Without "understanding" component, generation quality limit। Multimodal foundation evolution।

অনুশীলন

  1. Zero-shot classify: CLIP দিয়ে একটি image-এ ৫ class candidate-এর softmax probability।

    Code section ৬-এ। 5 class change করে test।

  2. Similarity matrix: ১০ image, ১০ text caption — pairwise cosine similarity। Heatmap visualize।
    img_emb = model.encode_image(images)  # (10, 512)
    txt_emb = model.encode_text(texts)
    sim = (img_emb / img_emb.norm(dim=-1, keepdim=True)) @ (txt_emb / txt_emb.norm(dim=-1, keepdim=True)).T
    # matplotlib heatmap
  3. ভাবুন: Bangladesh news image archive search engine — CLIP কীভাবে অপ্রতিরোধ্য?

    (1) Index all image with CLIP embedding stored। (2) User Bangla query → translate to English (or M-CLIP)। (3) Cosine similarity search top-k। Daily Star, Prothom Alo style application।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোড রানার কাজ না করলে? Google Colab use করুন।
পূর্ববর্তী পাঠ
পাঠ ২৬ · Swin Transformer