IO SONO COLUI CHE ARTI (con Diffusione Stabile)

Dec 10 2022
Il mio ultimo articolo sulla generazione di immagini usando PyTorch sembra scritto tre anni fa, invece che tre mesi fa. A quel tempo il codice sorgente di strumenti come Dall-E e Midjourney non era disponibile per sviluppatori come me.

Il mio ultimo articolo sulla generazione di immagini usando PyTorch sembra scritto tre anni fa, invece che tre mesi fa. A quel tempo il codice sorgente di strumenti come Dall-E e Midjourney non era disponibile per sviluppatori come me. Quella limitazione sembrava non essere un'area che potevo esplorare perché era ben oltre la mia capacità di decodificarla.

E poi CompVis ha rilasciato Stable Diffusion come open source, consentendo a chiunque abbia una copia del codice di sperimentarlo ed estenderlo.

Avanti veloce di 3-4 mesi da quando è uscito Stable Diffusion e attorno ad esso si è formato un intero ecosistema. Chiunque abbia le capacità per eseguire alcuni comandi (chiunque) può configurare un server Stable Diffusion personale, più comunemente l' interfaccia utente web basata su Gradio AUTOMATIC1111 . Quell'interfaccia utente è così popolare che le persone stanno scrivendo i propri plugin per questo. Stiamo usando una variante di AUTOMATIC1111 con le nostre piccole modifiche e modifiche in cima.

All'interno di Open Studios avere la nostra diffusione stabile auto-ospitata è stato un enorme vantaggio: abbiamo sostanzialmente acquisito un dipartimento artistico che può pompare centinaia di opzioni da utilizzare per banner, animazioni e qualsiasi altra cosa necessiti di una direzione creativa visiva. Come sceneggiatore, sono stato in grado di eseguire rapidamente il rendering di una scena in classe su cui stavo lavorando e mi sono reso conto che sembrava noiosa, quindi ho spostato la scena in un museo. Questo tipo di iterazione avanti e indietro di solito avviene tra almeno alcune persone con diversi campi di competenza, ad esempio un direttore artistico e disegnatori.

In qualità di sostenitore, vorrei poter dire che le immagini generate da Stable Diffusion andavano bene, la maggior parte delle volte non lo sono e ci vogliono un po' di tentativi ed errori di riesecuzione e correzione manuale usando Photoshop.

Questa immagine di un complesso di appartamenti galleggianti è stata generata utilizzando un mix di stili artistici di MC Escher e anime. Originale a sinistra, modificato a destra.

Scoprire cosa può essere un concetto

Immagina una nuvola di post-it raggruppati insieme sulla base di etichette, è così che funziona la memoria per un sistema di apprendimento automatico. All'interno dello studio dell'apprendimento automatico, questa nuvola di post-it è nota come "spazio latente".

La stessa scena di una spiaggia può apparire molto diversa a seconda che sia presa dal punto di vista di una persona o di un uccello o che l'interpretazione della luce sia realistica o stilizzata. I risultati possono essere un po' imprevedibili, che in questo caso d'uso è esattamente quello che vogliamo perché come flusso di lavoro è come chiedere a un team di concept artist di andare a trovare idee per te.

A volte non sappiamo nemmeno come deve essere qualcosa, usiamo i suggerimenti per generare immagini e poi passiamo attraverso fasi iterative di selezione dei nostri preferiti e ne creiamo altri finché non arriviamo nei posti che ci piacciono.

Quando si esplora un'area sconosciuta è spesso utile disegnare una mappa e con Stable Diffusion in realtà è abbastanza simile!

Tracciare lo spazio latente e sollecitare la ricerca

Utilizzando le nostre workstation da studio dotate di potenti schede grafiche della serie RTX 30, generalmente utilizziamo la dimensione massima del batch e il numero massimo di campioni. Il numero di risultati è il prodotto di queste due impostazioni, quindi in 10 batch con 4 campioni avremmo 40 immagini. Se le griglie XY sono attivate, ciò si moltiplicherà ulteriormente per il numero di opzioni in X e Y.

