Erfahren Sie, wie Sie Stable Diffusion XL mit Hugging Face AutoTrain Advance, DreamBooth und LoRA für eine individuelle, qualitativ hochwertige Bilderzeugung erfolgreich auf persönlichen Fotos optimieren.
In diesem Tutorial erfahren wir mehr über Stable Diffusion XL und Dream Booth und wie wir mithilfe der Diffusor-Bibliothek auf das Bildgenerierungsmodell zugreifen können. Darüber hinaus lernen wir, das Modell anhand persönlicher Fotos zu optimieren und seine Leistung zu bewerten. Wenn Sie ein Neuling in Sachen KI sind, empfehlen wir Ihnen, einen Kurs zu KI-Grundlagen zu besuchen , um eine Einführung zu erhalten.
Stabile Diffusion XL verstehen
Das Stability AI-Team hat Stable Diffusion XL (SDXL) 1.0 veröffentlicht , die nächste Entwicklungsstufe der KI-Modelle zur Text-zu-Bild-Generierung. Dieses Open-Source-Modell baut auf dem vorherigen, nur für Forschungszwecke verfügbaren SDXL 0.9-Modell auf und ist das weltweit leistungsfähigste öffentlich verfügbare Modell zur Bilderzeugung.
Sowohl die quantitative Analyse als auch die qualitative menschliche Bewertung über wochenlange Experimente hinweg zeigen, dass SDXL im Vergleich zu anderen Open-Source-Modellen in der Lage ist, Bilder von höchster Qualität und mit den meisten Präferenzen zu erzeugen.
Diese hohe Qualität wurde durch die Verwendung eines Ensembles aus zwei Modellen erreicht – einem Basisgenerator mit 3,5 Milliarden Parametern und einem Verfeinerer mit 6,6 Milliarden Parametern. Diese duale Pipeline maximiert die Bildqualität und bleibt gleichzeitig effizient genug, um auf Consumer-GPUs ausgeführt zu werden.
Mit SDXL 1.0 benötigen Benutzer keine langen, komplexen Eingabeaufforderungen mehr, um beeindruckende Bilder zu erstellen. Dank der Intelligenz von SDXL können aus nur wenigen Wörtern komplexe Bilder erstellt werden.
Die Feinabstimmung von SDXL für benutzerdefinierte Datensätze und Aufgaben ist jetzt noch einfacher. Wir können Struktur, Stil und Zusammensetzung präzise steuern.
Was ist DreamBooth?
DreamBooth , das 2022 vom Google-Forschungsteam vorgestellt wurde, stellt einen bedeutenden Fortschritt auf dem Gebiet der generativen KI dar, insbesondere im Bereich der Text-zu-Bild-Modelle wie Stable Diffusion.
Der Name DreamBooth stammt von den Google-Forschern, weil:
„Es ist wie eine Fotokabine, erfasst das Motiv jedoch auf eine Weise, die es ermöglicht, es überall dort zu synthetisieren, wo Ihre Träume Sie hinführen.“
Mit DreamBooth können Sie ein bestimmtes benutzerdefiniertes Motiv einfügen, das das fein abgestimmte Modell dann auf verschiedene Arten rendern kann. In gewisser Weise eröffnet es also die Möglichkeit, Ihren eigenen Bildgenerator zu erstellen, der sich auf eine bestimmte Person, Figur, ein Objekt oder eine Szene konzentriert.
DreamBooth benötigt nur wenige (normalerweise 3-5) Bilder des Motivs, um das Modell effektiv zu trainieren. Nach dem Training kann das Modell das Motiv in unzählige Einstellungen, Szenen und Posen bringen, wobei nur die Vorstellungskraft des Benutzers Grenzen setzt.
DreamBooth-Anwendungsfälle
Die Feinabstimmung des Bildgenerierungsmodells mit DreamBooth kann in vielen Bereichen von Vorteil sein. Es bietet mehr Freiheit zum Experimentieren und Generieren hochwertiger Bilder ohne Photoshop-Kenntnisse. Hier sind einige Beispiele, wie es den Arbeitsbereich ganz einfach aufwerten kann.
- Kreative Branchen wie Grafikdesign, Werbung und Unterhaltung können stark von DreamBooth profitieren, da es ein hohes Maß an Anpassung und Einzigartigkeit bei der Erstellung visueller Inhalte bietet.
- DreamBooth ermöglicht eine Personalisierung durch die Erstellung von Szenarien, die im wirklichen Leben möglicherweise nur schwer nachzubilden sind oder rein fiktiv sind.
- Es kann auch in Bildungs- und Forschungsbereichen eingesetzt werden , in denen die visuelle Darstellung von entscheidender Bedeutung ist, da es zur Erstellung personalisierter Bildungsinhalte oder für Forschungszwecke verwendet werden kann.
In den folgenden Abschnitten werden wir tiefer in den Prozess des Zugriffs auf das SDXL-Modell und seiner Feinabstimmung auf einem benutzerdefinierten Datensatz unter Verwendung kostenloser Kaggle-GPUs eintauchen.
Zugriff auf Stable Diffusion XL
Wir können die Demo von Stable Diffusion XL Spaces auf Hugging Face ausprobieren, die auf Grundlage Ihrer Eingaben schnell vier Bilder generiert. Probieren Sie es aus, bevor Sie entscheiden, ob es für Ihre Anwendung geeignet ist.
Die andere Möglichkeit besteht darin, die Python-Bibliothek zu verwenden, diffusersum das Bild mithilfe der benutzerdefinierten Eingabeaufforderung zu generieren.
Einrichten
Bevor wir mit der Ausführung des Codes beginnen, stellen Sie sicher, dass Sie eine GPU-Maschine mit CUDA-Unterstützung verwenden.
Installieren Sie anschließend das Diffusorpaket mit PIP.
Laden des Basismodells und des VAE-Decoders
Wir werden den benutzerdefinierten VAE-Decoder laden , der so geändert wurde, dass er mit fp16-Präzision ausgeführt wird, ohne NaNs zu generieren.
Danach erstellen wir eine Pipeline, indem wir das Basis-SDXL-Modell mit fp16-Präzision laden und den VAE-Decoder in den Workflow des Diffusors integrieren.
Wir hätten den Basismodus direkt ohne „fp16“ laden können, aber das hätte zu GPU-Speicherproblemen geführt. Um es auf Kaggle-, Colab- und Laptop-GPUs auszuführen, müssen Sie also auf das Modell in der fp16-Variante zugreifen.
Ausführen der Bildgenerierungs-Pipeline
Um das Bild zu generieren, müssen Sie eine einfache Eingabeaufforderung, Inferenzschritte und die Anzahl der Bilder pro Eingabeaufforderung angeben.
In unserem Fall generieren wir aus der einzelnen Eingabeaufforderung vier Bilder.
Um Bilder in einem Raster anzuzeigen, können wir eine einfache Python-Funktion schreiben, die die Größe der Bilder ändert und sie in einem Raster anzeigt.
Wir zeigen vier Bilder in einem 2×2-Raster an, um die Modellausgaben einfach vergleichen zu können.
Die Ergebnisse sind erstaunlich. SDXL ist sicherlich viel besser als Stable Diffusion 1.6.
Lassen Sie uns eine weitere Eingabeaufforderung schreiben und drei Bilder eines Affen generieren, der mit Feuerwerk spielt.
Erfahren Sie, wie Sie online und lokal auf das Stable Diffusion-Modell zugreifen können, indem Sie dem Tutorial „So führen Sie Stable Diffusion aus“ folgen .
Verbessern Sie die Ergebnisse mit Refiner
Um die Bildqualität und Modellgenauigkeit weiter zu verbessern, verwenden wir Refiner .
- Laden Sie SDXL Refiner 1.0 mithilfe der Diffusionspipeline.
- Generieren Sie das Bild mit dem Basis-SDXL-Modell. Wir ändern den Ausgabetyp in „latent“, wodurch die latente Darstellung der Eingabe und nicht das rekonstruierte Bild zurückgegeben wird.
- Versorgen Sie den Verfeinerer mit der sofortigen und latenten Darstellung des generierten Bildes.
Das verfeinerte Bild ist von hoher Qualität und folgt der Eingabeaufforderung genau.
Erfahren Sie, wie Sie mit Python und modernsten Diffusionsmodellen fotorealistische Bilder erstellen, indem Sie sich die Code-Along- Anleitung zum Erstellen fotorealistischer Bilder mithilfe von KI mit Diffusoren in Python ansehen .
Feinabstimmung von SDXL mit AutoTrain Advanced
Die Feinabstimmung von SDXL ist mit der Zeit viel einfacher geworden. Dank AutoTrain Advance können wir unser Modell jetzt mit nur einem Python-Skript feinabstimmen. Diese Bibliothek für automatisches maschinelles Lernen ist für das Trainieren und Bereitstellen hochmoderner Modelle für maschinelles Lernen mit minimalem Code konzipiert.
Sie können das Python-Paket mit PIP installieren:
accelerateWenn Sie das SDXL-Modell mit und optimieren möchten transformers, sehen Sie sich das SDXL DreamBoot LoRA Colab Notebook an. Das Notebook ist etwas veraltet und Sie müssen möglicherweise Änderungen vornehmen, um es ordnungsgemäß auszuführen.
Einrichten
Bevor wir das DreamBooth-Skript ausführen, sollten wir einige Variablen einrichten, die wir zum Ausführen des Skripts verwenden werden.
- Geben Sie dem Projekt einen Namen.
- Standort des Basismodells.
- Verzeichnis des Datensatzes.
- Repo-ID zum Pushen des Modells zu Hugging Face.
Als Nächstes richten Sie mithilfe der Kaggle- Funktion „Secret“ ein Hugging Face-Token ein. Erfahren Sie im Mistral 7B-Tutorial: Schritt-für-Schritt-Anleitung zur Verwendung von Mistral 7B, wie Sie Geheimnisse einrichten .
Erstellen des privaten Datensatzes in Kaggle
Um den privaten Datensatz Ihrer Selfies in Kaggle zu erstellen, müssen Sie auf die Schaltfläche „Hochladen“ im rechten Bereich des Notizbuchs klicken.
Fügen Sie den Datensatztitel hinzu und laden Sie die ZIP-Datei mit fünf Fotos der an verschiedenen Orten aufgenommenen Selfies hoch. In diesem Fall sind es die Fotos des Autors.
Um alle fünf Bilder im Jupyter-Notebook anzuzeigen, laden wir die Bilder mit PIL und geben es an unsere image_gridFunktion weiter.
Wir haben fünf hochwertige Bilder des Autors an verschiedenen Standorten angezeigt. Bitte stellen Sie sicher, dass alle Fotos eine hohe Qualität und eine ähnliche Größe haben.
AutoTrain Dream Booth-Schulungsskript
Es ist Zeit, unser Modell anhand dieser fünf Bilder mithilfe des AutoTrain DreamBooth-Skripts zu optimieren.
- Geben Sie Basismodell, Projektnamen und Datenverzeichnis an.
- Stellen Sie sicher, dass die Instanzaufforderung eindeutig ist und die Person oder das Objekt beschreibt. Verwenden Sie den vollständigen Namen der Person, „Abid Ali Awan“, und beschreiben Sie das Foto ausführlich.
- Lassen Sie den Rest des Arguments unverändert, um die beste Leistung zu erzielen.
- Geben Sie den Hugging Face-Zugriffstoken und die Repository-ID ein, um den Modell-LoRA-Adopter zum Hugging Face Hub hochzuladen.
Es dauerte 2 Stunden und 15 Minuten, das Modell zu trainieren und die LoRA-Gewichte an Hugging Face zu übertragen.
LoRA ist die Abkürzung für Low-Rank Adaptation und ist eine Technik, bei der einem bestehenden Modell kleine trainierbare Schichten hinzugefügt werden, ohne die ursprünglichen Gewichte zu verändern.
LoRA ist vorteilhaft, da es die Einführung neuer Konzepte wie Kunststile, Charaktere oder Themen in das Modell ermöglicht, ohne dass umfangreiche Berechnungen oder Speichernutzung erforderlich sind.
Anstatt eine 7 GB große Modelldatei zu speichern, speichern wir einen 23,4 MB großen LoRA-Adapter, der während der Inferenz an das Basismodell angehängt wird.
SDXL Feinabgestimmte Modellinferenz
Wir erstellen eine Diffusionspipeline zur Generierung des Bildes und verwenden dabei einen benutzerdefinierten VAE-Decoder und ein SDXL-Basismodell mit FP16-Präzision.
Dann laden wir die LoRA-Gewichte und fügen sie unter Verwendung unserer Hugging Face-Repo-ID dem Basismodell hinzu.
Am Ende führen wir die Pipeline mit der Eingabeaufforderung aus und generieren drei Bilder.
Die Ergebnisse sind beeindruckend. Wir haben unser Modell erfolgreich optimiert, um Bilder des Autors „Abid Ali Awan“ zu generieren.
Versuchen wir es noch einmal mit einer anderen Eingabeaufforderung.
Die Ergebnisse sind wieder einmal außergewöhnlich.
Verwenden von Refiner
In diesem Abschnitt verbessern wir das generierte Bild mit dem SDXL Refiner 1.0.
Zunächst generieren wir das Bild mithilfe der Stable Diffusion-Pipeline und stellen einen manuellen Seed bereit, um die Reproduzierbarkeit sicherzustellen.
Als Nächstes laden wir den SDXL-Refiner und führen die Refiner-Pipeline mit derselben Eingabeaufforderung, demselben Generator und demselben generierten Bild aus.
Der Bildverfeinerer hat die Bildqualität verbessert, aber das resultierende Bild hat keine Ähnlichkeit mehr mit dem Originalfoto des Autors. Stattdessen zeigt es einen generischen Geschäftsmann aus Südasien. Vielleicht ist es bei fein abgestimmten Modellen besser, den Verfeinerer zu vermeiden predictive analytics.
Nach der Feinabstimmung des SDXL-Modells besteht der nächste Schritt darin, eine generative KI-Anwendung zu erstellen. Inspiration für die Erstellung Ihres Projekts finden Sie im Blog „5 Projekte, die mit generativen Modellen und Open-Source-Tools erstellt wurden“ .
Fazit
In diesem Tutorial haben wir das Stable Diffusion XL-Modell und die DreamBooth-Technik kennengelernt. Darüber hinaus haben wir gelernt, Stable Diffusion XL mithilfe des DreamBooth-Skripts von AutoTrain Advance für die personalisierte Bildgenerierung zu optimieren.
Nachdem wir das Basis-SDXL-Modell geladen hatten, trainierten wir einen leichten LoRA-Adapter mit nur fünf Fotos des Autors. Anschließend wurden LoRA-Gewichte an das Basis-SDXL angehängt, sodass es qualitativ hochwertige Bilder des Autors in verschiedenen imaginären Szenarien generieren konnte, während die Fähigkeiten des vollständigen Multi-Milliarden-Parameter-Modells erhalten blieben.
Obwohl der SDXL Refiner die Bildqualität verbesserte, war er für allgemeine Eingabeaufforderungen am effektivsten und schien einige durch Feinabstimmung erreichte Personalisierungen zu überschreiben. Dennoch zeigte das Tutorial, wie einfach es ist, ein SDXL-Modell mit AutoTrain Advance mit nur wenigen Bildern zu optimieren.
Wenn Sie neu in der Welt der KI sind und verstehen möchten, worum es bei all dem Hype geht, empfehlen wir Ihnen, einen Kurs in KI-Grundlagen zu belegen . Dadurch lernen Sie etwas über generative KI und komplexe Sprachmodelle. Darüber hinaus können Sie Ihre Karriere in der KI-Entwicklung ankurbeln, indem Sie sich für den Karriereweg „Machine Learning Scientist mit Python“ einschreiben . Dieses umfassende Programm hilft Ihnen dabei, die Verarbeitung natürlicher Sprache und Bildverarbeitung sowie beliebte Python-Pakete für maschinelles Lernen wie scikit-learn, PySpark und Keras zu erlernen.