Guida all’utilizzo di AI Visualizer in Archicad
In questa serie di articoli analizzeremo il plugin AI Visualizer
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]
Credit: blog.archicad.it/Mario Napolitano