Vai al contenuto

Sora, la nuova lanterna magica

Come funziona il nuovo, avanzato sistema di generazione video tramite Intelligenza Artificiale presentato da OpenAI?

Generare un video da una richiesta testuale è un processo, come si può intuire, molto più complesso che generare un’immagine. L’entrata in scena della dimensione temporale implica tutta una serie di passaggi, di vincoli, di dinamiche che il modello e la sottostante rete neurale deve “imparare” a gestire: coerenza delle forme, fluidità dei movimenti, gestione dei cambiamenti delle prospettive, sufficiente conoscenza del funzionamento del mondo reale, come gli effetti della forza di gravità. Un modello avanzato text to video (t2v) deve essere, come ha scritto in un post su X Jim Fan, Senior Research Scientist di Ndivia, un “motore fisico basato sui dati” in grado di simulare mondi, reali o immaginari.

Fino a qualche giorno fa i video generati da servizi come Runway o Pika si limitavano a micro-clip di qualche secondo, non particolarmente sofisticati.

Poi è arrivato Sora, il modello t2v di OpenAI.

Sora – Video di esempio

Seppur non ancora reso disponibile pubblicamente, sono bastati i video di esempio per evidenziare il salto di qualità (letteralmente) che Sora rende possibile: video di un minuto, estremamente realistici, come fossero estrapolati da una serie qualsiasi di Netflix, da un film di Nolan o un cortometraggio della Pixar. Tutti generati da semplici richieste testuali. Ognuno di quegli esempi avrebbe richiesto ore, giorni di lavoro agli studi di animazione o a una troupe sul set. L’immagine ironica spuntata sul web che vede la famosa scritta sulla collina di Los Angeles “Hollywood” sostituita da “Sorawood” è forse eccessiva ma certamente indicativa del futuro “generativo” che attende, volente o nolente, l’industria dell’audiovisivo (e non solo).

Conoscere almeno in linea di massima il funzionamento del modello utilizzato da Sora può aiutare a valutarlo con più razionalità e meno emotività.

Il paper tecnico diffuso da OpenAI non può forse neanche definirsi tale, visto che si tiene ben lontano dagli standard usuali del mondo accademico in fatto di rigore tecnico-scientifico e di trasparenza ma almeno cita gli studi di riferimento: leggerli può risultare molto utile per ricostruire la ricerca compiuta dal team di OpenAI (e anche per scoprire strumenti e tecniche interessanti). Inoltre conferma come i progressi compiuti dai modelli fondazionali (o di base, “foundation models”) siano dovuti alla circolazione del sapere attraverso gli articoli di ricerca tra i team internazionali – di università, centri di ricerca e aziende – impegnati in questo settore estremamente dinamico e interconnesso.

Cerchiamo di capire come funziona Sora.

Il modello utilizzato è una variante dei modelli “a diffusione” solitamente utilizzati per la generazione di immagini con richiesta o promp testuale (text to image).

Per generare immagini, vengono prima fornite al modello migliaia di immagini.

Il modello aggiunge quindi “rumore” rendendo via via l’immagine sempre più simile alla “nebbia statica” dei vecchi televisori. Per creare una nuova immagine, il modello segue il processo inverso: parte da questa “nebbia” ed estrae l’immagine.

Fase del modello a diffusione (“diffusion model“)

Sora, però, è un “diffusion transformer”. Utilizza anche il transformer, il modulo principale dei modelli linguistici di grandi dimensioni (“Large Language Model” o LLM) utilizzato, tra gli altri, da ChatGPT. Così come in questi modelli le parole vengono suddivise in parti più piccole detti tokens, il video viene suddiviso in patches, piccole unità comunque più grandi dei pixel.

La scelta di usare il transformer, a detta di OpenAI e di numerosi studi e ricerche recenti, è dettata dalla maggiore scalabilità e dalle migliori performance che riesce a ottenere nella gestione e manipolazione delle immagini.

Si è anche verificato che addestrare questo modello con video nella loro dimensione originale produce migliori risultati, arrivando a campionare video widescreen 1920x1080p e video verticali 1080×1920.