Quando si utilizza Stable Diffusion è pratica comune generare migliaia di griglie XY come una sorta di tavolozza di esempio e quindi scegliere quelle che corrispondono alla visione e allo stile creativi appropriati. L'interfaccia utente AUTOMATIC1111 ha ampie opzioni di personalizzazione per ciò che sono definiti gli assi X e Y della tua griglia, consentendoti di utilizzare diversi modelli di dati, prompt di testo e altre impostazioni per vedere come si uniscono tutti in modi diversi.

Questa griglia XY mette a confronto un mix di artisti che mi piacciono con artisti famosi e il modo in cui se la passano usando i suggerimenti che sono stati usati per creare concept art per un film d'animazione.

I prompt possono richiedere del tempo per essere capiti, a volte richiedono settimane di tentativi ed errori per riorganizzare le parole e persino cercare online in posti come Lexica quando non riusciamo a convincere l'IA a disegnare ciò che vogliamo. Nel nostro mondo non abbiamo cose come demoni o cyborg e quindi ci vuole un po' di finezza per dire al sistema cosa vogliamo vedere - per esempio un demone potrebbe essere un "pipistrello umanoide gigante con corna e pelo rosso" e un il cyborg potrebbe essere un "uomo con protesi umanoidi cibernetiche".

Ci sono fattori esterni che influiscono anche sull'efficacia dei prompt di testo: impostazioni come il valore seme, il campionatore, la scala CFG (quanto rigorosamente conforme al prompt di testo) e persino la risoluzione possono cambiare radicalmente il risultato.

Questa griglia di un gufo di carta origami (trovata su Reddit) mappa il numero di passaggi (tempo) VS la scala CFG.

Aggiunta di nuovi dettagli alle immagini a bassa risoluzione

La dimensione principale utilizzata per tutta la grafica Stable Diffusion è 512x512, ma in genere vogliamo immagini progettate per la visualizzazione a schermo intero con una risoluzione minima di 1080p, ma preferibilmente 4K. La tecnica che utilizziamo si chiama img2img e può effettivamente prendere qualsiasi immagine esistente come input, ma per l'upscaling utilizziamo uno script specifico per l'upscaling o reimmettiamo le variazioni dei parametri utilizzati per crearlo, al fine di garantire risultati di dettaglio elevati al risoluzioni più elevate.

A volte l'upscaling di un'immagine può essere più complicato della sua creazione originale. Vedi sotto un'immagine originale VS è varie forme ingrandite.

Quando mi è venuta in mente la scena di un'antica città dorata con l'architettura filippina, ho avuto migliaia di campioni nei miei esperimenti e ho scelto questo basato su Salvadore Dali per l'upscaling.
Le differenze tra queste immagini sono state generate da diverse impostazioni nell'upscaler.

Nel grande schema delle cose non ci è voluto quasi nessuno sforzo per creare l'immagine originale, ma il rovescio della medaglia è che lo sforzo per poi ingrandire questa immagine è stato in realtà piuttosto massiccio. Tutto sommato è stato un esperimento informativo, almeno insegnandoci a ripulire le immagini in Photoshop prima dell'upscaling!

Flusso di lavoro e gestione dei file

Lavoriamo con migliaia di immagini in ogni progetto di Stable Diffusion, spesso abbinate a fogli di metadati che spiegano come abbiamo costruito quegli asset nel caso avessimo bisogno di ricostruirli o modificarli in futuro.

Le unità cloud e Git aiutano sicuramente, ma chiunque abbia familiarità con la produzione multimediale saprà che tende a esserci un bel po' di dati scartati in questi tipi di progetti. I processi per lo smaltimento e l'archiviazione delle cose per riferimento possono essere tanto importanti quanto l'archiviazione dei dati in primo luogo.

— —

Spero che questo ti dia un'idea del lavoro in corso dietro le quinte di Open Studios. Invidiavo i professionisti della tecnologia più anziani per essere lì per il boom di Dot Com, ma mi sento come se ci fosse appena stato dato il nostro.

Riferimenti e link:

  • Lessico —https://lexica.art/
  • Interfaccia utente web automatica1111 —https://github.com/AUTOMATIC1111/stable-diffusion-webui
  • Banca dati modello —https://upscale.wiki/wiki/Model_Database#Drawn_Material