Dal testo all'immagine: fondamenti di CLIP
Ultim'ora: gli adolescenti si stanno rivolgendo a TikTok come loro motore di ricerca preferito, e a quanto pare funziona meglio di quanto si potrebbe pensare. Questo non sorprende, perché i motori di ricerca tradizionali non trovano sempre ciò che vuoi. Soprattutto se sei una persona visiva come me, probabilmente troveresti immagini e video molto più intuitivi e piacevoli rispetto al dover scorrere righe di testo. Ti sei mai chiesto, però, come fanno le macchine a comprendere un determinato testo e ad abbinarlo alle immagini che restituiscono?
In questa serie di blog, ti presenteremo il recupero di immagini basato sui testi, o servizi text-to-image. Il text-to-image è sempre stato un'importante applicazione cross-modale, e il settore in passato si affidava a soluzioni indirette che richiedono un'enorme quantità di dati generati dagli utenti per raggruppare le immagini e scoprirne le relazioni semantiche. Questo fino all'anno scorso, quando OpenAI ha sganciato una bomba sul settore con il rilascio di CLIP. OpenAI ha utilizzato lo straordinario numero di 400 milioni di coppie testo-immagine per costruire CLIP, così che possa apprendere concetti visivi basati su input in linguaggio naturale. Ora, dobbiamo conoscere alcune nozioni di base per comprendere i componenti fondamentali degli algoritmi di ricerca, di CLIP e del text-to-image.
Algoritmi di ricerca e similarità semantica
Gli algoritmi di ricerca, siano essi tradizionali o di nuova generazione, unimodali o cross-modali, non possono fare a meno della misura della similarità semantica, o meglio, della distanza semantica tra due cose. Questo può sembrare un po' astratto, quindi vediamo alcuni esempi. Cominciamo con lo spazio unidimensionale degli interi, che probabilmente è inciso nel tuo DNA fin dalla scuola elementare (anche se probabilmente allora non veniva formulato così). Ora, abbiamo 5 interi positivi {1, 5, 6, 8, 10}: dimmi, quale numero è più vicino a 5? Sì, è 6. Congratulazioni per esserti laureato dalla tua infanzia. Il motivo è che 6 ha la distanza più breve da 5, che è 1. La distanza qui è la distanza semantica tra 5 e 6.
Figura 1 Uno spazio unidimensionale di interi
Ora che sei nel machine learning, facciamo un minuscolo passo avanti per vedere come viene eseguita la ricerca testuale tradizionale. Se parli con qualcuno che ha già fatto ricerca testuale, molto probabilmente sentirai parlare spesso di TF-IDF. TF si riferisce a term frequency, cioè la frequenza dei termini, ovvero la frequenza delle parole. Immagina che ci sia uno spazio ad alta dimensionalità con tante dimensioni quante sono le parole in un dizionario. Se contiamo il numero di occorrenze di ciascuna parola in un articolo e impostiamo questo numero come valore nella dimensione corrispondente di questo spazio, possiamo descrivere qualsiasi articolo come una distribuzione di vettori sparsi in questo spazio vettoriale delle parole (sparsi perché un articolo di solito copre solo una frazione molto piccola delle parole nel dizionario).
Figura 2 Una dimostrazione dello spazio vettoriale delle parole
Questo è un modo di pensare molto semplice ma pratico. Come mostrato sopra, se due articoli sono simili nel loro ambito o contenuto, allora i vettori corrispondenti a questi due articoli non dovrebbero essere così distanti nello spazio vettoriale delle parole. Se i due articoli sono identici, allora la distanza tra i loro vettori di parole sarà 0. Nella ricerca testuale, estendiamo lo spazio unidimensionale degli interi positivi del nostro primo esempio a uno spazio vettoriale delle parole ad alta dimensionalità, ma in sostanza condividono lo stesso approccio: definire uno spazio che possa essere utilizzato per descrivere la semantica dei dati e determinare la distanza tra di essi.
Facciamo un altro minuscolo passo (sì, te lo aspettavi). Ora che abbiamo sistemato i testi, perché non mappare anche la semantica delle immagini nello spazio vettoriale delle parole, così da poter ottenere la cross-modalità testo-immagine?
Ma ovviamente non è così facile. I testi fondamentalmente ci offrono gratuitamente la loro semantica: hanno "parole" come unità semantica naturale. Le immagini non ce l’hanno. Non possiamo usare i loro singoli pixel per definirne i significati.
L’enigma della vettorializzazione senza unità semantiche naturali affliggeva un tempo il campo della ricerca di immagini e dei dati non strutturati in generale. La maggior parte dei tipi di dati (immagini, video, audio, nuvole di punti, ecc.) non è dotata di unità semantiche naturali. Non si è potuto risolvere efficacemente finché dati e potenza di calcolo non sono diventati abbastanza economici e le reti neurali non sono diventate popolari. Vediamo come questo problema viene risolto dalle reti neurali.
Figura 3 Livelli e architetture delle reti neurali convoluzionali
Una delle grandi caratteristiche di una rete neurale profonda è che è "abbastanza profonda" (Prego). Nella figura sopra, l’input a sinistra è un’immagine 224 x 224, e l’output a destra è un vettore a 4096 dimensioni. Da sinistra a destra, un’immagine attraversa molti livelli della rete neurale, e la rete neurale comprime gradualmente le informazioni spaziali sui pixel dell’immagine originale in informazioni semantiche. In questo processo, possiamo vedere che la dimensione spaziale si restringe mentre la dimensione semantica si allunga (non è l’affermazione più accurata, ma non ho trovato un modo migliore per dirlo). Essenzialmente, questo processo è una mappatura della semantica dell’immagine in uno spazio vettoriale reale con 4096 dimensioni. Rispetto alle tecniche descritte in precedenza, la vettorializzazione tramite reti neurali profonde presenta diversi vantaggi evidenti:
- Non richiede che i dati originali abbiano unità semantiche naturali, direttamente segmentabili, come le “parole”.
- La definizione di “somiglianza dei dati” è flessibile ed è determinata dai dati di addestramento e dalla funzione obiettivo, e può essere personalizzata per caratteristiche specifiche dell’applicazione.
- Il processo di vettorializzazione dei dati è il processo di inferenza del modello, che coinvolge principalmente operazioni matriciali e può sfruttare le capacità di accelerazione delle GPU moderne.
Ciò che CLIP ha fatto è collegare testi e immagini in modo cross-modale. Dal lato dei dati, OpenAI ha sviluppato un dataset su larga scala di coppie testo-immagine, WIT (WebImageText). Il modello viene addestrato usando un approccio di apprendimento contrastivo per prevedere se immagini e testi debbano essere abbinati. Il suo design è piuttosto semplice:
- Eseguire la codifica delle caratteristiche rispettivamente per testi e immagini;
- Proiettare le caratteristiche di testo e immagine dai rispettivi spazi di caratteristiche unimodali in uno spazio di caratteristiche multimodale;
- All’interno dello spazio multimodale, la distanza tra i vettori di caratteristiche di testi e immagini che dovrebbero essere coppie (campioni positivi) dovrebbe essere il più vicina possibile, e viceversa per i campioni negativi.
Figura 4 Apprendere modelli visivi trasferibili dalla supervisione del linguaggio naturale. Fonte immagine: https://arxiv.org/pdf/2103.00020.pdf
La chiave qui è il secondo passaggio, cioè proiettare le caratteristiche unimodali di testi e immagini in uno spazio di caratteristiche multimodale attraverso il livello di proiezione. Ciò significa che possiamo mappare la semantica di immagini e testi nello stesso spazio ad alta dimensionalità. Questo spazio semantico è il ponte che CLIP ha in serbo per la ricerca cross-modale testo-immagine. Ora possiamo codificare un testo descrittivo come vettore, trovare i vettori delle immagini con semantica simile, e poi trovare l’immagine originale che vogliamo attraverso questi vettori di immagine!
Nel complesso, è la stessa formula classica: spazio vettoriale più somiglianza semantica. L’importanza di CLIP è che ci aiuta a creare uno spazio ad alta dimensionalità che unifica la semantica di testi e immagini, dove più vicina è la semantica di testi e immagini, minore è la distanza tra i vettori corrispondenti.
Componenti di base di un servizio text-to-image
Un tipico servizio text-to-image contiene tre parti: lato richiesta (testi), algoritmo di ricerca (il “to”) e database sottostanti (immagini).
I database contengono immagini originali, i loro vettori e il modello di inferenza che codifica le immagini originali in vettori semantici. Di conseguenza, il lato richiesta coinvolge principalmente il modello di inferenza che codifica i testi in vettori semantici.
La parte “to” è il processo che collega le richieste, il database vettoriale e il database delle immagini. Un testo dal lato richiesta viene passato attraverso un modello per ottenere il suo vettore, che verrà poi confrontato nel database vettoriale per trovare i topK vettori di immagini più simili. I risultati vengono restituiti una volta che il programma individua le immagini originali che corrispondono ai vettori.
Figura 5 Componenti di base di un servizio Text-to-Image
Conclusione
Ora conosci i fondamenti della ricerca text-to-image e di CLIP! Nel prossimo articolo, metteremo in pratica ciò che abbiamo imparato qui costruendo un prototipo di servizio text-to-image, in soli cinque minuti!
Se ti piace questo articolo, perché non dai un’occhiata al nostro progetto? Apprezziamo stelle, fork o anche solo un piccolo clic da parte tua. Sentiti libero di farci le tue domande anche su Slack!
Informazioni sulla serie
“From Text to Image” è una serie di blog che introduce come usare CLIP per costruire un servizio text-to-image su larga scala, tra cui:
- Comprendere gli algoritmi di ricerca, CLIP e text-to-image;
- Costruire una demo text-to-image in 5 minuti;
- Argomento avanzato 1: distribuire un database vettoriale per il richiamo vettoriale su larga scala
- Argomento avanzato 2: distribuire un servizio di inferenza che ti consenta di elaborare oltre 1000 QPS di richieste di inferenza
- Argomento avanzato 3: compressione dei dati vettoriali
Continua a leggere

Zilliz Cloud Just Landed in Claude Code
The Zilliz Cloud Plugin brings the full power of Zilliz Cloud directly into your Claude Code terminal as natural-language conversations.

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.



