Pobierz PDF

Learning Transferable Visual Models From Natural Language Supervision (CLIP)

Metadane

Streszczenie

CLIP (Contrastive Language-Image Pretraining) trenuje visual encoder i text encoder wspólnie na 400 milionach par obraz-tekst z internetu, używając contrastive loss. Rezultat: przestrzeń wspólna image-text embedding gdzie podobne obrazy i teksty są blisko siebie.

Killer feature dla naszego projektu: zero-shot classification. Nowa marka = dodaj tekst "Revolut geometric logo black" do knowledge base. Nie trzeba trenować modelu. CLIP natychmiast potrafi dopasować logo Revolut do tej opisu — bez żadnych przykładów logo.

Kluczowe Wnioski

  • Zero-shot ImageNet: 76.2% top-1 (bez fine-tuningu na ImageNet!)
  • Kontrastywny trening: cos_sim(image_enc(x), text_enc(t)) → 1 dla par, → -1 dla niepasujących
  • Robustność na dystrybucje: CLIP generaluje znacznie lepiej niż CNN trenowane na ImageNet
  • Encoder opcje: ResNet-50/101, ViT-B/32, ViT-B/16, ViT-L/14 (najlepszy)
  • Promptowanie: "a photo of [brand] logo" vs "[brand] corporate logo" — prompt engineering istotny

Architektura i zastosowanie

import clip
 
model, preprocess = clip.load("ViT-B/32")
 
# Financial Brand Knowledge Base — zero-shot
brand_descriptions = [
    "PayPal blue and white payment logo",
    "Revolut geometric black and white logo", 
    "PKO BP blue Polish bank logo",
    "Mastercard red and yellow circles logo",
    # ... 150+ marek
]
text_tokens = clip.tokenize(brand_descriptions)
text_embeddings = model.encode_text(text_tokens)  # pre-compute, store
 
# Inference: logo crop → match to brands
logo_crop = preprocess(logo_image)
image_embedding = model.encode_image(logo_crop.unsqueeze(0))
similarities = (image_embedding @ text_embeddings.T).softmax(dim=-1)
top_brand = brand_descriptions[similarities.argmax()]

Adversarial robustness CLIP vs ResNet

CLIP jest znacznie trudniejszy do ataku niż triplet-ResNet:

  • Atak musi jednocześnie fool visual encoder I semantic alignment z text encoder
  • Przestrzeń perturbacji skutecznie mniejsza: logo musi wyglądać jak inna marka ZARÓWNO wizualnie jak i semantycznie
  • Empirycznie: Zhao et al. 2023 pokazali że adversarial examples transferują się gorzej na CLIP niż ResNet

Wkład badawczy: “Po raz pierwszy pokazujemy, że CLIP-based brand matching jest naturalnie odporny na GAN adversarial logos (Lee 2023) i diffusion logos (Hao 2024) bez dodatkowego adversarial training.”

Metodologia

Trening kontrastywny na WIT (WebImageText) — 400M par (obraz, tekst alt-text) z internetu. Image encoder: ViT lub ResNet. Text encoder: Transformer. Loss: InfoNCE (softmax contrastive), temperatura t jako parametr uczony. Batch size: 32,768. Trening: 32 epochy, 256 GPU V100.

Główne Koncepcje

  • Contrastive loss (InfoNCE): maksymalizacja cos_sim dla par, minimalizacja dla niepasujących w batchu
  • Zero-shot transfer: klasyfikacja przez porównanie image embedding z text embeddingami klas
  • Prompt engineering: “a photo of a [CLASS]” jako domyślny template; ensembling wielu promptów poprawia jakość
  • WIT-400M: prywatny dataset OpenAI (otwarcie odtworzony jako MetaCLIP)

Wyniki

ModelImageNet 0-shotImageNet 0-shot w/ ensemble
ResNet-5059.6%63.3%
ViT-B/3263.4%66.6%
ViT-B/1668.3%70.4%
ViT-L/1475.3%76.2%
ViT-L/14@33676.2%79.0%

Przydatne Cytaty

  • “CLIP is trained to predict which of the N × N possible (image, text) pairings across a batch actually occurred.” (Section 2)
  • “CLIP matches the performance of the original ResNet-50 on ImageNet zero-shot without using any of the 1.28 million training examples.” (Abstract)
  • “Natural language is used to reference learned visual concepts (or describe new ones) enabling zero-shot transfer of the model to downstream tasks.” (Abstract)

Datasety

  • WIT-400M (prywatny, OpenAI) — odtworzony open-source jako MetaCLIP-400M (metaclip-400m.md)

Powiązane Tematy

  • OpenCLIP (Cherti 2023) — open-source reimplementacja z LAION
  • MetaCLIP (Xu 2023) — open-source odtworzenie WIT-400M
  • SigLIP (Zhai 2023) — alternatywna funkcja straty (sigmoid vs softmax)
  • LLM2CLIP (Wang 2024) — wzmocnienie text encodera przez LLM
  • DINOv2 (Oquab 2023) — self-supervised alternatywa bez text supervision
  • ViT (Dosovitskiy 2021) — CLIP używa ViT jako image encoder
  • PhishIntention (Liu 2022) — używa ResNet+triplet → nasz system zastępuje CLIP

Notatki

CLIP to główna innowacja w module M2 odróżniająca nasz system od PhishIntention/KnowPhish. Uzasadnienie: (1) zero-shot coverage dla nowych marek fintech bez retrainingu, (2) naturalna odporność na visual adversarial attacks, (3) 30k cytowań = powszechnie znana metoda, nie wymaga szczegółowego opisu architektury — wystarczy referencja + opis zastosowania.

Elementów w folderze: 0.