Stable Diffusion: LoRA-Selfie

Sie können Ihren ersten Datensatz mit einer einfachen Kamera und einem relativ einheitlichen Hintergrund erstellen, z. B. einer weißen Wand oder einem einfarbigen Verdunkelungsvorhang. Für einen Beispieldatensatz habe ich eine spiegellose Kamera Olympus OM-D EM5 Mark II mit 14-42 Kit-Objektiven verwendet. Diese Kamera unterstützt die Fernsteuerung von jedem Smartphone aus und verfügt über einen sehr schnellen Serienbildmodus.
Ich habe die Kamera auf einem Stativ befestigt und die Fokuspriorität auf Gesicht eingestellt. Danach wählte ich den Modus, in dem die Kamera alle 3 Sekunden 10 Bilder hintereinander aufnimmt, und startete den Vorgang. Während der Aufnahme drehte ich meinen Kopf langsam in die ausgewählte Richtung und änderte die Richtung nach jeweils 10 Bildern:

Das Ergebnis waren etwa 100 Bilder mit einem eintönigen Hintergrund:

Der nächste Schritt besteht darin, den Hintergrund zu entfernen und das Porträt auf einem weißen Hintergrund zu belassen.
Hintergrund löschen
Sie können die Standardfunktion von Adobe Photoshop Remove background und die Stapelverarbeitung verwenden. Lassen Sie uns Aktionen speichern, die wir auf jedes Bild in einem Datensatz anwenden wollen. Öffnen Sie ein beliebiges Bild, klicken Sie auf das Dreieckssymbol und dann auf das Symbol +:

Geben Sie den Namen der neuen Aktion ein, z. B. Remove Background, und klicken Sie auf Record:

Suchen Sie auf der Registerkarte Layers das Schlosssymbol und klicken Sie es an:

Klicken Sie anschließend auf die Schaltfläche Remove background auf dem schwebenden Bedienfeld:

Klicken Sie mit der rechten Maustaste auf Layer 0 und wählen Sie Flatten Image:

Alle unsere Aktionen sind aufgezeichnet worden. Lassen Sie uns diesen Prozess beenden:

Jetzt können Sie die geöffnete Datei schließen, ohne die Änderungen zu speichern, und wählen Sie File >> Scripts >> Image Processor…

Wählen Sie die Eingabe- und Ausgabeverzeichnisse aus, wählen Sie die in Schritt 4 erstellte Aktion Remove Background und klicken Sie auf die Schaltfläche Run:

Bitte haben Sie etwas Geduld. Adobe Photoshop wird jedes Bild im ausgewählten Verzeichnis öffnen, die aufgezeichneten Aktionen wiederholen (Ebenensperre ausschalten, Hintergrund löschen, Bild reduzieren) und es in einem anderen ausgewählten Verzeichnis speichern. Dieser Vorgang kann einige Minuten dauern, je nach Anzahl der Bilder.

Wenn der Vorgang abgeschlossen ist, können Sie zum nächsten Schritt übergehen.
Hochladen auf den Server
Verwenden Sie eine der folgenden Anleitungen (zugeschnitten auf Ihr PC-Betriebssystem), um das Verzeichnis dataset auf den Remote-Server hochzuladen. Legen Sie es zum Beispiel im Home-Verzeichnis des Standardbenutzers /home/usergpu ab:
Vor-Installation
Aktualisieren Sie vorhandene Systempakete:
sudo apt update && sudo apt -y upgrade
Installieren Sie zwei zusätzliche Pakete:
sudo apt install -y python3-tk python3.10-venv
Installieren wir das CUDA® Toolkit Version 11.8. Laden wir die spezifische Pin-Datei herunter:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
Der folgende Befehl legt die heruntergeladene Datei im Systemverzeichnis ab, das vom apt Paketmanager kontrolliert wird:
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
Der nächste Schritt ist das Herunterladen des CUDA-Hauptrepositorys:
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
Danach fahren Sie mit der Installation des Pakets mit dem Standardprogramm dpkg fort:
sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
Kopieren Sie den GPG-Schlüsselring in das Systemverzeichnis. Dadurch wird er für die Verwendung durch die Dienstprogramme des Betriebssystems, einschließlich des apt-Paketmanagers, verfügbar:
sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
Aktualisieren Sie die System-Cache-Repositories:
sudo apt-get update
Installieren Sie das CUDA® Toolkit mit apt:
sudo apt-get -y install cuda
Fügen Sie CUDA® zu PATH hinzu. Öffnen Sie die Bash-Shell-Konfiguration:
nano ~/.bashrc
Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Speichern Sie die Datei und starten Sie den Server neu:
sudo shutdown -r now
Trainer installieren
Kopieren Sie das Repository des Kohya-Projekts auf den Server:
git clone https://github.com/bmaltais/kohya_ss.git
Öffnen Sie das heruntergeladene Verzeichnis:
cd kohya_ss
Machen Sie das Setup-Skript ausführbar:
chmod +x ./setup.sh
Führen Sie das Skript aus:
./setup.sh
Sie erhalten eine Warnmeldung vom Beschleunigungsprogramm. Lassen Sie uns das Problem lösen. Aktivieren Sie die virtuelle Umgebung des Projekts:
source venv/bin/activate
Installieren Sie das fehlende Paket:
pip install scipy
Und konfigurieren Sie das Beschleunigungsprogramm manuell:
accelerate config
Seien Sie vorsichtig, denn die Aktivierung einer ungeraden Anzahl von CPUs wird einen Fehler verursachen. Wenn ich zum Beispiel 5 GPUs habe, können nur 4 mit dieser Software verwendet werden. Andernfalls wird beim Start des Prozesses ein Fehler auftreten. Sie können die neue Konfiguration des Dienstprogramms sofort überprüfen, indem Sie einen Standardtest aufrufen:
accelerate test
Wenn alles in Ordnung ist, erhalten Sie eine Meldung wie diese:
Test is a success! You are ready for your distributed training!
deactivate
Jetzt können Sie den öffentlichen Server des Trainers mit der Gradio-GUI und einer einfachen Login/Passwort-Authentifizierung starten (ändern Sie den Benutzer/das Passwort in Ihr eigenes):
./gui.sh --share --username user --password password
Sie werden zwei Zeichenfolgen erhalten:
Running on local URL: http://127.0.0.1:7860 Running on public URL: https://.gradio.live
Öffnen Sie Ihren Webbrowser und geben Sie die öffentliche URL in die Adressleiste ein. Geben Sie Ihren Benutzernamen und Ihr Passwort in die entsprechenden Felder ein und klicken Sie dann auf Anmelden:

