Stable Diffusion XL mit DreamBooth und LoRA feinabstimmen
Lerne, wie du Stable Diffusion XL mit Hugging Face AutoTrain Advanced, DreamBooth und LoRA anhand eigener Fotos erfolgreich feinabstimmst — für personalisierte, hochwertige Bildgenerierung.
In diesem Tutorial lernst du Stable Diffusion XL und DreamBooth kennen und wie du über die Diffusers-Bibliothek auf das Bildgenerierungsmodell zugreifst. Außerdem zeigen wir, wie du das Modell mit eigenen Fotos feinabstimmst und seine Leistung bewertest. Wenn du neu in der KI bist, empfehlen wir dir als Einstieg den Kurs AI Fundamentals.
Stable Diffusion XL verstehen
Das Team von Stability AI hat Stable Diffusion XL (SDXL) 1.0 veröffentlicht — die nächste Evolutionsstufe textbasierter Bildgenerierungsmodelle. Dieses Open-Source-Modell baut auf dem zuvor nur für die Forschung verfügbaren SDXL 0.9 auf und ist aktuell das leistungsfähigste frei verfügbare Bildgenerierungsmodell.
Sowohl quantitative Analysen als auch qualitative, menschliche Bewertungen über mehrere Wochen belegen, dass SDXL im Vergleich zu anderen Open-Source-Modellen die höchste Bildqualität und Präferenz erzielt.
Die hohe Qualität wird durch ein Ensemble aus zwei Modellen erreicht — einem Basisgenerator mit 3,5 Milliarden Parametern und einem Refiner mit 6,6 Milliarden Parametern. Diese doppelte Pipeline maximiert die Bildqualität und bleibt dennoch effizient genug für Consumer-GPUs.
Mit SDXL 1.0 sind keine langen, komplexen Prompts mehr nötig, um beeindruckende Bilder zu erzeugen. Die Modellintelligenz ermöglicht detailreiche Bilder schon mit wenigen Wörtern.
Die Feinabstimmung von SDXL auf individuelle Datensätze und Aufgaben ist noch einfacher geworden. So erhalten wir sehr feine Kontrolle über Aufbau, Stil und Komposition.
Was ist DreamBooth?
DreamBooth, 2022 vom Google-Forschungsteam vorgestellt, ist ein großer Fortschritt in der generativen KI, insbesondere für Text-zu-Bild-Modelle wie Stable Diffusion.
Der Name DreamBooth kommt von der Beschreibung der Google-Forschenden:
"Es ist wie eine Fotobox, die ein Motiv so einfängt, dass es überall dort synthetisiert werden kann, wohin dich deine Träume führen."
DreamBooth erlaubt es, ein spezifisches, individuelles Motiv in das Modell einzubringen, auf das sich das feinabgestimmte Modell dann in unterschiedlichen Varianten spezialisiert. Im Ergebnis kannst du dir so deinen eigenen Bildgenerator für eine bestimmte Person, Figur, ein Objekt oder eine Szene bauen.
Für DreamBooth genügen wenige Bilder (typisch 3–5) des Motivs, um das Modell effektiv zu trainieren. Nach dem Training kann das Modell das Motiv in unzählige Umgebungen, Szenen und Posen versetzen — begrenzt nur durch deine Fantasie.
DreamBooth: Einsatzszenarien
Die Feinabstimmung des Bildgenerierungsmodells mit DreamBooth ist in vielen Bereichen hilfreich. Sie bietet mehr Freiheit zum Experimentieren und erzeugt hochwertige Bilder — ganz ohne Photoshop-Kenntnisse. Hier ein paar Beispiele, wie DreamBooth im Arbeitsalltag schnell Mehrwert stiften kann.
Kreativbranchen wie Grafikdesign, Werbung und Entertainment profitieren stark von DreamBooth, da es hohe Individualisierung und Einzigartigkeit in der visuellen Produktion ermöglicht.
DreamBooth ermöglicht Personalisierung, indem Szenarien erzeugt werden, die in der Realität schwer nachzustellen oder rein fiktional sind.
Es lässt sich auch in Bildung und Forschung einsetzen, wo visuelle Darstellung entscheidend ist — etwa für personalisierte Lerninhalte oder Forschungszwecke.
In den folgenden Abschnitten zeigen wir Schritt für Schritt, wie du das SDXL-Modell mit einem eigenen Datensatz über kostenlose Kaggle-GPUs nutzt und feinabstimmst.
Zugriff auf Stable Diffusion XL
Du kannst das Stable Diffusion XL Spaces-Demo auf Hugging Face testen. Es erzeugt schnell vier Bilder basierend auf deinem Prompt. Probiere es aus, bevor du entscheidest, ob es für deinen Use Case passt.
Wir laden den angepassten VAE-Decoder, der für fp16-Präzision modifiziert ist, ohne NaNs zu erzeugen.
Danach bauen wir eine Pipeline, indem wir das SDXL-Basismodell mit fp16-Präzision laden und den VAE-Decoder in den Diffusers-Workflow integrieren.
Wir könnten das Basismodell auch ohne „fp16“ laden, würden damit aber in GPU-Speicherprobleme laufen. Um SDXL auf Kaggle-, Colab- und Laptop-GPUs auszuführen, solltest du daher die fp16-Variante verwenden.
Zur Bildgenerierung brauchst du einen einfachen Prompt, die Anzahl der Inferenzschritte und die Anzahl der Bilder pro Prompt.
In unserem Beispiel erzeugen wir vier Bilder aus einem Prompt.
prompt ="A man in a spacesuit is running a marathon in the jungle."
image = pipe(prompt=prompt, num_inference_steps=25, num_images_per_prompt =4)Bereitgestellt von
Um die Bilder in einem Raster anzuzeigen, schreiben wir eine kleine Python-Funktion, die die Bilder skaliert und in einem Grid darstellt.
from PIL import Image
defimage_grid(imgs, rows, cols, resize=256):assertlen(imgs)== rows * cols
if resize isnotNone:
imgs =[img.resize((resize, resize))for img in imgs]
w, h = imgs[0].size
grid_w, grid_h = cols * w, rows * h
grid = Image.new("RGB", size=(grid_w, grid_h))for i, img inenumerate(imgs):
x = i % cols * w
y = i // cols * h
grid.paste(img, box=(x, y))return gridBereitgestellt von
Wir zeigen vier Bilder in einem 2x2-Grid, um die Modellausgaben bequem zu vergleichen.
Um Bildqualität und Genauigkeit weiter zu steigern, nutzen wir den Refiner.
Lade SDXL Refiner 1.0 über die Diffusion-Pipeline.
Erzeuge ein Bild mit dem SDXL-Basismodell. Ändere den Output-Typ auf „latent“, damit statt des rekonstruierten Bildes die latente Repräsentation zurückgegeben wird.
Übergib dem Refiner den Prompt und die latente Repräsentation des generierten Bildes.
Die Feinabstimmung von SDXL ist über die Zeit deutlich einfacher geworden. Dank AutoTrain Advanced können wir unser Modell jetzt mit nur einem Python-Skript feinabstimmen. Diese AutoML-Bibliothek ist für das Trainieren und Ausrollen modernster ML-Modelle mit minimalem Code gedacht.
Wenn du SDXL mit accelerate und transformers feinabstimmen möchtest, sieh dir das Colab-Notebook SDXL DreamBoot LoRA an. Das Notebook ist etwas veraltet, du musst es eventuell anpassen.
Setup
Bevor wir das DreamBooth-Skript starten, definieren wir einige Variablen, die wir für die Ausführung benötigen.
Projektname.
Pfad zum Basismodell.
Verzeichnis des Datensatzes.
Repo-ID, um das Modell zu Hugging Face zu pushen.
PROJECT_NAME ="Dreambooth_SDXL"
MODEL_NAME ="stabilityai/stable-diffusion-xl-base-1.0"
DATA_DIR ="/kaggle/input/abids-photos"
REPO_ID ="kingabzpro/sdxl-lora-abid"Bereitgestellt von
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
HF_TOKEN = user_secrets.get_secret("HUGGINGFACE_TOKEN")Bereitgestellt von
Privaten Datensatz in Kaggle anlegen
Um einen privaten Datensatz deiner Selfies in Kaggle zu erstellen, klicke im rechten Seitenpanel des Notebooks auf den Upload-Button.
Vergib einen Titel für den Datensatz und lade die ZIP-Datei mit fünf Selfies hoch, die an unterschiedlichen Orten aufgenommen wurden. In diesem Beispiel sind es Fotos des Autors.
Um alle fünf Bilder im Jupyter Notebook anzuzeigen, laden wir sie mit PIL und geben sie an unsere Funktion image_grid weiter.
from PIL import Image
defimage_grid(imgs, rows, cols, resize=256):assertlen(imgs)== rows * cols
if resize isnotNone:
imgs =[img.resize((resize, resize))for img in imgs]
w, h = imgs[0].size
grid_w, grid_h = cols * w, rows * h
grid = Image.new("RGB", size=(grid_w, grid_h))for i, img inenumerate(imgs):
x = i % cols * w
y = i // cols * h
grid.paste(img, box=(x, y))return grid
import globBereitgestellt von
Wir zeigen fünf hochwertige Bilder des Autors an unterschiedlichen Orten. Achte darauf, dass alle Fotos in hoher Qualität und ähnlicher Größe vorliegen.
imgs =[Image.open(path)for path in glob.glob("/kaggle/input/abids-photos/*.jpg")]
image_grid(imgs,1,5)Bereitgestellt von
AutoTrain DreamBooth-Trainingsskript
Jetzt stimmen wir unser Modell mit diesen fünf Bildern über das AutoTrain-DreamBooth-Skript fein ab.
Gib Basismodell, Projektname und Datenverzeichnis an.
Stelle sicher, dass der Instance-Prompt eindeutig ist und die Person oder das Objekt beschreibt. Verwende den vollständigen Namen der Person, „Abid Ali Awan“, und beschreibe das Foto detailliert.
Belasse die übrigen Parameter, um die beste Performance zu erzielen.
Gib das Hugging-Face-Zugriffstoken und die Repository-ID an, um den LoRA-Adapter in den Hugging Face Hub hochzuladen.
!autotrain dreambooth \
--model $MODEL_NAME \
--project-name $PROJECT_NAME \
--image-path $DATA_DIR \
--prompt "A photo of Abid Ali Awan wearing casual clothes, taking a selfie, and smiling." \
--resolution 1024 \
--batch-size 1 \
--num-steps 500 \
--gradient-accumulation 4 \
--lr 1e-4 \
--fp16 \
--gradient-checkpointing \
--push-to-hub \
--token $HF_TOKEN \
--repo-id $REPO_IDBereitgestellt von
Das Training dauerte 2 Stunden und 15 Minuten, anschließend wurden die LoRA-Gewichte zu Hugging Face gepusht.
LoRA, kurz für Low-Rank Adaptation, fügt einem bestehenden Modell kleine trainierbare Schichten hinzu, ohne die Originalgewichte zu verändern.
Der Vorteil von LoRA: Neue Konzepte wie Stile, Figuren oder Themen lassen sich in das Modell integrieren, ohne große Rechenleistung oder viel Speicher zu benötigen.
Steps:100%|█████████|500/500[2:15:11<00:00,14.49s/it, loss=0.119, lr=0.0001]Model weights saved in Dreambooth_SDXL/pytorch_lora_weights.safetensors
Steps:100%|█████████|500/500[2:15:11<00:00,16.22s/it, loss=0.119, lr=0.0001]
pytorch_lora_weights.safetensors:100%|████|23.4M/23.4M [00:01<00:00,11.9MB/s]Bereitgestellt von
Statt eine 7-GB-Modelldatei zu speichern, sichern wir einen 23,4-MB-LoRA-Adapter, der bei der Inferenz an das Basismodell angehängt wird.
Wir erstellen eine Diffusion-Pipeline zur Bildgenerierung mit einem angepassten VAE-Decoder und dem SDXL-Basismodell in FP16.
Anschließend laden wir die LoRA-Gewichte und hängen sie über unsere Hugging-Face-Repo-ID an das Basismodell an.
Zum Schluss lassen wir die Pipeline mit dem Prompt laufen und erzeugen drei Bilder.
from diffusers import DiffusionPipeline, AutoencoderKL, StableDiffusionXLImg2ImgPipeline
import torch
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",
torch_dtype=torch.float16
)
pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0",
vae=vae,
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True,)
pipe.to("cuda");
pipe.load_lora_weights(REPO_ID, weight_name="pytorch_lora_weights.safetensors")
prompt ="A photo of Abid Ali Awan participating in a marathon."
image = pipe(prompt=prompt, num_inference_steps=25, num_images_per_prompt =3)
image_grid(image.images,1,3)Bereitgestellt von
Die Ergebnisse sind beeindruckend. Wir haben das Modell erfolgreich darauf trainiert, Bilder des Autors „Abid Ali Awan“ zu erzeugen.
Versuchen wir es mit einem weiteren Prompt.
prompt ="A photo of Abid Ali Awan giving a press conference."
image = pipe(prompt=prompt, num_inference_steps=25, num_images_per_prompt =3)
image_grid(image.images,1,3)Bereitgestellt von
Auch hier sind die Resultate hervorragend.
Refiner verwenden
In diesem Abschnitt verbessern wir das generierte Bild mit dem SDXL Refiner 1.0.
Zuerst erzeugen wir das Bild mit der Stable-Diffusion-Pipeline und setzen eine manuelle Seed, um Reproduzierbarkeit sicherzustellen.
prompt ="A photo of Abid Ali Awan wearing a business suit at an office meeting."
seed =65
generator = torch.Generator("cuda").manual_seed(seed)
image = pipe(prompt=prompt, num_inference_steps=25, generator=generator).images[0]
image.resize((300,300))Bereitgestellt von
Als nächstes laden wir den SDXL Refiner und lassen die Refiner-Pipeline mit demselben Prompt, Generator und Bild laufen.
Der Refiner hat die Bildqualität verbessert, das Ergebnis ähnelt jedoch nicht mehr dem ursprünglichen Foto des Autors, sondern zeigt einen generischen Geschäftsmann aus Südasien. Für feinabgestimmte Modelle ist es möglicherweise besser, auf den Refiner zu verzichten.
In diesem Tutorial hast du das Stable-Diffusion-XL-Modell und die DreamBooth-Technik kennengelernt. Zudem hast du gesehen, wie du Stable Diffusion XL mit dem DreamBooth-Skript von AutoTrain Advanced für personalisierte Bildgenerierung feinabstimmst.
Nach dem Laden des SDXL-Basismodells haben wir mit nur fünf Fotos des Autors einen schlanken LoRA-Adapter trainiert. Anschließend wurden die LoRA-Gewichte an das SDXL-Basismodell angehängt, sodass es hochwertige Bilder des Autors in verschiedensten erdachten Szenarien erzeugt — bei gleichzeitiger Beibehaltung der Fähigkeiten des vollständigen Modells mit mehreren Milliarden Parametern.
Der SDXL Refiner hebt zwar die Bildqualität an, war bei generischen Prompts am wirkungsvollsten und schien einen Teil der Personalisierung aus der Feinabstimmung zu überschreiben. Trotzdem zeigt das Tutorial, wie unkompliziert sich ein SDXL-Modell mit AutoTrain Advanced schon mit wenigen Bildern feinabstimmen lässt.
Wenn du neu in der KI-Welt bist und verstehen willst, worum sich der Hype dreht, empfehlen wir den Kurs AI Fundamentals. Dort lernst du Generative KI und große Sprachmodelle kennen. Außerdem kannst du mit dem Machine Learning Scientist with Python-Lernpfad deine Karriere im KI-Engineering starten. Dieses umfassende Programm führt dich in Natural Language Processing, Bildverarbeitung und verbreitete Python-ML-Packages wie scikit-learn, PySpark und Keras ein.
Als zertifizierter Data Scientist ist es meine Leidenschaft, modernste Technologien zu nutzen, um innovative Machine Learning-Anwendungen zu entwickeln. Mit meinem fundierten Hintergrund in den Bereichen Spracherkennung, Datenanalyse und Reporting, MLOps, KI und NLP habe ich meine Fähigkeiten bei der Entwicklung intelligenter Systeme verfeinert, die wirklich etwas bewirken können. Neben meinem technischen Fachwissen bin ich auch ein geschickter Kommunikator mit dem Talent, komplexe Konzepte in eine klare und prägnante Sprache zu fassen. Das hat dazu geführt, dass ich ein gefragter Blogger zum Thema Datenwissenschaft geworden bin und meine Erkenntnisse und Erfahrungen mit einer wachsenden Gemeinschaft von Datenexperten teile. Zurzeit konzentriere ich mich auf die Erstellung und Bearbeitung von Inhalten und arbeite mit großen Sprachmodellen, um aussagekräftige und ansprechende Inhalte zu entwickeln, die sowohl Unternehmen als auch Privatpersonen helfen, das Beste aus ihren Daten zu machen.
Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.
DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Gewinne Vertrauen in die OLS-Regression, indem du ihre theoretischen Grundlagen beherrschst. Erforsche, wie du einfache Implementierungen in Excel, R und Python durchführst.
Lerne die Grundlagen der KI kennen, finde heraus, wie du KI effektiv bei der Arbeit nutzen kannst, und tauche in Modelle wie chatGPT ein, um dich in der dynamischen KI-Landschaft zurechtzufinden.
Lerne maschinelles Lernen mit Python kennen und arbeite daran, ein Experte für maschinelles Lernen zu werden. Entdecke überwachtes, unüberwachtes und tiefes Lernen.
In diesem Tutorial lernst du Stable Diffusion XL und DreamBooth kennen und wie du über die Diffusers-Bibliothek auf das Bildgenerierungsmodell zugreifst. Außerdem zeigen wir, wie du das Modell mit eigenen Fotos feinabstimmst und seine Leistung bewertest. Wenn du neu in der KI bist, empfehlen wir dir als Einstieg den Kurs AI Fundamentals.
Stable Diffusion XL verstehen
Das Team von Stability AI hat Stable Diffusion XL (SDXL) 1.0 veröffentlicht — die nächste Evolutionsstufe textbasierter Bildgenerierungsmodelle. Dieses Open-Source-Modell baut auf dem zuvor nur für die Forschung verfügbaren SDXL 0.9 auf und ist aktuell das leistungsfähigste frei verfügbare Bildgenerierungsmodell.
Sowohl quantitative Analysen als auch qualitative, menschliche Bewertungen über mehrere Wochen belegen, dass SDXL im Vergleich zu anderen Open-Source-Modellen die höchste Bildqualität und Präferenz erzielt.
Bild von arxiv.org
Die hohe Qualität wird durch ein Ensemble aus zwei Modellen erreicht — einem Basisgenerator mit 3,5 Milliarden Parametern und einem Refiner mit 6,6 Milliarden Parametern. Diese doppelte Pipeline maximiert die Bildqualität und bleibt dennoch effizient genug für Consumer-GPUs.
Mit SDXL 1.0 sind keine langen, komplexen Prompts mehr nötig, um beeindruckende Bilder zu erzeugen. Die Modellintelligenz ermöglicht detailreiche Bilder schon mit wenigen Wörtern.
Die Feinabstimmung von SDXL auf individuelle Datensätze und Aufgaben ist noch einfacher geworden. So erhalten wir sehr feine Kontrolle über Aufbau, Stil und Komposition.
Was ist DreamBooth?
DreamBooth, 2022 vom Google-Forschungsteam vorgestellt, ist ein großer Fortschritt in der generativen KI, insbesondere für Text-zu-Bild-Modelle wie Stable Diffusion.
Der Name DreamBooth kommt von der Beschreibung der Google-Forschenden:
"Es ist wie eine Fotobox, die ein Motiv so einfängt, dass es überall dort synthetisiert werden kann, wohin dich deine Träume führen."
Bild von DreamBooth
DreamBooth erlaubt es, ein spezifisches, individuelles Motiv in das Modell einzubringen, auf das sich das feinabgestimmte Modell dann in unterschiedlichen Varianten spezialisiert. Im Ergebnis kannst du dir so deinen eigenen Bildgenerator für eine bestimmte Person, Figur, ein Objekt oder eine Szene bauen.
Für DreamBooth genügen wenige Bilder (typisch 3–5) des Motivs, um das Modell effektiv zu trainieren. Nach dem Training kann das Modell das Motiv in unzählige Umgebungen, Szenen und Posen versetzen — begrenzt nur durch deine Fantasie.
DreamBooth: Einsatzszenarien
Die Feinabstimmung des Bildgenerierungsmodells mit DreamBooth ist in vielen Bereichen hilfreich. Sie bietet mehr Freiheit zum Experimentieren und erzeugt hochwertige Bilder — ganz ohne Photoshop-Kenntnisse. Hier ein paar Beispiele, wie DreamBooth im Arbeitsalltag schnell Mehrwert stiften kann.
In den folgenden Abschnitten zeigen wir Schritt für Schritt, wie du das SDXL-Modell mit einem eigenen Datensatz über kostenlose Kaggle-GPUs nutzt und feinabstimmst.
Zugriff auf Stable Diffusion XL
Du kannst das Stable Diffusion XL Spaces-Demo auf Hugging Face testen. Es erzeugt schnell vier Bilder basierend auf deinem Prompt. Probiere es aus, bevor du entscheidest, ob es für deinen Use Case passt.
Bild von Stable Diffusion XL auf TPUv5e
Alternativ kannst du mit der Python-Bibliothek
diffusersBilder mit eigenem Prompt generieren.Setup
Bevor du den Code ausführst, stelle sicher, dass du eine GPU-Maschine mit CUDA-Unterstützung nutzt.
Installiere danach das Diffusers-Paket über PIP.
Basismodell und VAE-Decoder laden
Wir laden den angepassten VAE-Decoder, der für fp16-Präzision modifiziert ist, ohne NaNs zu erzeugen.
Danach bauen wir eine Pipeline, indem wir das SDXL-Basismodell mit fp16-Präzision laden und den VAE-Decoder in den Diffusers-Workflow integrieren.
Wir könnten das Basismodell auch ohne „fp16“ laden, würden damit aber in GPU-Speicherprobleme laufen. Um SDXL auf Kaggle-, Colab- und Laptop-GPUs auszuführen, solltest du daher die fp16-Variante verwenden.
Die Bildgenerierungspipeline ausführen
Zur Bildgenerierung brauchst du einen einfachen Prompt, die Anzahl der Inferenzschritte und die Anzahl der Bilder pro Prompt.
In unserem Beispiel erzeugen wir vier Bilder aus einem Prompt.
Um die Bilder in einem Raster anzuzeigen, schreiben wir eine kleine Python-Funktion, die die Bilder skaliert und in einem Grid darstellt.
Wir zeigen vier Bilder in einem 2x2-Grid, um die Modellausgaben bequem zu vergleichen.
Die Ergebnisse sind stark. SDXL ist deutlich besser als Stable Diffusion 1.6.
Schreiben wir noch einen Prompt und generieren drei Bilder eines Affen, der mit Feuerwerk spielt.
Lerne im Tutorial How to Run Stable Diffusion, wie du das Stable-Diffusion-Modell online und lokal nutzt.
Ergebnisse mit Refiner verbessern
Um Bildqualität und Genauigkeit weiter zu steigern, nutzen wir den Refiner.
Das verfeinerte Bild ist hochwertig und folgt dem Prompt sehr genau.
Erfahre im Code-Along Generating Photorealistic Images using AI with Diffusers in Python, wie du mit modernen Diffusionsmodellen fotorealistische Bilder in Python erzeugst.
SDXL mit AutoTrain Advanced feinabstimmen
Die Feinabstimmung von SDXL ist über die Zeit deutlich einfacher geworden. Dank AutoTrain Advanced können wir unser Modell jetzt mit nur einem Python-Skript feinabstimmen. Diese AutoML-Bibliothek ist für das Trainieren und Ausrollen modernster ML-Modelle mit minimalem Code gedacht.
Du kannst das Python-Paket mit PIP installieren:
Wenn du SDXL mit
accelerateundtransformersfeinabstimmen möchtest, sieh dir das Colab-Notebook SDXL DreamBoot LoRA an. Das Notebook ist etwas veraltet, du musst es eventuell anpassen.Setup
Bevor wir das DreamBooth-Skript starten, definieren wir einige Variablen, die wir für die Ausführung benötigen.
Als nächstes legst du ein Hugging-Face-Token über die Secret-Funktion von Kaggle an. Wie du Secrets einrichtest, erfährst du im Artikel Mistral 7B Tutorial: Step-by-Step Guide for Using Mistral 7B.
Privaten Datensatz in Kaggle anlegen
Um einen privaten Datensatz deiner Selfies in Kaggle zu erstellen, klicke im rechten Seitenpanel des Notebooks auf den Upload-Button.
Vergib einen Titel für den Datensatz und lade die ZIP-Datei mit fünf Selfies hoch, die an unterschiedlichen Orten aufgenommen wurden. In diesem Beispiel sind es Fotos des Autors.
Um alle fünf Bilder im Jupyter Notebook anzuzeigen, laden wir sie mit PIL und geben sie an unsere Funktion
image_gridweiter.Wir zeigen fünf hochwertige Bilder des Autors an unterschiedlichen Orten. Achte darauf, dass alle Fotos in hoher Qualität und ähnlicher Größe vorliegen.
AutoTrain DreamBooth-Trainingsskript
Jetzt stimmen wir unser Modell mit diesen fünf Bildern über das AutoTrain-DreamBooth-Skript fein ab.
Das Training dauerte 2 Stunden und 15 Minuten, anschließend wurden die LoRA-Gewichte zu Hugging Face gepusht.
LoRA, kurz für Low-Rank Adaptation, fügt einem bestehenden Modell kleine trainierbare Schichten hinzu, ohne die Originalgewichte zu verändern.
Der Vorteil von LoRA: Neue Konzepte wie Stile, Figuren oder Themen lassen sich in das Modell integrieren, ohne große Rechenleistung oder viel Speicher zu benötigen.
Statt eine 7-GB-Modelldatei zu speichern, sichern wir einen 23,4-MB-LoRA-Adapter, der bei der Inferenz an das Basismodell angehängt wird.
Bild von kingabzpro/sdxl-lora-abid
Inference mit dem feinabgestimmten SDXL
Wir erstellen eine Diffusion-Pipeline zur Bildgenerierung mit einem angepassten VAE-Decoder und dem SDXL-Basismodell in FP16.
Anschließend laden wir die LoRA-Gewichte und hängen sie über unsere Hugging-Face-Repo-ID an das Basismodell an.
Zum Schluss lassen wir die Pipeline mit dem Prompt laufen und erzeugen drei Bilder.
Die Ergebnisse sind beeindruckend. Wir haben das Modell erfolgreich darauf trainiert, Bilder des Autors „Abid Ali Awan“ zu erzeugen.
Versuchen wir es mit einem weiteren Prompt.
Auch hier sind die Resultate hervorragend.
Refiner verwenden
In diesem Abschnitt verbessern wir das generierte Bild mit dem SDXL Refiner 1.0.
Zuerst erzeugen wir das Bild mit der Stable-Diffusion-Pipeline und setzen eine manuelle Seed, um Reproduzierbarkeit sicherzustellen.
Als nächstes laden wir den SDXL Refiner und lassen die Refiner-Pipeline mit demselben Prompt, Generator und Bild laufen.
Der Refiner hat die Bildqualität verbessert, das Ergebnis ähnelt jedoch nicht mehr dem ursprünglichen Foto des Autors, sondern zeigt einen generischen Geschäftsmann aus Südasien. Für feinabgestimmte Modelle ist es möglicherweise besser, auf den Refiner zu verzichten.
Nach der Feinabstimmung des SDXL-Modells ist der nächste Schritt, eine Generative-AI-Anwendung zu bauen. Inspiration für dein Projekt findest du im Blog 5 Projects Built with Generative Models and Open Source Tools.
Fazit
In diesem Tutorial hast du das Stable-Diffusion-XL-Modell und die DreamBooth-Technik kennengelernt. Zudem hast du gesehen, wie du Stable Diffusion XL mit dem DreamBooth-Skript von AutoTrain Advanced für personalisierte Bildgenerierung feinabstimmst.
Nach dem Laden des SDXL-Basismodells haben wir mit nur fünf Fotos des Autors einen schlanken LoRA-Adapter trainiert. Anschließend wurden die LoRA-Gewichte an das SDXL-Basismodell angehängt, sodass es hochwertige Bilder des Autors in verschiedensten erdachten Szenarien erzeugt — bei gleichzeitiger Beibehaltung der Fähigkeiten des vollständigen Modells mit mehreren Milliarden Parametern.
Der SDXL Refiner hebt zwar die Bildqualität an, war bei generischen Prompts am wirkungsvollsten und schien einen Teil der Personalisierung aus der Feinabstimmung zu überschreiben. Trotzdem zeigt das Tutorial, wie unkompliziert sich ein SDXL-Modell mit AutoTrain Advanced schon mit wenigen Bildern feinabstimmen lässt.
Wenn du neu in der KI-Welt bist und verstehen willst, worum sich der Hype dreht, empfehlen wir den Kurs AI Fundamentals. Dort lernst du Generative KI und große Sprachmodelle kennen. Außerdem kannst du mit dem Machine Learning Scientist with Python-Lernpfad deine Karriere im KI-Engineering starten. Dieses umfassende Programm führt dich in Natural Language Processing, Bildverarbeitung und verbreitete Python-ML-Packages wie scikit-learn, PySpark und Keras ein.