Sora: il nuovo modello text-to-video

Sora: il nuovo modello text-to-video

I modelli text-to-video estendono il concetto dei modelli text-to-image generando sequenze video che non solo devono essere visivamente coerenti e realistiche ma devono anche mantenere la coerenza temporale attraverso i frame. Ciò significa che, oltre a generare immagini che corrispondono alla descrizione testuale, il modello deve assicurare che queste immagini si evolvano nel tempo in modo logico e fluido.

Ne abbiamo già parlato diffusamente qui: Le sfide del text-to-video.

OpenAI ha annunciato il nuovo modello text-to-video Sora e descrive alcuni aspetti tecnici su questa pagina: Video generation models as world simulators.

Il modello Sora si ispira ai modelli linguistici di grandi dimensioni che acquisiscono capacità attraverso la formazione su dati su scala Internet. Il successo del paradigma LLM (Large Language Model) è reso possibile in parte dall’uso di token che uniscono elegantemente diverse modalità di testo: codice, matematica e vari linguaggi naturali.

Mentre i LLM hanno token di testo, Sora ha patch visive.

Se non ti ricordi che cos’è un token leggi l’articolo Normalizzazione, tokenizzazione e lemmatizzazione del testo.

Le patch visive sono un concetto chiave nell’ambito dell’elaborazione delle immagini e della computer vision, specialmente nei modelli di apprendimento profondo e nelle reti neurali convoluzionali (CNN).

Una “patch” visiva è una piccola porzione o frammento di un’immagine o di un video che viene utilizzata come input per un modello di machine learning. Queste patch contengono informazioni locali dell’immagine, come texture, colori o forme, e sono utilizzate dai modelli per apprendere rappresentazioni complesse dei dati visivi.

Per approfondire l’argomento delle reti neurali convoluzionali leggi l’articolo
Le reti neurali convoluzionali, un modo per vedere bene al minimo costo

Nel contesto dei modelli di intelligenza artificiale, come descritto nell’informativa riguardante Sora, le patch visive vengono estratte dagli input visivi (immagini o video) e trasformate in codici latenti, ossia rappresentazioni ad alta dimensionalità compressa. Queste rappresentazioni vengono poi utilizzate per addestrare il modello a generare nuove immagini o video che mantengano le caratteristiche visive degli input originali.

Rappresentazioni compresse

In questo articolo: Il potere di astrazione dell’AI: l’autoencoding abbiamo già spiegato in parte come avviene la compressione dei dati mediante una rete neurale.

Facciamo un semplice esempio…

Pensa a quando leggi una descrizione di un paesaggio in un libro: invece di vedere l’immagine, immagini nella tua testa come potrebbe essere, vero? Ecco, il nostro modello fa qualcosa di simile con questi codici latenti.

Usando queste rappresentazioni compresse, il nostro modello può poi allenarsi a creare nuove immagini che assomigliano molto a quelle che ha già visto. Quando il modello vuole creare una nuova immagine o un video, usa le sue conoscenze per assemblare questi codici latenti in modo che il risultato finale sia qualcosa di bello e sensato, proprio come l’immagine originale da cui ha imparato.

Il processo di utilizzo delle patch visive come token, simile all’uso di token di testo nei modelli linguistici, consente ai modelli basati su transformer di trattare dati visivi in modo efficiente. Permette al modello di concentrarsi su parti specifiche dell’immagine o del video per apprendere dettagli fini e caratteristiche globali della scena, facilitando compiti come la generazione di immagini, la sintesi video e l’editing di contenuti visivi.

L’approccio basato su patch è particolarmente potente perché consente ai modelli di apprendere e generare dati visivi di varie dimensioni, risoluzioni e rapporti di aspetto, rendendoli molto flessibili e capaci di affrontare una vasta gamma di applicazioni nella generazione di contenuti, nella visione artificiale e oltre.

Una dimensione in più per i video

