Skip to content

Latest commit

 

History

History
79 lines (46 loc) · 8.36 KB

File metadata and controls

79 lines (46 loc) · 8.36 KB

Reti Multi-Modali

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.

Contrastive Image Pre-Training (CLIP)

L'idea principale di CLIP è quella di confrontare i prompt testuali con un'immagine e determinare quanto bene l'immagine corrisponda al prompt.

Architettura CLIP

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.

CLIP per la Classificazione delle Immagini

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.

Generazione di Immagini con VQGAN+CLIP

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.

Architettura VQGAN+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.

Immagine prodotta da Pixray Immagine prodotta da Pixray Immagine prodotta da Pixray
Immagine generata dal prompt un ritratto ravvicinato ad acquerello di un giovane insegnante di letteratura con un libro Immagine generata dal prompt un ritratto ravvicinato a olio di una giovane insegnante di informatica con un computer Immagine generata dal prompt un ritratto ravvicinato a olio di un anziano insegnante di matematica davanti a una lavagna

Immagini dalla collezione Artificial Teachers di Dmitry Soshnikov

DALL-E

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:

Immagine prodotta da Pixray Immagine prodotta da Pixray Immagine prodotta da Pixray
Immagine generata dal prompt un ritratto ravvicinato ad acquerello di un giovane insegnante di letteratura con un libro Immagine generata dal prompt un ritratto ravvicinato a olio di una giovane insegnante di informatica con un computer Immagine generata dal prompt un ritratto ravvicinato a olio di un anziano insegnante di matematica davanti a una lavagna

Riferimenti

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.