CLIP (Contrastive Language-Image Pre-training)
CLIP è un modello di OpenAI che proietta immagini e testo in uno stesso spazio condiviso, consentendo di classificare le immagini con etichette in linguaggio naturale. Scopri come funzionano l'addestramento e lo zero-shot.
CLIP (pre-addestramento contrastivo immagine-testo) è un modello di OpenAI che impara ad abbinare le immagini alle relative descrizioni testuali. Combina un encoder di immagini con un encoder di testo e li addestra entrambi affinché un'immagine e una didascalia che la descrive siano rappresentate da vettori vicini in uno spazio di embedding condiviso. Addestrato su 400 milioni di coppie immagine-didascalia raccolte sul web, CLIP può classificare immagini in categorie indicate solo tramite testo, senza esempi etichettati di quelle categorie: una capacità chiamata apprendimento zero-shot. Nel paper del 2021, il suo modello migliore ha raggiunto il 76,2% di accuratezza top-1 zero-shot su ImageNet, eguagliando il ResNet-50 originale completamente supervisionato senza usare nessuna delle 1,28 milioni di immagini etichettate su cui ResNet-50 era stato addestrato.
Come viene addestrato CLIP#
CLIP ha due encoder. L'encoder di immagini è un ResNet o un Transformer della visione (ViT), mentre l'encoder di testo è un Transformer a 12 strati con 63 milioni di parametri nella versione base. Una proiezione lineare mappa l'output di ciascun encoder nello spazio condiviso, dove ogni vettore viene normalizzato a lunghezza unitaria.
L'addestramento usa l'apprendimento contrastivo su batch di 32.768 coppie immagine-didascalia. Per un batch di N coppie, CLIP calcola la similarità coseno tra ogni immagine e ogni didascalia, ottenendo una matrice N×N la cui diagonale contiene le coppie corrette. Una softmax con loss di entropia incrociata applicata a ogni riga chiede a ciascuna immagine di scegliere la propria didascalia tra N, mentre una seconda loss applicata a ogni colonna chiede a ciascuna didascalia di scegliere la propria immagine. Una temperatura appresa ridimensiona le similarità prima della softmax.
Poiché le didascalie sono testi liberi, CLIP impara da ciò che viene descritto sul web, inclusi oggetti, scene, stili artistici, testo nelle immagini e azioni, invece di basarsi su un elenco fisso di classi.
Classificazione zero-shot#
Per classificare un'immagine, CLIP converte ogni etichetta candidata in una breve frase, come "una foto di un cane", converte l'immagine e sceglie l'etichetta con la similarità coseno più alta. La formulazione del prompt conta: il paper riporta che il solo template "Una foto di {label}." ha migliorato l'accuratezza su ImageNet dell'1,3%, mentre la media degli embedding testuali di 80 template ha aggiunto un ulteriore 3,5%. La pipeline Hugging Face Transformers qui sotto racchiude ogni etichetta nel template "Questa è una foto di {}." ed esegue il modello originale ViT-B/32:
from transformers import pipeline
# Load OpenAI's CLIP ViT-B/32 for zero-shot image classification
classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")
# The classes are free-form text, chosen at inference time
labels = ["a city bus", "a tram", "a delivery truck", "a bicycle"]
predictions = classifier("https://ultralytics.com/images/bus.jpg", candidate_labels=labels)
# Scores are a softmax over the image's similarity to each caption
for prediction in predictions:
print(f"{prediction['label']}: {prediction['score']:.3f}")Stampa a city bus: 0.657, a tram: 0.341, a delivery truck: 0.001 e a bicycle: 0.000. Il tram, un altro grande veicolo per il trasporto di passeggeri, ottiene quasi tutta la probabilità rimanente; per usare nuove etichette basta fornire un nuovo elenco di stringhe.
Applicazioni nel mondo reale#
- Ricerca semantica: le raccolte di immagini vengono convertite in embedding una sola volta e archiviate in un database vettoriale. Una query testuale come "scarpe da ginnastica rosse su un pavimento di legno" viene convertita in embedding al momento della ricerca e confrontata con le immagini, che vengono così trovate in base al contenuto senza tag manuali.
- Generazione da testo a immagine: Stable Diffusion 1.x condiziona il generatore di immagini sugli embedding testuali di CLIP ViT-L/14; la similarità CLIP è ampiamente usata per valutare quanto un'immagine generata rispetti il prompt.
- Rilevamento a vocabolario aperto: I modelli YOLO-World di Tencent AI Lab, disponibili nel pacchetto Ultralytics, codificano i nomi delle classi passati a
set_classescon l'encoder testuale ViT-B/32 di CLIP; un rilevatore addestrato una sola volta può quindi individuare per nome "zaino rosso" o "carrello elevatore". OWLv2 di Google si basa sugli encoder di immagini e testo preaddestrati di CLIP, e la classifica VLM lo confronta con altri rilevatori a vocabolario aperto e VLM su dataset di rilevamento del mondo reale. - Encoder visivi per i VLM: molti modelli linguistici visivi partono da un encoder di immagini CLIP preaddestrato. LLaVA, ad esempio, passa le caratteristiche di CLIP ViT-L/14 a un modello linguistico.
- Filtraggio dei dataset: i grandi dataset aperti di immagini e testo, come LAION-5B, conservano solo le coppie web la cui similarità immagine-testo CLIP supera una soglia, eliminando le didascalie che non descrivono l'immagine.
CLIP e approcci correlati#
- Classificatori con apprendimento supervisionato: un classificatore standard ha un output per ogni classe di addestramento e non può valutare una classe mai vista. Il "classificatore" di CLIP è l'insieme degli embedding testuali, quindi cambia ogni volta che cambiano le etichette.
- SigLIP: la variante di Google sostituisce la softmax sull'intero batch di CLIP con una loss sigmoide che valuta ogni coppia immagine-testo in modo indipendente, riducendo l'uso di memoria e funzionando meglio con batch piccoli.
- Apprendimento contrastivo autosupervisionato: metodi come SimCLR confrontano due viste aumentate della stessa immagine e imparano usando solo immagini. CLIP confronta due modalità, collegando così le caratteristiche delle immagini alle parole.
- VLM generativi: CLIP valuta la similarità immagine-testo e non può scrivere una didascalia né rispondere a una domanda. I modelli generativi collegano un modello linguistico a un encoder di immagini, spesso lo stesso encoder di CLIP.
Limiti#
L'accuratezza zero-shot di CLIP cala con categorie molto specifiche, come i modelli di aerei o automobili, nel conteggio degli oggetti e in attività astratte, come la stima delle distanze. Inoltre apprende i bias delle didascalie web. Poiché CLIP ha imparato a leggere il testo nelle immagini, quel testo può ingannarlo: nella ricerca sui neuroni multimodali di OpenAI, una mela con un'etichetta scritta a mano con la parola "iPod" è stata classificata come un iPod.