Vorbereiten des Datensatzes
Beginnen Sie damit, einen neuen Ordner zu erstellen, in dem Sie das trainierte LoRA-Modell speichern werden:
mkdir /home/usergpu/myloramodel
Öffnen Sie die folgenden Registerkarten: Utilities >> Captioning >> BLIP captioning. Füllen Sie die Lücken wie in der Abbildung gezeigt aus und klicken Sie auf Caption images:

Trainer lädt ein spezielles neuronales Netzwerkmodell (1,6 GB) herunter und führt es aus, das für jede Bilddatei im ausgewählten Verzeichnis Textaufforderungen erstellt. Der Vorgang wird auf einem einzelnen Grafikprozessor ausgeführt und dauert etwa eine Minute.
Wechseln Sie zur Registerkarte LoRA >> Tools >> Dataset preparation >> Dreambooth/LoRA folder preparation, füllen Sie die Lücken aus und drücken Sie nacheinander Prepare training data und Copy info to Folders Tab:

In diesem Beispiel verwenden wir den Namen nikolai als Instance prompt und "Person" als Class prompt. Wir setzen auch /home/usergpu/dataset als Training Images und /home/usergpu/myloramodel als Destination training directory.
Wechseln Sie erneut auf die Registerkarte LoRA >> Training >> Folders. Vergewissern Sie sich, dass die Felder Image folder, Output folder und Logging folder korrekt ausgefüllt sind. Falls gewünscht, können Sie Model output name durch Ihre eigene Adresse ersetzen. Klicken Sie abschließend auf die Schaltfläche Start training:

Das System beginnt mit dem Herunterladen von zusätzlichen Dateien und Modellen (~10 GB). Danach beginnt der Trainingsprozess. Je nach der Menge der Bilder und den vorgenommenen Einstellungen kann dies mehrere Stunden dauern. Sobald das Training abgeschlossen ist, können Sie das Verzeichnis /home/usergpu/myloramodel zur weiteren Verwendung auf Ihren Computer herunterladen.
Testen Sie Ihren LoRA
Wir haben einige Artikel über Stable Diffusion und seine Forks vorbereitet. Sie können versuchen, Easy Diffusion mit unserer Anleitung Easy Diffusion UI zu installieren. Nachdem das System installiert wurde und läuft, können Sie Ihr LoRA-Modell im SafeTensors-Format direkt hochladen auf /home/usergpu/easy-diffusion/models/lora
Aktualisieren Sie die Easy Diffusion-Webseite und wählen Sie Ihr Modell aus der Dropdown-Liste:

Lassen Sie uns eine einfache Eingabeaufforderung schreiben, portrait of <nikolai> wearing a cowboy hat, und unsere ersten Bilder erzeugen. Hier haben wir ein benutzerdefiniertes Stable Diffusion-Modell verwendet, das wir von civitai.com heruntergeladen haben: Realistic Vision v6.0 B1:

Sie können mit Prompts und Modellen, die auf Stable Diffusion basieren, experimentieren, um bessere Ergebnisse zu erzielen. Viel Spaß!
Siehe auch:
Aktualisiert: 26.03.2025
Veröffentlicht: 21.01.2025