Negli ultimi mesi ChatGPT ha riempito le pagine dei giornali e del web, oscurando quello che è stato per mesi uno dei giocattoli preferiti dei nerd di tutto il mondo, la generazione di immagini tramite intelligenza artificiale.
Abbiamo giocato per mesi con DALL-E, con Crayon o con StableDiffusion, strumenti che funzionano online o che richiedono l’uso della linea di comando o l’esecuzione del codice sorgente originale.
Da qualche tempo è disponibile uno strumento più comodo per giocare con questi sistemi direttamente sul proprio computer utilizzando una comoda interfaccia grafica. Si tratta di DiffusionBee, che per ora è riservato ai soli utenti di macOS, con in arrivo l’inevitabile versione per Windows (ma vogliamo parlare prima o poi del fatto che ormai il software più interessante è disponibile prima per il Mac e solo dopo per Windows?).
Io l’ho provato e i risultati sono interessanti, anche se con qualche ombra.
Mac Intel o Apple Silicon?
DiffusionBee è disponibile in due versioni separate, una specifica per processori Intel e l’altra per Apple Silicon (cioè per le varie incarnazioni dei processori M1 ed M2 installati nei Mac più recenti). Anzi, per Apple Silicon sono disponibili ben due versioni, una a qualità normale e l’altra in alta qualità, che produce immagini migliori a scapito della velocità di esecuzione.
Dico subito che la versione di DiffusionBee per Intel richiede un processore molto performante. Il mio Mac di casa, con processore Intel i5 e 16 GB di RAM, è andato in crash per due volte, per cui è chiaro che le sue riserve di calcolo non sono sufficienti. Potrei provarlo sul Mac i7 dell’ufficio, ma ho molte remore, ho bisogno che sia stabile e un suo eventuale riavvio imprevisto mi creerebbe non pochi problemi.
Nessun problema invece su un MacBook Air M1, qui di potenza ce n’è più che a sufficienza e DiffusionBee va alla grande. Bisogna considerare però che il programma vero e proprio occupa poco spazio, circa 340 MB la versione per Apple Silicon e poco di più per quella Intel, ma al primo avvio deve scaricare ben 4 GB di dati del modello di generazione delle immagini suddivisi in due blocchi da 2 GB ciascuno, che diventano 8 GB una volta scompattati. Tenetene conto se avete poco spazio.
Una volta scompattato, il modello viene caricato in memoria e si può finalmente incominciare ad usare il programma.
Interfaccia utente
La finestra principale di DiffusionBee è semplicissima, in pratica consiste solo in un box di testo dove si inserisce una frase (prompt) che innesca la generazione delle immagini, e in una parte inferiore più ampia che mostra le immagini generale. Il programma dispone anche di funzioni più specializzate, attivabili cliccando sulle etichette visibili nella parte superiore della finestra, che saranno discusse brevemente più avanti.
Per le prime prove ho utilizzato un prompt iniziale molto semplice incentrato sulle mele (che altro scegliere su un Mac?), “Un albero con delle mele rosse e verdi”,
e il primo risultato è semplicemente orribile. Oltre che sbagliato, visto che avevo chiesto “un albero con delle mele rosse e verdi”, non “un albero rosso con delle mele verdi”,
Riprovando senza cambiare niente i risultati migliorano parecchio, anche se è difficile capire il perché.
Si può fare di meglio
Prompt più elaborati restituiscono immagini decisamente migliori, almeno finché si rimane nell’ambito dell’arte astratta. Ma probabilmente però queste sono solo variazioni su temi ben noti al programma, visto che il modello di intelligenza artificiale dovrebbere essere stato nutrito anche con le immagini dei grandi pittori.
Se invece si prova a riprodurre invece certe immagini tratte da Arthub.ai, un sito dedicato alla condivisione dell’arte generata (o magari generativa), i risultati sono decisamente meno buoni rispetto a ciò che si vede sul sito (mi riferisco al contenuto tecnico delle immagini, quello artistico è un’altra cosa).
Prendiamo ad esempio questa bellissima “donna bionda con gli occhi azzurri che indossa un lungo e fluente abito rosso, che chiede un cocktail in un bar, la vigilia di Capodanno, in un futuro distopico alla Bladerunner”, che sembra dipinta a mano.
DiffusionBee con i parametri di default la interpreta così, facendoci interrogare sulla reale posizione del bicchiere centrale.
Oppure così, dove sembra che la povera signorina abbia un piede al posto della mano.
Purtroppo Arthub.ai non ci dà quasi mai informazioni su come sono state generate le immagini presenti sul sito, ma è più che probabile che queste abbiano richiesto ore ed ore di elaborazione su megacomputer preparati ad hoc. DiffusionBee, invece, gira su dei computer normali e fa il suo lavoro in pochi secondi, è inevitabile che non possa mai raggiungere quei livelli.
Ma se si è consapevoli dei suoi limiti e si prova ad essere più creativi che riproduttivi, con un po’ di pazienza si possono ottenere dei risultati decenti.
Infatti, anche se la riproduzione del corpo umano da parte di DiffusionBee ha dei seri problemi (come è evidente dalle immagine precedenti, così come da molte altre prove non mostrate qui per semplicità),1 in altri campi il programma produce risultati decisamente migliori, come si può vedere negli esempi che seguono.
Magari dovremo ripetere più di una volta la generazione delle immagini, ma con un po’ di pazienza si riesce ad ottenere dei risultati interessanti, magari anche giocando con gli stili predefiniti e le opzioni di generazione selezionabili cliccando sulle etichette relative visibili sotto il box di testo.
Altre funzioni
DiffusionBee permette anche di generare una immagine a partire da un’altra immagine, di rimuovere o di aggiungere particolari ad una immagine già elaborat o di recuperare la storia di tutte le immagini generate dall programma. Tutte queste funzioni vengono attivate cliccando sulle etichette situate nella parte superiore della finestra.
Ad esempio, selezionando la scheda Image To Image
si può trasformare l’immagine della spiaggia invernale in una vista estiva, peccato che il modello di intelligenza artificiale dimentichi di togliere la neve!
E anche possibile modificare i dettagli di una immagine (scheda Impanting
) oppure estendere l’immagine prodotta (scheda Outpainting
). Facendo così si può riuscire a restituire alla signorina bionda una mano quasi degna di questo nome (anche se ho dovuto riprovare parecchie volte prima di ottenere un risultato quasi accettabile).
Ma la funzione di gran lunga più utile è l’ultima, History
, che mostra tutte le immagini generate dal programma insieme ai prompt e ai principali parametri utilizzati per produrle. È una funzione fondamentale per tornare sui propri passi e recuperare quello che si è già fatto oppure per fare delle nuove prove a partire da una configurazione ben definita.
Anche in alta qualità
La versione in alta qualità (HQ) di DiffusionBee, specifica per Apple Silicon, ha lo stesso nome di quella a qualità normale, per cui non può essere installata insieme a quest’ultima. Il motivo dovrebbe risiedere nel fatto che si basa su un modello di generazione diverso, infatti alla prima esecuzione scarica un nuovo modello di generazione, questa volta suddiviso in ben 8 blocchi, un paio molto grandi (circa 3 GB ciascuno) e gli altri di dimensioni molto più ridotte, per un totale decompresso che dovrebbe comunque rimanere sempre intorno agli 8 GB. Anche con la fibra FFTH ci è voluta una buona mezz’oretta per concludere il download del modello.
Come messo bene in evidenza nella pagina di download di DiffusionBee, La velocità di generazione delle immagini della versione HQ è apprezzabilmente minore di quella a qualità normale, mentre ho qualche dubbio sulla migliore qualità delle immagini prodotte, guardate le immagini qui sotto e giudicate da soli. Non mi pare quindi che valga tanto la pena usare la versione HQ al posto di quella normale, molto più veloce.
In ogni caso, una volta scaricati i due modelli distinti di generazione delle immagini, passare dalla versione a qualità normale a quella HQ (o viceversa) di DiffusionBee è questione di pochi attimi: basta aprire il file dmg
relativo alla versione da installare e trascinare l’icona del programma nella cartella Applicazioni
, sostituendola a quella già installata. Tutte le configurazioni, i modelli e la storia di uso del programma rimangono sempre disponibili, indipendentemente dalla versione usata.
Volendo si potrebbero rinominare le due versioni di DiffusionBee in modo diverso, tenendole così permanentemente installate in Applicazioni
. Io non ho provato a farlo e non garantisco che non creino problemi, soprattutto se si prova ad usarle in contemporanea.
Se vogliamo disinstallarlo
E se alla fine ci stufiamo e vogliamo disinstallare DiffusionBee? Cancellare il solo programma non basta, e non basta nemmeno usare AppCleaner (o simili) per cancellare i file di supporto, come è normale fare con le altre applicazioni. Perché quello che è davvero importante rimuovere sono i modelli, che occupano almeno 8 GB ciascuno, ma che non vengono individuati da AppCleaner (e, ci scommetterei, nemmeno dalle altre applicazioni di disinstallazione per macOS).
AppCleaner non riesce a trovare questi modelli perché non si trovano, come si aspetta, in una cartella della Libreria
dell’utente, ma in una directory nascosta della Home
dell’utente, denominata, con pochissima fantasia, .diffusionbee
.
La mia contiene in questo momento 12 GB di dati, che sono 4 GB meno di quanto mi sarei aspettato, evidentemente i due modelli hanno delle parti in comune.
Volendo disinstallare DiffusionBee, la procedura corretta è quindi:
-
disinstallare l’applicazione e i file di supporto con AppCleaner o simili (ma chi sa usare il Terminale può cancellare a mano le cartelle che contengono i file di supporto);
-
aprire il Terminale ed eseguire il comando
% rm -r ~/.diffusionbee
dove il simbolo del %
rappresenta il prompt del Terminale e non fa parte del comando (da notare che il %
è il prompt di default della shell zsh
utilizzata dalle versioni più recenti di macOS, in precedenza la shell di default era bash
e il prompt era rappresentato dal simbolo del $
).
Conclusioni
DiffusionBee è un bel giocattolo che, sfruttando le tecniche più avanzate di intelligenza artificiale, può generare immagini che vanno dall’orrido all’interessante sul proprio Mac con processore M1/M2. È possibile che DiffusionBee funzioni anche su un Mac Intel ma francamente, visto il tempo che impiega nei casi più complessi su un Mac M1, dubito che possa farlo in modo sufficientemente veloce da essere davvero utilizzabile.
È chiaro però che DiffusionBee è più che altro un bel giocattolo, se si vogliono davvero mettere le mani in questi sistemi basati sull’intelligena artificiale, la cosa migliore da fare è lavorare direttamente con il codice sorgente, quasi sempre in Python, magari utilizzando Google Colab come piattaforma di sviluppo. s Le guide introduttive non mancano, basta fare un giro su Google per trovare di tutto e di più. Come ad esempio questa guida, High-performance image generation using Stable Diffusion in KerasCV che, a differenza di tante altre, funziona al primo colpo.
In ogni caso, che sia con DiffusionBee o con Python, buon divertimento!
-
Sarebbe interessante verificare cosa succede con Stable Diffusion, che è il il modello di generazione di immagini su cui si basa DiffusionBee. ↩