Abbiamo in precedenza introdotto i patches; questi frammenti non vengono estratti dal video originale, ma dalla sua codifica in uno spazio latente di dimensione minore.

Cerchiamo di spiegarci. Il video passa attraverso un autoencoder. Questa è un’architettura composta da due parti: un encoder (codificatore) che in pratica comprime il video (tipo file zip, per intenderci) temporalmente e spazialmente e un decodificatore che lo riporta al formato originale. Lo spazio latente è quello del video compresso. Per fare un esempio, un’immagine a colori 512×512 può essere compressa in un’immagine in scala di grigi 64×64 utilizzando un codificatore automatico con uno spazio latente di dimensione 64.

Autoencoder

Il modello con il suo trasformatore opera su questa versione compressa. Come rilevato in una ricerca citata da OpenAI “addestrando i modelli di diffusione su tale rappresentazione, raggiungono per la prima volta un punto quasi ottimale tra la riduzione della complessità e la conservazione dei dettagli”.

Prima di iniziare la fase di addestramento, i video passano da un modello che crea didascalie dettagliate: una ricerca ha dimostrato che descrizioni troppo brevi e/o inesatte influiscono negativamente sulla comprensione dei prompt text to image (e quindi anche t2v).

Sora – Fase di addestramento

Ricapitolando: nella fase di addestramento un video viene prima descritto nel dettaglio, poi viene “compresso”, quindi viene gradualmente trasformato – in questo spazio latente – in “nebbia”: il modello impara a decostruire, patch dopo patch, un video. Con un’operazione detta di de-noising lo stesso modello apprende come far riapparire il video, ricostituendolo passo dopo passo, sempre nello spazio latente: oggetti, animali, persone riemergono dalla foschia. Il modello riesce via via a generalizzare: impara a legare parole e frasi a migliaia di entità e dinamiche. In questo modo riesce, finito l’addestramento, a realizzare video partendo da una descrizione testuale e una “nebbia” fittizia. L’ultimo passaggio è attraverso il decodificatore, che sforna il video nella definizione voluta.

Sora – Fase generativa
Sora – Video di esempio

Come per tutte le reti neurali di questo tipo, anche il modello di Sora ha bisogno tantissimi dati (in questo caso sotto forma di video) per essere addestrato. Da dove provengono questi video? OpenAI non mantiene fede al suo nome e non rivela le fonti dei suoi dataset. Si sospetta che siano stati usati dati sintetici come video da motori di simulazione come Unreal, ma non è affatto da escludere l’utilizzo massiccio di video da piattaforme come Youtube.

Oltre che generare video della durata di circa un minuto da un testo, Sora può anche animare un’immagine, estendere un video indietro o avanti nel tempo, editarlo cambiandone per esempio sfondo o contesto, fondere due video ricavandone un video “chimera”. Vi invito a guardare gli esempi nella pagina di approfondimento di OpenAI.

Le capacità emergenti, quelle non direttamente volute ma che appaiono grazie all’apprendimento su larga scala sono particolarmente intriganti. Sempre citando il paper “Sora può generare video con movimento dinamico della fotocamera. Mentre la telecamera si sposta e ruota, le persone e gli elementi della scena si muovono in modo coerente attraverso lo spazio tridimensionale.” Persone, animali e oggetti riappaiono dopo essere stati momentaneamente nascosti. Le azioni hanno un effetto sul mondo ricreato: se si addenta un biscotto, questo appare mangiucchiato, se si dipinge, il quadro si modifica.

Sora – Video di esempio: interazione con il mondo

I video di esempio mostrati sono notevoli, anche se presentano, com’è normale da uno strumento appena nato, diverse imperfezioni. Artisti ed esperti videomaker stanno lavorando dietro le quinte per dare feedback al team di OpenAI. Solo quando reso disponibile e ci sarà quindi la possibilità di testarlo si potrà valutare il grado di innovazione che porterà nel settore audiovisivo e cinematografico. Sospetto sarà alto.