Erinnern Sie sich noch an den grafischen Transformer, der im gesamten Internet populär wurde?
Kürzlich hat dieser große Blogger Jay Alammar in seinem Blog auch eine Illustration zum beliebten Stable Diffusion-Modell geschrieben, die es Ihnen ermöglicht, die Prinzipien des Bilderzeugungsmodells von Grund auf zu verstehen, mit sehr detaillierten Informationen und Videoerklärung!
Artikellink: https://jalammar.github.io/illustrated-stable-diffusion/
Videolink: https://www.youtube.com/watch?v= MXmacOUJUaw
Die kürzlich vom KI-Modell demonstrierten Bilderzeugungsfähigkeiten übertreffen die Erwartungen der Menschen bei weitem. Es kann Bilder mit erstaunlichen visuellen Effekten direkt auf der Grundlage von Textbeschreibungen erstellen geheimnisvoll und magisch, beeinflusste aber die Art und Weise, wie Menschen Kunst schaffen.
Die Veröffentlichung von Stable Diffusion ist ein Meilenstein in der Entwicklung der KI-Bilderzeugung. Es ist gleichbedeutend mit der Bereitstellung eines nutzbaren Hochleistungsmodells. Die generierte Bildqualität ist nicht nur sehr hoch, sie läuft auch schnell. verfügt aber auch über Ressourcen und Speicher. Die Anforderungen sind ebenfalls geringer.
Ich glaube, dass jeder, der die KI-Bildgenerierung ausprobiert hat, wissen möchte, wie es funktioniert. Dieser Artikel wird das Geheimnis enthüllen, wie Stable Diffusion für Sie funktioniert.
Funktional gesehen umfasst Stable Diffusion hauptsächlich zwei Aspekte: 1) Seine Kernfunktion besteht darin, Bilder nur basierend auf Textaufforderungen als Eingabe zu generieren (text2img); 2) Sie können es auch verwenden, um Bilder basierend auf Text zu beschreiben Nehmen Sie Änderungen vor (z. B. Eingabe als Text+Bild).
Im Folgenden werden Abbildungen verwendet, um die Komponenten von Stable Diffusion, ihre Interaktion untereinander und die Bedeutung der Bilderzeugungsoptionen und -parameter zu erläutern.
Stabile Diffusion ist ein System, das aus mehreren Komponenten und Modellen besteht, nicht ein einzelnes Modell.
Wenn wir das Modell aus der Perspektive des Gesamtmodells betrachten, können wir feststellen, dass es eine Textverständniskomponente zum Übersetzen von Textinformationen in numerische Darstellungen enthält, um die semantischen Informationen im Text zu erfassen.
Obwohl das Modell noch aus einer Makroperspektive analysiert wird und es später weitere Modelldetails geben wird, können wir auch grob spekulieren, dass es sich bei diesem Textencoder um einen speziellen Text eines Transformer-Sprachmodells (insbesondere des CLIP-Modells) handelt Encoder).
Die Eingabe des Modells ist eine Textzeichenfolge und die Ausgabe ist eine Liste von Zahlen, die zur Darstellung jedes Wortes/Tokens im Text verwendet werden, d. h. jedes Token wird in einen Vektor umgewandelt.
Dann werden diese Informationen an den Bildgenerator (Bildgenerator) übermittelt, der auch intern mehrere Komponenten enthält.
Der Bildgenerator besteht hauptsächlich aus zwei Stufen:
1. Bildinformationsersteller
Diese Komponente ist das exklusive Geheimrezept von Stable Diffusion Hier werden viele Leistungssteigerungen erzielt.
Diese Komponente führt mehrere Schritte aus, um Bildinformationen zu generieren, wobei Schritte auch Parameter in der Stable Diffusion-Schnittstelle und -Bibliothek sind und normalerweise auf 50 oder 100 voreingestellt sind.
Der Bildinformationsersteller arbeitet vollständig im Bildinformationsraum (oder Latentraum). Diese Funktion läuft schneller als andere Diffusionsmodelle, die im Pixelraum arbeiten. Technisch gesehen besteht diese Komponente aus einem UNet-Neuronen Netzwerk und einen Planungsalgorithmus.
Das Wort Diffusion beschreibt, was während des internen Betriebs dieser Komponente passiert, das heißt, die Informationen werden Schritt für Schritt verarbeitet und schließlich wird von der nächsten Komponente (dem Bilddecoder) ein qualitativ hochwertiges Bild generiert.
2. Bilddecoder
Der Bilddecoder zeichnet ein Bild basierend auf den vom Bildinformationsersteller erhaltenen Informationen. Der gesamte Prozess wird nur einmal ausgeführt, um das endgültige Pixelbild zu generieren.
Wie Sie sehen können, enthält Stable Diffusion insgesamt drei Hauptkomponenten, von denen jede über ein unabhängiges neuronales Netzwerk verfügt:
1) Clip Text wird für die Textkodierung verwendet.
Eingabe: Text
Ausgabe: 77 Token-Einbettungsvektoren, wobei jeder Vektor 768 Dimensionen enthält
2)UNet + SchedulerSchritt für Schritt Prozess/Verbreitung von Informationen im (latenten) Informationsraum .
Eingabe: Texteinbettung und ein anfängliches mehrdimensionales Array bestehend aus Rauschen (strukturierte Liste von Zahlen, auch Tensor genannt).
Ausgabe: ein verarbeitetes Informationsarray
3) Autoencoder Decoder (Autoencoder Decoder) , ein Decoder, der die verarbeitete Informationsmatrix verwendet, um das endgültige Bild zu zeichnen.
Eingabe: verarbeitete Informationsmatrix, Abmessungen sind (4, 64, 64)
Ausgabe: Ergebnisbild, jede Dimension ist (3, 512, 512), das heißt (rot/grün/blau, Breite, hoch)
Diffusion ist der Prozess, der in der rosa Bildinformationserstellungskomponente im Bild unten stattfindet. Der Prozess umfasst die Token-Einbettung, die den Eingabetext darstellt, und die zufällige anfängliche Bildinformationsmatrix (auch Latent genannt). Zum Zeichnen der Informationsmatrix des endgültigen Bildes ist ein Bilddecoder erforderlich.
Der gesamte Betriebsprozess erfolgt Schritt für Schritt und bei jedem Schritt werden weitere relevante Informationen hinzugefügt.
Um den gesamten Prozess intuitiver zu spüren, können Sie die zufällige latente Matrix zur Hälfte betrachten und beobachten, wie sie in visuelles Rauschen umgewandelt wird, wobei eine visuelle Inspektion durch den Bilddecoder durchgeführt wird.
Der gesamte Diffusionsprozess umfasst mehrere Schritte, wobei jeder Schritt auf der Grundlage der eingegebenen latenten Matrix arbeitet und eine weitere latente Matrix generiert, um den „Eingabetext“ und das Bild aus dem erhaltenen Modell „Visuelle Informationen“ besser anzupassen eine konzentrierte Art und Weise.
Durch die Visualisierung dieser latenten Daten können Sie sehen, wie diese Informationen in jedem Schritt addiert werden.
Der gesamte Prozess ist von Grund auf neu, was ziemlich aufregend aussieht. Besonders interessant sieht der Prozessübergang zwischen den Schritten 2 und 4 aus, als ob die Umrisse des Bildes aus dem Rauschen hervortreten würden.
Wie Diffusion funktioniert
Die Kernidee der Verwendung des Diffusionsmodells zur Bilderzeugung basiert immer noch auf dem vorhandenen leistungsstarken Computer-Vision-Modell. Solange die Eingabe ausreicht, können diese Modelle bei großen Datensätzen beliebig komplexe Operationen lernen.Angenommen, wir haben bereits ein Bild, erzeugen etwas Rauschen und fügen es dem Bild hinzu, und dann kann das Bild als Trainingsbeispiel betrachtet werden.
Durch die Verwendung derselben Operation kann eine große Anzahl von Trainingsbeispielen generiert werden, um die Kernkomponenten im Bilderzeugungsmodell zu trainieren .
Das obige Beispiel zeigt einige optionale Rauschwerte, beginnend mit dem Originalbild (Stufe 0, kein Rauschen) bis „Alles Rauschen hinzufügen“ (Stufe 4) ermöglicht die einfache Steuerung, wie viel Rauschen dem Bild hinzugefügt wird.
So können wir diesen Prozess auf Dutzende Schritte verteilen und Dutzende Trainingsbeispiele für jedes Bild im Datensatz generieren.
Basierend auf dem obigen Datensatz können wir einen Geräuschprädiktor mit hervorragender Leistung trainieren zum Training anderer Modelle. Wenn der Rauschprädiktor in einer bestimmten Konfiguration ausgeführt wird, kann er Bilder erzeugen.
Entfernen Sie das Rauschen und zeichnen Sie das Bild Der trainierte Rauschprädiktor kann ein Bild erstellen mit hinzugefügtem Rauschen kann entrauscht werden und die Menge des hinzugefügten Rauschens kann ebenfalls vorhergesagt werden.
Da das Rauschen der Probe vorhersehbar ist, wird das endgültige Bild vorhersehbar, wenn das Rauschen vom Bild subtrahiert wird sein Es wird näher an dem durch Modelltraining erhaltenen Bild sein.
Das erhaltene Bild ist kein exaktes Originalbild, sondern eine Verteilung, also eine Verteilung der Welt Pixelanordnungen, wie zum Beispiel der Himmel ist normalerweise blau, Menschen haben zwei Augen, Katzen haben spitze Ohren usw. und der spezifische erzeugte Bildstil hängt vollständig vom Trainingsdatensatz ab.
Stable Diffusion führt nicht nur die Bilderzeugung durch Rauschunterdrückung durch, sondern dies gilt auch für DALL-E 2 und Google Bildmodell.
Es ist wichtig zu beachten, dass der bisher beschriebene Diffusionsprozess keine Textdaten zur Generierung von Bildern verwendet. Wenn wir dieses Modell also einsetzen, kann es gut aussehende Bilder generieren, aber der Benutzer hat keine Möglichkeit zu steuern, was generiert wird.
Im nächsten Abschnitt beschreiben wir, wie Sie bedingten Text in den Prozess integrieren, um die Art der vom Modell generierten Bilder zu steuern.
Um den Bilderzeugungsprozess zu beschleunigen, führt Stable Diffusion den Diffusionsprozess nicht auf dem Pixelbild selbst aus, sondern auf der komprimierten Version des Bildes. In der Zeitung wird es auch als „Aufbruch in den latenten Raum“ bezeichnet.
Der gesamte Komprimierungsprozess, einschließlich der anschließenden Dekomprimierung und Zeichnung des Bildes, wird durch den Autoencoder abgeschlossen, der das Bild in den latenten Raum komprimiert und es dann nur noch mithilfe des Decoders anhand der komprimierten Informationen rekonstruiert.
Der Vorwärtsdiffusionsprozess wird beim Komprimieren der Latentbilder abgeschlossen, nicht auf das Pixelbild, sodass der Rauschprädiktor tatsächlich zur Vorhersage von Rauschen in komprimierten Darstellungen verwendet wird (latente Leerzeichen).
Vorwärtsprozess, das heißt, der Encoder im Autoencoder wird zum Trainieren des Rauschprädiktors verwendet. Sobald das Training abgeschlossen ist, können Bilder generiert werden, indem der umgekehrte Prozess ausgeführt wird (der Decoder im Autoencoder).
Die Vorwärts- und Rückwärtsprozesse sind unten dargestellt. Die Abbildung enthält auch eine Konditionierungskomponente zur Beschreibung der Textansagen des Bildes, die das Modell generieren soll.
Die Sprachverständniskomponente im Modell verwendet das Transformer-Sprachmodell, das Eingabetexteingabeaufforderungen in Token-Einbettungsvektoren umwandeln kann. Das veröffentlichte Stable Diffusion-Modell verwendet ClipText (GPT-basiertes Modell). In diesem Artikel wird der Einfachheit halber das BERT-Modell ausgewählt.
Experimente im Imagen-Artikel zeigen, dass ein größeres Sprachmodell mehr Bildqualitätsverbesserungen bringen kann als die Wahl einer größeren Bilderzeugungskomponente.
Das frühe Stable Diffusion-Modell verwendete das vorab trainierte ClipText-Modell von OpenAI, aber in Stable Diffusion V2 ist es auf die neu veröffentlichte, größere CLIP-Modellvariante OpenClip umgestiegen.
CLIP Wie haben Sie trainiert? ?
CLIP erfordert Bilder und deren Bildunterschriften, und der Datensatz enthält etwa 400 Millionen Bilder und Beschreibungen.
Der Datensatz wird anhand von Bildern aus dem Internet und dem entsprechenden „Alt“-Tag-Text erfasst.
CLIP ist eine Kombination aus Bild-Encoder und Text-Encoder. Der Trainingsprozess kann auf die Aufnahme von Bildern und Textbeschreibungen und die Verwendung von zwei Encodern zum separaten Codieren der Daten vereinfacht werden.
Verwenden Sie dann den Kosinusabstand, um die resultierenden Einbettungen zu vergleichen. Wenn Sie zum ersten Mal mit dem Training beginnen, ist die Ähnlichkeit zwischen ihnen definitiv sehr gering, selbst wenn die Textbeschreibung mit dem Bild übereinstimmt.
Da das Modell kontinuierlich aktualisiert wird, werden die Einbettungen, die der Encoder beim Codieren von Bildern und Text erhält, in den folgenden Phasen allmählich ähnlich.
Indem wir diesen Vorgang über den gesamten Datensatz hinweg wiederholen und einen Encoder mit einer großen Stapelgröße verwenden, sind wir endlich in der Lage, einen Einbettungsvektor zu generieren, bei dem Ähnlichkeit zwischen dem Bild des Hundes und dem Satz „Bild von“ besteht ein Hund".
Genau wie bei Word2vec muss der Trainingsprozess auch negative Beispiele nicht übereinstimmender Bilder und Bildunterschriften einbeziehen, und das Modell muss ihnen niedrigere Ähnlichkeitswerte zuweisen.
Um Textbedingungen als Teil des Bildgenerierungsprozesses zu integrieren, muss die Eingabe des Rauschprädiktors so angepasst werden, dass sie Text ist.
Alle Vorgänge erfolgen im latenten Raum, einschließlich codiertem Text, Eingabebild und Vorhersagerauschen.
Um besser zu verstehen, wie Text-Tokens in Unet verwendet werden, müssen Sie zunächst das Unet-Modell verstehen.
Ebenen im Unet-Rauschprädiktor (ohne Text)
Ein Diffusions-Unet, das keinen Text verwendet. Seine Eingabe und Ausgabe sind wie folgt:
Innerhalb des Modells sind Sie siehe:
1. Die Ebenen im Unet-Modell werden hauptsächlich zur Transformation von Latenzen verwendet.
2 Verbindung) speist es in die Verarbeitung hinter dem Netzwerk ein
4. Konvertieren Sie den Zeitschritt in einen Zeitschritt-Einbettungsvektor, der in der Ebene verwendet werden kann.
Ebenen in Unet Noise Predictor (mit Text)
Jetzt müssen Sie das vorherige System auf die Textversion umstellen.
Der Hauptänderungsteil besteht darin, Unterstützung für die Texteingabe (Begriff: Textkonditionierung) hinzuzufügen, dh eine Aufmerksamkeitsebene zwischen ResNet-Blöcken hinzuzufügen.
Es ist zu beachten, dass der ResNet-Block den Textinhalt nicht direkt sieht, sondern die latente Darstellung des Textes über die Aufmerksamkeitsschicht zusammenführt und dann die nächste ResNet-Textnachricht diesen Prozess nutzen kann .
Das obige ist der detaillierte Inhalt vonJay Alammar veröffentlicht ein weiteres neues Werk: Ultrahochwertige Illustration Stable Diffusion. Nach der Lektüre werden Sie das Prinzip der „Bilderzeugung' vollständig verstehen.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!