DALL-E 2 è la nuova versione di DALL-E by OpenAI, un potente algoritmo di intelligenza artificiale in grado di generare immagini a partire da semplici testi. La prima versione, DALL-E è uscita il 5 gennaio 2021. A gennaio 2022 è uscita la seconda versione di DALL-E, con un significativo miglioramento nel fotorealismo delle immagini autogenerate e una risoluzione maggiore di queste. Abbiamo avuto accesso limitato alla versione beta di DALL-E 2 e ne scriviamo una breve recensione.

DALL-E 2

Innanzi tutto, cos’è DALL-E 2? É un algoritmo di intelligenza artificiale che sfrutta GPT-3 non tanto per produrre testo, ma per tradurre un testo inserito dall’utente e crearne una immagine. L’algoritmo è uscito in beta a gennaio 2022 e nel giugno del 2022 è stata aperta la waitlist per consentire agli utenti di provare la nuova versione di DALL-E. Attraverso DALL-E 2 è letteralmente possibile creare qualsiasi tipo di immagine (purchè si rispettino le norme di sicurezza imposte da OpenAI) semplicemente descrivendone le caratteristiche.

dall-e 2 horse

Un esempio preso da OpenAI creata con questo input “An astronaut riding a horse in space in a photorealistic style”

Come è stato allenato DALL-E 2

Per allenare DALL-E i programmatori di OpenAI hanno utilizzato il modello CLIP (Computational Linguistics for Information Processing), un modello di intelligenza artificiale che si è dimostrato particolarmente efficace nell’apprendimento di immagini (Shen et al., 2021).

I programmatori hanno quindi inizialmente preso un dataset (x,y). Per ogni x (una immagine) era associata una y (un testo descrittivo).

Il primo step è stato creare a partire dalle due variabili x e y, attraverso il modello CLIP, le rispettive immagine CLIP embeddata (zi) e il testo CLIP embeddato (zt). L’embedding di fatto crea uno spazio rappresentazionale in cui testi e immagini sono collegati tra loro.

Creazione del modello generativo

Una volta ottenuti i valori embeddati di zi e zt per generare nuove immagini per DALL-E è stato necessario costruire un modello generativo che crei nuove immagini. Per fare questo i programmatori hanno utilizzato due componenti:

  • Una prior definita da P(zi|y): cioè viene creata una immagine CLIP zi condizionata dal valore di y, cioè da un testo.
  • Un decoder definito da P(x|zi, y) che produce immagini condizionate dall’immagine CLIP zi (prodotta dalla prior nel passaggio precedente), e condizionata anche dall’eventuale valore di y (ossia il testo descrittivo dell’immagine)

Quindi detto in parole più semplici il decoder produce delle immagini a partire da immagini CLIP embeddate. Il prior produce immagini CLIP embeddate a partire da un testo.

Unendo queste due componenti si riesce quindi a creare un’immagine x a partire da una frase y. Una volta che il modello è quindi allenato è possibile fare in modo che un utente inserisca un testo descrittivo di una immagine (che verrà salvata nella variabile y) e che da questo testo venga prodotta una immagine x.

Espresso più formalmente: P(x|y)

 

dall-e-core-process

Sopra alla linea tratteggiata è descritto il processo di CLIP training in cui viene creato uno spazio rappresentazionale tra testo e immagine.
Sotto la linea tratteggiata è descritto il processo di generazione dell’immagine. Il testo CLIP embeddato viene passato al prior che produce un’immagine una immagine embeddata, questa viene utilizzata come condizione nel decoder che produce l’immagine finale.
Immagine presa da Ramesh et al., 2022, https://arxiv.org/abs/2204.06125

Cosa si può fare con DALL-E 2?

DAL-E 2 è quindi un sistema AI avanzato che consente di:

  • creare immagini completamente originali (cioè mai esistite prima) a partire da semplici stringhe di testo.
  • editare immagini già esistenti aggiungendo, togliendo o modificando degli elementi dell’immagine (funzione chiamata inpainting).
  • ottenere variazioni di una immagine creata dall’utente.

Qui sotto potete vedere un esempio di come funziona DALL-E 2 e la sua interfaccia (a dire il vero ad oggi ancora molto scarna di possibilità di personalizzazione del modello)

newyork painted by Mirò

E in questo video potete vedere la presentazione ufficiale di DALL-E 2, il video è prodotto e presente nella pagina ufficiale di DALL-E sul sito di OpenAI

Che differenze ci sono tra DALL-E e DALL-E 2?