Per i video, le “patch visive” comprendono una dimensione temporale oltre a quella spaziale. Questo significa che il modello deve considerare come le patch cambiano e interagiscono non solo nello spazio ma anche nel tempo. In alcuni approcci, ciò viene realizzato trattando i video come una sequenza di immagini (frame) e applicando tecniche di generazione immagine per immagine, con meccanismi aggiuntivi per assicurare la coerenza temporale. In altri, vengono utilizzati approcci più sofisticati che incorporano esplicitamente il tempo nella rappresentazione delle patch, consentendo al modello di apprendere direttamente la dinamica dei video.

Dato un video in input compresso, estraiamo una sequenza di patch spaziotemporali che fungono da token. Questo schema funziona anche per le immagini poiché le immagini sono solo video con un singolo fotogramma. La nostra rappresentazione basata su patch consente a Sora di esercitarsi su video e immagini con risoluzioni, durate e proporzioni variabili. Al momento dell’inferenza, possiamo controllare la dimensione dei video generati disponendo le patch inizializzate in modo casuale in una griglia di dimensioni adeguate.

Per illustrare il processo di compressione in codici latenti delle patch visive e la successiva ricostruzione a partire da questi codici, possiamo immaginare il processo come segue, suddiviso in quattro fasi principali:

Fase 1: Estrazione delle patch visive

Immagina di avere un’immagine grande. Iniziate dividendo questa immagine in tante piccole porzioni quadrate o rettangolari. Ogni porzione è chiamata “patch visiva”. Questo è simile a quando si divide un grande puzzle in tanti piccoli pezzi.

Se l’immagine è una foto di un paesaggio, ogni patch potrebbe contenere parti del cielo, alberi, una casa, ecc.

Fase 2: Compressione in codici latenti

Ogni patch visiva viene poi “compressa” tramite una rete neurale. Questo processo trasforma ogni patch in un codice latente, una rappresentazione molto più semplice e compatta che mantiene le informazioni essenziali della patch.

Come abbiamo già mostrato, puoi pensare a questo come a riassumere un capitolo di un libro in poche frasi chiave che catturano la sua essenza, perdendo alcuni dettagli ma mantenendo il significato principale.

Fase 3: Ricostruzione dalle patch

Successivamente, i codici latenti vengono utilizzati per “ricostruire” le patch visive. Questo avviene tramite un’altra rete neurale che funziona in modo inverso rispetto alla prima, trasformando i codici latenti di nuovo in patch visive.

È come prendere le frasi chiave di ogni capitolo di un libro e usare queste frasi per ricreare una versione semplificata di ogni capitolo.

Fase 4: Assemblaggio dell’immagine finale

Infine, le patch visive ricostruite vengono assemblate insieme per formare un’immagine completa. Questo può risultare in un’immagine nuova o modificata rispetto all’originale, a seconda di come i codici latenti sono stati manipolati. Questo è simile a mettere insieme tutti i pezzi del puzzle. Anche se ogni pezzo è stato semplificato, il quadro complessivo può ancora essere riconoscibile e persino presentare nuovi elementi interessanti.

Se parliamo di transformer dobbiamo pensare a un supervisore del puzzle. Questo transformer è molto importante perché permette al nostro modello di concentrarsi su ogni singolo pezzettino di immagine, studiandone i dettagli, ma senza dimenticare l’immagine intera, così come noi quando facciamo un puzzle cerchiamo di capire dove va ogni pezzettino guardando anche l’immagine sulla scatola.

Insomma, il nostro modello non solo mette insieme i pezzetti basandosi sui dettagli, ma impara anche a vedere il quadro grande, quindi può fare cose come creare un nuovo video o modificare una foto per aggiungere qualcosa che non c’era prima, proprio come un artista!

Per approfondire l’argomento sui modelli transformer leggi l’articolo
Il Transformer, la rete neurale che presta attenzione.