Risponderemo a tutte le tue domande!

Applicazioni e Guide

Stable Diffusion: Cos'è ControlNet

Un'idea sbagliata comune tra coloro che si avvicinano per la prima Volta™ alle reti neurali generative è che il controllo dell'output finale sia tremendamente impegnativo, soprattutto quando si cerca di alterare l'output attraverso una diversa formulazione dei prompt. Attualmente, esiste una suite di strumenti nota come ControlNet che facilita un controllo relativamente semplice ed efficace sui risultati della generazione.

In questo articolo dimostreremo come manipolare facilmente la posa dei personaggi generati utilizzando immagini preesistenti e "scheletri" personalizzati, con l'aiuto di uno di questi strumenti, OpenPose.

Passo 1. Installare la diffusione stabile

Utilizzate la nostra guida passo passo per installare Stable Diffusion con il modello di base e la WebUI. Questa guida si basa sullo script AUTOMATIC1111.

Passo 2. Installazione dell'estensione ControlNet

Si sconsiglia vivamente di installare l'estensione ControlNet (sd-webui-controlnet) dal repository standard a causa di potenziali problemi di funzionalità. Un problema significativo che abbiamo riscontrato durante la preparazione di questa guida è stato il blocco dell'interfaccia web. Sebbene l'immagine sia stata generata inizialmente con successo, l'interfaccia web diventa poco reattiva quando si genera l'immagine una seconda Volta™. Una soluzione alternativa potrebbe essere quella di installare la stessa estensione da una fonte esterna.

Aprire la WebUI e seguire le schede: Extensions > Install from URL. Incollare questo URL nel campo appropriato:

https://github.com/Mikubill/sd-webui-controlnet

Fare quindi clic sul pulsante Install:

Install sd-webui-controlnet

Quando il processo è stato completato con successo, dovrebbe apparire il seguente messaggio:

Installed into /home/usergpu/stable-diffusion-webui/extensions/sd-webui-controlnet. Use Installed tab to restart.

Riavviare l'URL premendo il pulsante Applica e riavvia UI nella scheda Installato:

ControlNet Restart UI

Dopo il riavvio dell'interfaccia, apparirà il nuovo elemento ControlNet con molte opzioni aggiuntive:

ControlNet enabled

Passo 3. Scaricare OpenPose

Aggiungere la chiave HF

Generiamo e aggiungiamo una chiave SSH da utilizzare in Hugging Face:

cd ~/.ssh && ssh-keygen

Quando la coppia di chiavi è stata generata, è possibile visualizzare la chiave pubblica nell'emulatore di terminale:

cat id_rsa.pub

Copiare tutte le informazioni che iniziano con ssh-rsa e terminano con usergpu@gpuserver, come mostrato nella seguente schermata:

Copy RSA key

Aprire un browser web, digitare https://huggingface.co/ nella barra degli indirizzi e premere Enter. Accedere al proprio account HF e aprire Impostazioni profilo. Scegliere quindi SSH and GPG Keys e fare clic sul pulsante Add SSH Key:

Add SSH key

Compilare Key name e incollare la SSH Public key copiata dal terminale. Salvare la chiave premendo Add key:

Paste the key

Ora il vostro account HF è collegato alla chiave SSH pubblica. La seconda parte (chiave privata) è memorizzata sul server. Il passo successivo consiste nell'installare un'estensione specifica di Git LFS (Large File Storage), utilizzata per scaricare file di grandi dimensioni come i modelli di reti neurali.

Installare Git LFS

Il passo successivo consiste nell'installare un'estensione specifica di Git LFS (Large File Storage), utilizzata per scaricare file di grandi dimensioni come i modelli di reti neurali. Aprite la vostra home directory:

cd ~/

Scaricare ed eseguire lo script di shell. Questo script installa un nuovo repository di terze parti con git-lfs:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

Ora è possibile installarlo utilizzando il gestore di pacchetti standard:

sudo apt-get install git-lfs

Configuriamo git per usare il nostro nickname HF:

git config --global user.name "John"

E collegato all'account di posta elettronica HF:

git config --global user.email "john.doe@example.com"

Scaricare il repository

Si consiglia, se possibile, di utilizzare un disco rigido locale per scaricare e memorizzare i modelli. Per saperne di più, consultare la nostra guida, Partizionamento dei dischi in Linux. Per questo esempio, abbiamo montato un disco SSD sul mountpoint /mnt/fastdisk. Facciamo in modo che sia di proprietà dell'utente predefinito:

sudo chown usergpu:usergpu /mnt/fastdisk

Aprire la directory:

cd /mnt/fastdisk

Clonare il repository ControlNet da HuggingFace. Git-LFS installato in precedenza sostituirà automaticamente i puntatori con i file reali:

git clone git@hf.co:lllyasviel/ControlNet-v1-1

In questo esempio, aggiungiamo solo un modello alla WebUI di Stable Diffusion. Tuttavia, è possibile copiare tutti i modelli disponibili dal repository (~18GB):

cp /mnt/fastdisk/ControlNet-v1-1/control_v11p_sd15_openpose.pth /home/usergpu/stable-diffusion-webui/models/ControlNet/

Passo 4. Eseguire il processo di generazione

Il modello attuale fornito è piuttosto elementare e potrebbe non dare risultati soddisfacenti. Pertanto, si consiglia di sostituirlo con un modello personalizzato. Le linee guida su come farlo sono riportate in questo articolo: Modelli di diffusione stabile: personalizzazione e opzioni. Per questo esempio, abbiamo scaricato RealisticVision v6.0 B1.

Se volete generare la vostra prima immagine usando OpenPose, aprite la scheda ControlNet, scegliete OpenPose, spuntate Enable e Allow Preview. Quindi fare clic su Upload per aggiungere un'immagine contenente la posa desiderata:

Enable OpenPose and Preview

È possibile richiedere al sistema di generare un'anteprima della posa facendo clic sul pulsante con l'icona dell'esplosione:

Show preview

A sinistra viene visualizzata l'immagine originale. A destra, si vede lo "scheletro" che rappresenta la posa riconosciuta dal modello della rete neurale:

Dancing woman OpenPose skeleton

Ora è possibile digitare il prompt principale, ad esempio "dancing bear, by Pixar" o "dancing fox, by Pixar" e fare clic sul pulsante Generate. Dopo pochi secondi si otterranno risultati come questo:

Dancing bear Dancing fox

Il sistema tenterà di generare una nuova immagine, dato lo "scheletro" ottenuto dall'immagine originale. In alcuni casi, la posa potrebbe non essere accurata, ma questo può essere facilmente corretto modificando manualmente lo "scheletro".

Fase 5. Modifica della posa

Anche se può sembrare una magia, il modello non è perfetto e alcuni errori occasionali possono influire sull'immagine finale. Per evitare problemi durante la generazione dell'immagine, è possibile regolare manualmente lo "scheletro" facendo clic sul pulsante Edit:

Edit the skeleton

Nell'editor fornito, è possibile regolare facilmente la posa trascinando e rilasciando, oppure rimuovere i punti indesiderati con un clic destro. Dopodiché, basta fare clic sul pulsante Send pose to ControlNet e la nuova posa verrà applicata:

Send pose to ControlNet

Oltre a OpenPose, ControlNet offre una serie di strumenti per personalizzare e perfezionare i risultati. Inoltre, i server dedicati forniti da LeaderGPU garantiscono un processo rapido e conveniente.

Vedi anche:



Aggiornato: 26.03.2025

Pubblicato: 21.01.2025