Tag: Il BIM con Archicad
In relazione alla curva esponenziale di diffusione e utilizzo dell'Intelligenza Artificiale e alla road map di sviluppo di Archicad, Graphisoft ha rilasciato a fine 2023 una delle funzionalità più attese dal pubblico: AI Visualizer, il plugin che integra l’AI per la generazione automatica di visualizzazioni grafiche a partire da concetti e volumi architettonici. Con questo primo articolo sul tema, esploreremo il suo funzionamento e alcuni consigli per ottimizzare il processo di lavoro.
A differenza di quanto si possa pensare, Graphisoft non è la diretta produttrice di un’intelligenza artificiale integrata in Archicad. Piuttosto, ha permesso lo sviluppo di una relazione bidirezionale tra il suo software di BIM Authoring e Stable Diffusion tramite AI Visualizer. Prima di addentrarci nella parte tecnica e funzionante del plug-in vediamo insieme cos’è Stable Diffusion e quali sono le sue caratteristiche principali.
Cos'è Stable Diffusion?
Stable Diffusion è un modello di intelligenza artificiale di tipologia deep-learning, in grado di generare immagini a partire da un testo o da un’immagine. I processi generativi di Stable Diffusion possono essere suddivisi in:
- Text-to-Image (txt2img), ovvero immagini generate a partire da un testo, detto prompt, definito dall’utente;
- Image-to-Image (img2img), ovvero immagini generate a partire da altre immagini, spesso accompagnate da un testo, con tre metodi distinti:
-
- Inpainting ridisegna una parte dell'immagine individuata da una maschera e da un prompt;
- Outpainting crea nuove porzioni al di fuori dell’immagine stessa;
- Upscaling ridimensiona l’immagine senza perdita di qualità.
Non è indispensabile modellare qualcosa all’interno di Archicad per svolgere un processo img2img. AI Visualizer consente di processare entrambi i metodi, sia img2img che text2img, dando così all’utente la piena libertà di sviluppare solamente un proprio prompt e ottenere in tutti i casi una visualizzazione. Nelle immagini a seguire paragoniamo due output con un prompt quasi identico ma con presenza (destra) o assenza (sinistra) di elementi modellati in Archicad.
Guida pratica per AI Visualizer
Avvio dell’AI e lettura da Terminale
Per avviare il processo di generazione tramite AI Visualizer è necessario innanzitutto far avviare il motore di intelligenza artificiale AI Engine presente all’interno della finestra, seguendo questi passaggi:
- Impostare l’indirizzo localhost:7860 come indirizzo IP locale, in questo modo l’AI Visualizer cercherà il motore sulla macchina nella sua posizione predefinita;
- Impostare High VRAM, di cui l’acronimo VRAM indica la Video Random-Access Memory, come una RAM collegata alla GPU che funge da memoria temporanea per i dati relativi al rendering grafico, rendendo la scheda video molto più “libera” da altri processi;
- Impostare i pulsanti di accensione, spegnimento e pausa dell’AI Engine.
Una volta settata la vista desiderata, dallo spazio modello di Archicad, bisognerà semplicemente avviare il motore tramite il pulsante Start AI Engine, il quale aprirà a sua volta una finestra del Terminale. In un paio di minuti circa, il plugin avrà eseguito tramite il Terminale una serie di processi di avvio tramite Python, che si concluderanno come indicato nell’immagine e dalla seguente riga di testo indicante un primo veloce caricamento del modello:
Model loaded in 17.6s (load weights from disk: 1.1s, create model: 0.6s, apply weights to model: 14.5s, apply float(): 0.7s, move model to device: 0.3s, calculate empty prompt: 0.3s).
Concluso il processo di avvio del motore è possibile cliccare il pulsante Generate e attendere che l’AI Visualizer produca la visualizzazione.
Ritengo, inoltre, sia utile conoscere come i dati vengono presentati all’interno del Terminale, per meglio comprendere il corretto processo di generazione. Con le seguenti righe è possibile notare come si avvii completamente il ControlNet, ovvero la struttura di rete neurale utilizzata da Stable Diffusion e già avviata in maniera preliminare nell’avvio dell’AI Engine:
2023-12-03 14:46:13,148 - ControlNet - INFO - Loading model: diffusion_pytorch_model [a2e6a438]
2023-12-03 14:46:13,314 - ControlNet - INFO - Loaded state_dict from [/Applications/Graphisoft/Archicad 27-INT/sd.webui/webui/extensions/sd-webui-controlnet/models/diffusion_pytorch_model.safetensors]
2023-12-03 14:46:13,319 - ControlNet - INFO - controlnet_sdxl_config
2023-12-03 14:46:26,485 - ControlNet - INFO - ControlNet model diffusion_pytorch_model [a2e6a438] loaded.
2023-12-03 14:46:26,695 - ControlNet - INFO - Loading preprocessor: canny
2023-12-03 14:46:26,695 - ControlNet - INFO - preprocessor resolution = 600
2023-12-03 14:46:29,549 - ControlNet - INFO - ControlNet Hooked - Time = 16.510034322738647
Successivamente il plugin va a “pescare” alcuni modelli di design generativo, un po’ come avviene anche su altri strumenti come ad esempio Grasshopper e il suo plugin Galapagos, applicabili sulla base delle indicazioni fornite dal Prompt. Solitamente questo secondo processo si arresta all’incirca al 60% (sui 18-21/30) e non richiede un periodo di tempo prolungato:
60%|█████████████████████████▊ | 18/30 [00:41<00:23, 1.98s/it]Reusing loaded model sd_xl_base_1.0.safetensors [31e35c80fc] to load sd_xl_refiner_1.0.safetensors [7440042bbd]
Loading weights [7440042bbd] from /Applications/Graphisoft/Archicad 27-INT/sd.webui/webui/models/Stable-diffusion/sd_xl_refiner_1.0.safetensors
Creating model from config: /Applications/Graphisoft/Archicad 27-INT/sd.webui/webui/repositories/generative-models/configs/inference/sd_xl_refiner.yaml
Applying attention optimization: sub-quadratic... done.
Dalle ultime righe in figura, è possibile notare come si sia avviato un processo di “refiner” che andrà a caricare tutto il modello Archicad, e a cui verranno applicati questi modelli generativi affinché possa essere restituita la visualizzazione ultima. Il processo questa volta sarà più lento, e lo possiamo vedere, confrontando il caricamento del modello di Archicad di 73.4 secondi con il caricamento iniziale di 17.6 secondi (oltre 4 volte di più).
Model loaded in 73.4s (create model: 0.2s, apply weights to model: 62.4s, apply float(): 10.3s, move model to device: 0.3s, calculate empty prompt: 0.2s).
100%|███████████████████████████████████████████| 30/30 [03:04<00:00, 6.15s/it]
Total progress: 100%|███████████████████████████| 30/30 [03:06<00:00, 6.21s/it]
Total progress: 100%|███████████████████████████| 30/30 [03:06<00:00, 4.38s/it]
Concluso il caricamento, bisognerà attendere fino alla conclusione dell’ultima parte di processo per poter visualizzare e, di conseguenza, salvare nella finestra del plugin l’immagine creata tramite l’AI.
Settaggi per l’AI
L’AI Visualizer può essere richiamato dal menù “Finestre” alla voce “Palette”, e si presenta come una classica finestra, che però, per il momento, non può essere salvata al “Ambiente di Lavoro”.
La finestra è suddivisa in due sezioni: nella prima di sinistra viene catturato lo spazio modello 3D e la vista da cui l’AI genererà una visualizzazione, mentre nella sezione di destra sono raccolti tutti i settaggi del plugin.
Oltre che impostare la grandezza dell’immagine di output ci sono una serie di settaggi da definire per ottenere un output coerente rispetto a quanto pensato. Vediamo di seguito i principali:
Prompt
È la parte fondamentale del plugin, dove l’utente descrive testualmente l’output finale desiderato. Il consiglio è utilizzare dei testi molto semplici, a volte composti da singole parole o al massimo 2/3 per riga, in modo tale da rendere più semplice il calcolo per l’AI. Negli esperimenti intrapresi, infatti, non sempre un testo lungo e complesso riesce a essere più efficiente di un testo breve, perché rende il calcolo molto più lungo e spesso genera dei messaggi di errore.
Shape Fidelity
Determina il grado di conservazione della geometria del modello da parte dell’AI, in modo tale che risultati molto più creativi siano inversamente proporzionali ad essa. Ad esempio, ponendo un valore pari al 100%, l’AI avrà meno possibilità a disposizione per generare l’output, dovendo preservare la geometria iniziale. In questo caso il consiglio è di sperimentare per trovare la configurazione perfetta. Molto spesso un valore del 70% consente di avere un buon rapporto tra geometria e creatività.
Interactions
Si riferisce al numero di iterazioni nel processo dell’AI, in tal senso un numero alto di iterazioni fornirà dei risultati molto più precisi. L’unico inconveniente sarà il prolungamento dei tempi di calcolo, risultando quindi direttamente proporzionali al valore immesso. Fissare un valore approssimativo del 40% è un buon compromesso per eseguire delle prove iniziali, per poi aumentare quando si esegue l’ultima generazione prima della consegna al cliente.
Prompt Strength
Determina la forza del prompt, ovvero più alta è, e più l'AI seguirà le indicazioni testuali. Questo potrebbe portare a risultati più o meno creativi. Un valore approssimativo del 75% potrebbe dare un minimo di margine all’AI nella fase creativa.
Come si può evincere, non esistono regole o valori standard da seguire per impostare correttamente tutti i settaggi. Questo deve essere rimandato alla sensibilità dell’utente rispetto a due aspetti:
- L’idea originale umana, costituita dal concetto testuale (prompt) e geometrico (elementi in Archicad);
- La creatività dell’AI, resa possibile dai vari settaggi esposti in precedenza.
Trovare il giusto compromesso risulterà determinante per la corretta generazione di un’immagine tramite l’AI. Il consiglio è non stare mai nel mezzo - quindi con tutti i valori impostati al 50%. Meglio piuttosto impostare questi valori a 2/3 del loro valore massimo verso l’idea originale umana,
- Con alti valori di Shape Fidelity, Interactions e Prompt Strength in fase di finalizzazione di un render/concetto o verso la creatività dell’AI;
- Con bassi valori di Shape Fidelity, Interactions e Prompt Strength, in fase di sperimentazione iniziale.
Per maggior approfondimenti tecnici si consiglia la lettura della Guida Utente messa a disposizione da Graphisoft.
Esempi pratici
Arrivati a questo punto sorge spontanea la domanda su cosa si può effettivamente ottenere da uno strumento così potente e flessibile. In questi pochi giorni trascorsi dalla sua uscita, ho voluto un po’ di tempo per sperimentare diverse tematiche di seguito illustrate brevemente.
Come un Archistar
L’idea, che ho ripreso anche come un format sul mio canale social, nasce dal sogno comune di noi architetti di diventare un giorno Archistar come Renzo Piano (destra), Zaha Hadid (sinistra) o altri. Partendo dai miei due architetti preferiti, sono riuscito a tirar fuori, da semplici geometrie, le seguenti visualizzazioni.
Ritorno al futuro
Si sa che chi è nato negli anni 80’ o 90’, ha sempre un particolare interesse per la cultura pop di quegli anni, dove la tecnologia iniziava a prender piede e i pensieri fantascientifici degli anni 2000 diventavano sempre più presenti fra film, album musicali e videogame. In questi due casi, sono stati utilizzati due approcci differenti di impostazione dei settaggi, rispettivamente alti a sinistra, quindi meno creatività e più fedeltà, e bassi a destra, ovvero più creatività e meno fedeltà.
Il fascino della matita
In fondo siamo pur sempre architetti, e quel tocco di creatività lo vorremmo sempre trasmettere con la grafite di una semplice matita. Quindi perchè non esplorare le potenzialità creative dell’AI con gli effetti a schizzo o addirittura in stile manga?
Zero sbatti
Uno dei miei ultimi esperimenti, prevede la zero modellazione in Archicad, sfruttando il processo txt2img (destra) tramite il solo prompt. Non male come risultato, anche se, i tempi di calcolo si sono allungati notevolmente fino a 10/15 minuti, rispetto ai 3/5 minuti del processo img2img (sinistra).
Epic Fail
Quando hai in mente un’idea ma non riesci ad esprimerla bene, o meglio ancora, dai la colpa all’AI che non capisce nulla. Fra i tanti “wow”, ci sono stati anche un bel po’ di fallimenti, oltre che risate. Ve ne lascio un paio.
Consigli utili per un buon funzionamento
Nel corso di questi primi esperimenti con l’AI integrata in Archicad ho avuto modo di prendere visione di alcuni aspetti pratici che vale la pena evidenziare a chiusura dell’articolo.
Nonostante, infatti, la mia macchina MAC sia molto prestante con un chip Apple M1 Max, RAM da 32GB e CPU a 10-core (di meglio un’anno e mezzo fa c’era solo l’M1 Ultra), ho riscontrato un bel po’ di casistiche che spesso non mi hanno consentito di generare una visualizzazione coerente, oppure hanno influito pesantemente sulle prestazioni della macchina stessa.
Di seguito fornisco una breve guida di quanto scoperto:
- Chiudere i browser o le finestre internet superflue e cercare, quanto più possibile, di non navigare mentre l’AI è in calcolo;
- Lasciare la macchina calcolare per tutto il processo, senza farla eseguire in background mentre si svolgono altre mansioni. Nel mio caso ho assistito ad importanti lag con movimenti video a scatti;
- Dopo ogni visualizzazione prodotta, stoppare l’AI Engine, chiudere il Terminale e far ripartire tutto il processo, in quanto, dopo una prima generazione, non sempre si riusciva ad eseguirne di ulteriori;
- Avere sempre aperto un solo Terminale, più Terminali aperti non consentono ad Archicad di collegarsi con Stable Diffusion, perdendo dati durante il processo di scambio e generando messaggi di errore;
- Avviare la High VRAM solamente se si ha a disposizione una macchina molto prestante, sia dal punto di vista della RAM, che della scheda video;
- Assicurarsi che l’indirizzo dell’AI Engine sia sempre impostato come localhost:7860. Cambiare manualmente questo campo potrebbe portare, seppur apparentemente, l’avvio corretto dell’Engine, ma un messaggio di errore e stop dell’AI in fase di generazione. È consigliabile, invece, avere due indirizzi IP diversi quando si avviano due o più AI Engine;
- Verificare che il corretto caricamento del modello di Archicad, nella fase di refiner, non impieghi più di 90/100 secondi. Tempi di caricamento più lunghi potrebbero compromettere la generazione o “appesantire” i processi della macchina, andando a dilatare di molto i tempi di attesa. Tutto dipende anche se si sta caricando un modello concettuale o molto più dettagliato.
Ovviamente, questa è solo una piccola parte, non esaustiva, di consigli e soluzioni da applicare. L’AI Visualizer è ogni giorno una nuova scoperta verso i nuovi orizzonti digitali della nostra professione di architetti e, nel corso dei prossimi mesi, non mancherò di renderti partecipe di nuove idee e opinioni in merito con la seconda parte di questo articolo.
Per qualsiasi altro spunto di riflessione sul tema BIM e Archicad puoi trovarmi sul mio profilo instagram o sul mio sito web, dove ogni BIMer è il benvenuto!
Vuoi implementare un flusso di lavoro in BIM?
Comincia dai nostri ebook gratuiti: sono un'infarinatura del perché e di come il BIM migliora il tuo business e ti rende competitivo sul mercato, che tu sia un singolo professionista o un'azienda strutturata.