Stable Diffusion: Wat is ControlNet

Een veel voorkomende misvatting bij mensen die voor het eerst in aanraking komen met generatieve neurale netwerken is dat het een enorme uitdaging is om de uiteindelijke output te controleren, vooral wanneer geprobeerd wordt om de output te veranderen door middel van verschillende prompt frasering. Op dit moment bestaat er een verzameling gereedschappen die bekend staat als ControlNet om relatief eenvoudige en effectieve controle over de generatieresultaten mogelijk te maken.
In dit artikel laten we zien hoe je eenvoudig de houding van gegenereerde personages kunt manipuleren met behulp van bestaande afbeeldingen en aangepaste "skeletten", met behulp van een van deze tools, OpenPose.
Stap 1. Stabiele diffusie installeren
Gebruik onze stapsgewijze handleiding om Stable Diffusion met het basismodel en de WebUI te installeren. Deze handleiding is gebaseerd op het AUTOMATIC1111 script.
Stap 2. ControlNet uitbreiding installeren
We raden ten zeerste af om de ControlNet-extensie (sd-webui-controlnet) uit de standaard repository te installeren vanwege mogelijke functionaliteitsproblemen. Een belangrijk probleem dat we tegenkwamen tijdens de voorbereiding van deze handleiding was het bevriezen van de webinterface. Hoewel de image in eerste instantie succesvol is gegenereerd, reageert de WebUI niet meer als de image een tweede keer wordt gegenereerd. Een alternatieve oplossing zou zijn om dezelfde extensie van een externe bron te installeren.
Open WebUI en volg de tabbladen: Extensions > Install from URL. Plak deze URL in het juiste veld:
https://github.com/Mikubill/sd-webui-controlnet
Klik vervolgens op de knop Install:

Wanneer het proces met succes is voltooid, zou het volgende bericht moeten verschijnen:
Installed into /home/usergpu/stable-diffusion-webui/extensions/sd-webui-controlnet. Use Installed tab to restart.
Laten we de URL opnieuw starten door op de knop Apply and restart UI te drukken op het tabblad Installed:

Na het herstarten van de interface verschijnt het nieuwe ControlNet-element met veel extra opties:

Stap 3. OpenPose downloaden
HF-sleutel toevoegen
Laten we een SSH-sleutel genereren en toevoegen die u kunt gebruiken in Hugging Face:
cd ~/.ssh && ssh-keygen
Wanneer het sleutelpaar is gegenereerd, kun je de publieke sleutel weergeven in de terminal emulator:
cat id_rsa.pub
Kopieer alle informatie beginnend bij ssh-rsa en eindigend met usergpu@gpuserver, zoals weergegeven in de volgende schermafbeelding:

Open een webbrowser, typ https://huggingface.co/ in de adresbalk en druk op Enter. Log in op je HF-account en open Profielinstellingen. Kies dan SSH and GPG Keys en klik op de knop Add SSH Key:

Vul de Key name in en plak de gekopieerde SSH Public key van de terminal. Sla de sleutel op door op Add key te drukken:

Nu is je HF-account gekoppeld aan de publieke SSH-sleutel. Het tweede deel (privésleutel) wordt opgeslagen op de server. De volgende stap is het installeren van een specifieke Git LFS (Large File Storage) extensie, die gebruikt wordt voor het downloaden van grote bestanden zoals neurale netwerkmodellen.
Git LFS installeren
De volgende stap is het installeren van een specifieke Git LFS (Large File Storage) extensie, die gebruikt wordt voor het downloaden van grote bestanden zoals neurale netwerkmodellen. Open je home directory:
cd ~/
Download het shellscript en voer het uit. Dit script installeert een nieuwe repository van derden met git-lfs:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
Nu kun je het installeren met de standaard pakketbeheerder:
sudo apt-get install git-lfs
Laten we git configureren om onze HF nickname te gebruiken:
git config --global user.name "John"
En gekoppeld aan het HF e-mailaccount:
git config --global user.email "john.doe@example.com"
Het archief downloaden
We raden aan om, indien mogelijk, een lokale harde schijf te gebruiken om modellen te downloaden en op te slaan. Je kunt hier meer over leren in onze gids Schijfpartitionering in Linux. Voor dit voorbeeld hebben we een SSD-schijf gekoppeld aan het koppelpunt /mnt/fastdisk. Laten we het eigendom maken van de standaard gebruiker:
sudo chown usergpu:usergpu /mnt/fastdisk
Open de directory:
cd /mnt/fastdisk
Kloon de ControlNet repository van HuggingFace. Eerder geïnstalleerde Git-LFS zal automatisch verwijzingen vervangen door echte bestanden:
git clone git@hf.co:lllyasviel/ControlNet-v1-1
In dit voorbeeld voegen we slechts één model toe aan Stable Diffusion WebUI. Je kunt echter alle beschikbare modellen uit het archief kopiëren (~18GB):
cp /mnt/fastdisk/ControlNet-v1-1/control_v11p_sd15_openpose.pth /home/usergpu/stable-diffusion-webui/models/ControlNet/
Stap 4. Genereren uitvoeren
Het huidige model is vrij eenvoudig en levert mogelijk geen bevredigende resultaten op. Daarom stellen we voor om het te vervangen door een aangepast model. Richtlijnen om dit te doen zijn te vinden in dit artikel: Stabiele verspreidingsmodellen: aanpassingen en opties. Voor dit voorbeeld hebben we RealisticVision v6.0 B1 gedownload.
Als u uw eerste afbeelding wilt genereren met OpenPose, open dan het tabblad ControlNet, kies OpenPose, vink Enable en Allow Preview aan. Klik vervolgens op Upload om een afbeelding met de gewenste pose toe te voegen:

Je kunt het systeem vragen een voorbeeld van de pose te genereren door op de knop met het explosiepictogram te klikken:

Links wordt de originele afbeelding weergegeven. Rechts zie je het "skelet" dat de pose voorstelt zoals herkend door het neurale netwerkmodel:
![]() |
![]() |
Nu kun je de hoofdprompt intypen, bijvoorbeeld "dancing bear, by Pixar" of "dancing fox, by Pixar" en op de knop Generate klikken. Na een paar seconden krijg je resultaten zoals deze:
![]() |
![]() |
Het systeem zal proberen een nieuwe afbeelding te genereren, gegeven het "skelet" verkregen van de originele afbeelding. In sommige gevallen is de houding niet nauwkeurig, maar dit kan eenvoudig worden gecorrigeerd door het "skelet" handmatig te bewerken.
Stap 5. Houding wijzigen
Hoewel het magisch lijkt, is het model niet perfect en kunnen incidentele fouten invloed hebben op de uiteindelijke afbeelding. Om problemen tijdens het genereren van de afbeelding te voorkomen, heb je de optie om het "skelet" handmatig aan te passen door op de knop Edit te klikken:

In de meegeleverde editor kun je eenvoudig de pose aanpassen door te slepen en neerzetten, of ongewenste punten verwijderen met een rechtermuisklik. Klik daarna gewoon op de knop Send pose to ControlNet en de nieuwe pose wordt toegepast:

Naast OpenPose biedt ControlNet een groot aantal tools om je resultaten aan te passen en te perfectioneren. Bovendien zorgen de speciale servers van LeaderGPU voor een snel en handig proces.
Zie ook:
Bijgewerkt: 26.03.2025
Gepubliceerd: 21.01.2025