Cerca nel blog

2024/01/06

Come generare immagini sintetiche di qualità senza avere computer superpotenti: Google Colab

Uno dei limiti della generazione di immagini attraverso software basati sull’intelligenza artificiale è la necessità di disporre di schede grafiche molto potenti e di RAM in abbondanza. Questi software, infatti, hanno una fame eccezionale di prestazioni, e comprensibilmente molti (me compreso) non se la sentono di investire qualche centinaio di euro (o più) per attrezzarsi specificamente a questo scopo.

C’è però un’alternativa che non richiede potenza di calcolo locale dell’utente. Si chiama Google Colaboratory, abbreviato in Colab, e consente di usare gratuitamente (ma a certe condizioni e con certe restrizioni) le potenti risorse hardware di Google per eseguire codice Python e vederne i risultati dentro una finestra del proprio browser.

Questo permette, per esempio, di eseguire su qualunque computer dotato di browser un generatore di immagini noto come Fooocus (si scrive proprio così, con tre O), gratuito e open source (licenza GPL-3.0) e relativamente più semplice da usare rispetto alle alternative, ottenendo tempi di generazione fulminei, misurabili in manciate di secondi. Con tempi di risposta del genere è possibile imparare molto in fretta come funzionano questi software e capire come costruire bene i complessi prompt (descrizioni) che dicono al software che genere di immagine produrre.

Per usare Fooocus in Colab è sufficiente andare a questo indirizzo con un browser e con un normale account Google:

https://colab.research.google.com/github/lllyasviel/Fooocus/blob/main/fooocus_colab.ipynb

Cliccate su Connect in alto a destra e attendete qualche istante: dovrebbe comparire l’indicazione T4. Se non compare, cliccate su Runtime - Change runtime type e scegliete Python 3 e T4 GPU.

Fatto questo, cliccate sull’icona Play a sinistra, ignorate pure eventuali avvisi a proposito di qualcosa “not authored by Google” e cliccate su Run anyway. A questo punto dovete aspettare che il software venga installato sulla macchina remota che state utilizzando.

Alla fine dell’installazione otterrete una lunga serie di messaggi, uno dei quali include una riga simile alla seguente:

Running on public URL: https://[numero].gradio.live

Questo è un link temporaneo che dura 72 ore: cliccandovi sopra accedete all’interfaccia di Fooocus. Qui potete sbizzarrirvi a immettere prompt e variare i parametri per generare quasi tutto quello che volete. Ho scritto quasi perché ci sono alcune restrizioni su certi tipi di contenuti facilmente intuibili. Non dimenticate che quello che generate qui è da considerare sorvegliato.

Per salvare le immagini generate è sufficiente trascinarle dalla finestra del browser al proprio desktop o file manager locale. Per dare un’immagine in pasto a al generatore si fa il contrario.

Se una generazione dà errore per qualunque motivo, scegliete Runtime - Restart session and run all, aspettate la reinstallazione e poi cliccate sul link alla nuova interfaccia web.

Queste, per esempio, sono due immagini generate in questo modo con il semplice prompt “A handsome Italian male astronaut in a heroic pose, wearing a sci-fi spacesuit, inside a futuristic space station with large windows. The Earth can be seen through the windows.” Tempo richiesto: 71 secondi (le soluzioni a pagamento di Colab offrono prestazioni ancora maggiori e altri vantaggi).


Niente male. Però sarebbe bello che un astronauta italiano portasse la bandiera del suo paese, per cui si può correggere l’immagine dandola in pasto a Fooocus e facendo quello che si chiama inpainting: si attivano le opzioni Input Image e Advanced, si trascina l’immagine da correggere su Inpaint or Outpaint, come Method si scegliere Modify Content, nel prompt si scrive qualcosa del tipo A rectangular Italian flag shoulder patch (le parole esatte sono importantissime), in Inpaint Additional Prompt si specifica replace red area with Italian flag patch o qualcosa di analogo, e infine si clicca su Generate. Volendo, nella scheda Settings si può chiedere di generare varie versioni in una sola sessione, cambiando il valore di Image number.

Con tempi di elaborazione dell’ordine del minuto scarso e la possibilità di generare varianti multiple in un colpo solo, è facile procedere per tentativi fino a ottenere l’effetto desiderato o qualcosa che gli si avvicina molto.

Un altro esempio di fotoritocco basato sull’inpainting riguarda questa foto, in cui la modella ha un viso molto grazioso ma un po’ asimmetrico: in particolare, il suo occhio sinistro è più piccolo di quello destro. Siamo quasi tutti asimmetrici in viso, ma qui si nota parecchio, per cui sarebbe utile correggere questa situazione.

Invece di doversi rivolgere a un fotoritoccatore professionista, è sufficiente ordinare a Fooocus improve symmetrical eyes e fargli produrre qualche variante, scegliendo poi la migliore.

Notate, fra l’altro, la bellezza della composizione, la luce perfettamente diffusa sul volto della modella nonostante la fonte principale di luce sia la finestra alle sue spalle, l’uso della profondità di campo ridotta che fa spiccare la spalla sinistra e il viso rispetto allo sfondo (la spalla destra è già fuori fuoco). È una gran bella foto, a prescindere dal soggetto. Ma...

...se non vi dicessi che è sintetica anche nella versione iniziale, ve ne accorgereste? Più in generale, guardandola sullo schermo del telefonino, quanti si accorgeranno della finzione? Considerato quanto sono ritoccate anche le foto delle modelle reali, ha importanza?

Queste immagini le ho generate io con qualche settimana di studio e di prove nei ritagli di tempo; un professionista sa fare sicuramente di meglio (e già vedo circolare i primi esempi di modelle fotorealistiche che si muovono e ballano e fanno... beh, altre cose), ma questa professione (il prompt engineer) deve ancora nascere e formarsi.

Se fossi un fotografo o una modella, comincerei a preoccuparmi del mio lavoro: questa tecnica elimina i costi di viaggio, vitto e alloggio, il noleggio delle location, i costumi, il trucco, l’acconciatura. Anche perché a questa modella virtuale si possono far indossare, per esempio, i gioielli di un intero catalogo. Ecco un piccolo esempio, sempre fatto da me in una decina di minuti usando Colab e un pizzico di fotoritocco digitale tradizionale:

Ne vedremo delle belle.

Nessun commento: