Dopo il successo dei modelli transformer per risolvere compiti di NLP, le stesse o simili architetture sono state applicate ai compiti di visione artificiale. C'è un crescente interesse nel costruire modelli che combinino capacità di visione e linguaggio naturale. Uno di questi tentativi è stato fatto da OpenAI, ed è chiamato CLIP e DALL.E.
L'idea principale di CLIP è quella di confrontare i prompt testuali con un'immagine e determinare quanto bene l'immagine corrisponda al prompt.
Immagine tratta da questo post sul blog
Il modello è addestrato su immagini ottenute da Internet e sulle loro didascalie. Per ogni batch, prendiamo N coppie di (immagine, testo) e le convertiamo in rappresentazioni vettoriali I, ..., T. Queste rappresentazioni vengono poi abbinate tra loro. La funzione di perdita è definita per massimizzare la similarità coseno tra i vettori corrispondenti a una coppia (es. I e T) e minimizzare la similarità coseno tra tutte le altre coppie. Questo è il motivo per cui questo approccio è chiamato contrastivo.
Il modello/libreria CLIP è disponibile su GitHub di OpenAI. L'approccio è descritto in questo post sul blog e in modo più dettagliato in questo articolo.
Una volta che questo modello è stato pre-addestrato, possiamo fornire un batch di immagini e un batch di prompt testuali, e il risultato sarà un tensore con probabilità. CLIP può essere utilizzato per diversi compiti:
Classificazione delle Immagini
Supponiamo di dover classificare immagini tra, ad esempio, gatti, cani e esseri umani. In questo caso, possiamo fornire al modello un'immagine e una serie di prompt testuali: "una foto di un gatto", "una foto di un cane", "una foto di un essere umano". Nel vettore risultante di 3 probabilità, dobbiamo semplicemente selezionare l'indice con il valore più alto.
Immagine tratta da questo post sul blog
Ricerca di Immagini Basata su Testo
Possiamo anche fare il contrario. Se abbiamo una collezione di immagini, possiamo passarla al modello insieme a un prompt testuale: questo ci darà l'immagine più simile al prompt fornito.
Apri il notebook Clip.ipynb per vedere CLIP in azione.
CLIP può essere utilizzato anche per la generazione di immagini a partire da un prompt testuale. Per fare ciò, abbiamo bisogno di un modello generatore che sia in grado di generare immagini basate su un input vettoriale. Uno di questi modelli è chiamato VQGAN (Vector-Quantized GAN).
Le idee principali di VQGAN che lo differenziano dai tradizionali GAN sono le seguenti:
- Utilizzo di un'architettura transformer autoregressiva per generare una sequenza di parti visive ricche di contesto che compongono l'immagine. Queste parti visive sono a loro volta apprese da CNN.
- Uso di un discriminatore di sotto-immagini che rileva se le parti dell'immagine sono "reali" o "false" (a differenza dell'approccio "tutto o niente" nei GAN tradizionali).
Scopri di più su VQGAN sul sito web Taming Transformers.
Una delle differenze importanti tra VQGAN e i GAN tradizionali è che questi ultimi possono produrre un'immagine decente da qualsiasi vettore di input, mentre VQGAN è più propenso a produrre un'immagine incoerente. Pertanto, è necessario guidare ulteriormente il processo di creazione dell'immagine, e questo può essere fatto utilizzando CLIP.
Per generare un'immagine corrispondente a un prompt testuale, iniziamo con un vettore di codifica casuale che viene passato attraverso VQGAN per produrre un'immagine. Successivamente, CLIP viene utilizzato per produrre una funzione di perdita che mostra quanto bene l'immagine corrisponda al prompt testuale. L'obiettivo è quindi minimizzare questa perdita, utilizzando la retropropagazione per regolare i parametri del vettore di input.
Una grande libreria che implementa VQGAN+CLIP è Pixray.
Immagini dalla collezione Artificial Teachers di Dmitry Soshnikov
DALL-E è una versione di GPT-3 addestrata per generare immagini a partire da prompt. È stato addestrato con 12 miliardi di parametri.
A differenza di CLIP, DALL-E riceve sia testo che immagine come un unico flusso di token per entrambi. Pertanto, da più prompt, è possibile generare immagini basate sul testo.
La principale differenza tra DALL-E 1 e 2 è che quest'ultimo genera immagini e arte più realistiche.
Esempi di generazione di immagini con DALL-E:
- Articolo su VQGAN: Taming Transformers for High-Resolution Image Synthesis
- Articolo su CLIP: Learning Transferable Visual Models From Natural Language Supervision
Disclaimer:
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica Co-op Translator. Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.