DALL-E 2 rappresenta la versione evoluta di DALL-E. Il secondo è stato pubblicato a gennaio del 2021, mentre DALL-E 2 nel gennaio del 2022. L’AI è ancora in fase di beta e per accedervi è necessario iscriversi ad una waiting list. Il progetto è quindi attivo e in fase di sviluppo e nuove feature verranno pian pian integrate oltre a migliorare gli outcome finali. In generale le principali differenze tra DALL-E e DALL-E 2 sono:

  • DALL-E consentiva solo di creare immagini a partire da testo. DALL-E 2 consente anche di modificare parti dell’immagine, sempre usando il linguaggio naturale.
  • DALL-E 2 è migliore nella comprensione del testo richiesto e fornisce risultati più coerenti con la prompt dell’utente.
  • La risoluzione delle immagini prodotte da DALL-E 2 è aumentata rispetto alla versione precedente.
  • Con DALL-E 2 è possibile caricare immagini proprie e modificarle, oppure ottenere versioni differenti.

A cosa serve DALL-E 2?

In generale è difficile stabilire ora a cosa possa realmente servire DALL-E-2. Sicuramente avere la possibilità di generare immagini completamente originali può essere molto utile per blogger, per artisti di vario genere alla ricerca di una ispirazione, per un photo-editing veloce oppure semplicemente per stupire e giocare. Se ci basiamo su quello che dichiara OpenAI i principali scopi di DALL-E 2 sono:

  • consentire alle persone di esprimere se stesse “visivamente” in modi in cui prima non potevano esprimersi.
  • una immagine generata da una AI può dirci molte cose, ad esempio se e come un sistema artificiale ci “capisca” o se semplicemente ripeta ciò che ha imparato.
  • DALL-E consente a noi umani di capire come un sistema di AI avanzato veda e comprenda il nostro mondo.

Limiti di DALL-E 2

Ci sono ancora una serie di limiti che riguardano da una parte la capacità del modello di comprendere esattamente quello che desideriamo (o la nostra incapacità ad esprimerlo chiaramente al modello), dall’altra dai numerosi errori che derivano necessariamente da un progetto in fase di ricerca e sviluppo.

Ad esempio DALL-E 2 è paradossalmente molto scarso nello scrivere del testo quando espressamente glielo chiediamo (es. “una casa gialla con un lenziolo appeso bianco con la scritta “ti vogliamo bene””.

dall-e-love-you

Questo difetto specifico probabilmente è legato a come viene costruità l’immagine, per cui a livello computazionale il testo specifico “ti vogliamo bene” assume, come il resto della prompt, una forma probabilistica e non deterministica. Inoltre nella definizione della decodifica (quindi quando è attivo il decoder) un peso maggiore è dato all’immagine CLIP piuttosto che al testo inserito dall’utente (che è la nostra variabile y).

Norme di sicurezza e policy di DALL-E 2

Se volete diventare utenti di DALL-E 2 ci sono una serie di condizioni molto rigide che vanno rispettate, pena il ban e la fuoriuscita dal beta testing. Le norme sono legate ovviamente alle possibilità, praticamente infinite, di creare immagini che sembrino reali. Quindi non è consentito inserire immagini di uomini pubblici, per evitare deep fake, o in generale non è concesso caricare il proprio viso o quello di qualcun altro.

Altre norme riguardano eventuali contenuti a sfondo sessuale, di odio, razzismo. Per una più estesa trattazione delle norme potete semplicemente navigare nella pagina policy del sito di OpenAI.

Note e ulteriori approfondimenti

Shen, S., Harold Li, L., Tan, H., Bansal, M., Rohrbach, A., Chang, K.-W., … Keutzer, K. (2021). How Much Can CLIP Benefit Vision-and-Language Tasks? Retrieved from https://github.com/facebookresearch/grid-feats-vqa

Saharia, C., Chan, W., Saxena, S., Li, L., Whang, J., Denton, E., … Norouzi, M. (2022). Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding. Retrieved from http://arxiv.org/abs/2205.11487

Singh, G., Deng, F., & Ahn, S. (2021). Illiterate DALL-E Learns to Compose. Retrieved from http://arxiv.org/abs/2110.11405

Marcus, G., Davis, E., & Aaronson, S. (2022). A very preliminary analysis of DALL-E 2. Retrieved from http://arxiv.org/abs/2204.13807

Ge, Y., Xu, J., Zhao, B. N., Itti, L., & Vineet, V. (2022). DALL-E for Detection: Language-driven Context Image Synthesis for Object Detection. Retrieved from http://arxiv.org/abs/2206.09592

Conwell, C., & Ullman, T. (2022). Testing Relational Understanding in Text-Guided Image Generation. Retrieved from http://arxiv.org/abs/2208.00005