In diesem Blogpost werden wir die Anwendungen von VQGAN in Kombination mit diskreten absorbierenden Diffusionsmodellen aus dem erstaunlichen Papier untersuchen:
Wenn Sie neugierig auf die cleveren Techniken sind, die dies möglich gemacht haben, dann sind das Papier selbst und unser technischer Blogpost bestimmt etwas für Sie! In dem technischen Blogpost haben wir einen Überblick über die bisherigen generativen SOTA-Modelle gegeben, um dann zu einer neuen Klasse von Modellen zu gelangen, den Diffusionsmodellen. Wir haben uns eingehend mit der Architektur der Diskreten Absorbierenden Diffusionsmodelle beschäftigt. In diesem Blogpost gehen wir einen Schritt zurück und sehen uns an, wie wir die Eigenschaften dieses Modells für kreative Zwecke nutzen können.
In dem technischen BlogpostI haben wir zwei Modelle besprochen:
Im technischen Blogpost haben wir gesehen, dass ein diskretes Diffusionsmodell diese latenten Codes nicht von links nach rechts generiert, wie ein autoregressives Modell, sondern sie in einer zufälligen Reihenfolge erzeugen kann.
Dieses ungeordnete und bidirektionale Sampling ermöglicht es uns, neue Techniken zur Bearbeitung und Erzeugung von Bildern einzusetzen :
Wie bei den meisten generativen Modellen können wir Bilder von Grund auf neu erzeugen. Das Diffusionsmodell beginnt mit einem leeren 1I6x16-Gitter, das durch MASK-Token gekennzeichnet ist, und generiert iterativ Token, um das Gitter aufzufüllen. Sobald jeder Code generiert ist, verwendet der VQGAN-Decoder diese generierten Codes, um global kohärente Bilder zu erzeugen, die mit anderen generativen Modellen konkurrieren können.
Lassen Sie uns nun über die bedingte Bilderzeugung sprechen. Das ist eine schicke Art zu sagen, dass wir einen Teil des Bildes auswählen, um die Erzeugung des restlichen Bildes zu steuern.
Mit den vorhandenen autoregressiven Modellen ist es möglich, eine bedingte Bilderzeugung auf der Grundlage eines Teilbildes zu verwenden. Die Idee dabei ist, dem Modell den oberen Teil eines Bildes als Kontext zu geben und dann den Inhalt weiter zu vervollständigen, indem die nächsten Pixel eines nach dem anderen von oben nach unten und von links nach rechts vorhergesagt werden. Anstelle der Vorhersage von Pixeln könnten wir auch diskrete Codes in einer unidirektionalen Weise vorhersagen, was eine Idee ist, die in dem Papier untersucht wurde: Zähmung von Transformatoren für die hochauflösende Bildsynthese.
Beeindruckend, oder? Aufgrund des unidirektionalen Charakters von autoregressiven Modellen ist es jedoch nur möglich, den oberen Teil eines Bildes zu konditionieren.
Das ist der Punkt, an dem unser Diffusionsmodell besser sein kann! Wir können ein Bild mit dem VQGAN-Encoder kodieren und erhalten so ein Raster von latenten Variablen. Dann wählen wir die Teile des Bildes aus, die wir behalten wollen, und lassen das Modell alles um sie herum generieren.
Dies ist eine große Verbesserung der Flexibilität im Vergleich zu autoregressiven Modellen, da wir nicht mehr auf bestimmte Teile eines Bildes beschränkt sind. Zur Veranschaulichung: In der folgenden Abbildung wollen wir den Turm in der Mitte mit verschiedenen generierten Hintergründen beibehalten. Wir behalten die Codes im mittleren Bereich 🏯, ersetzen die anderen Codes durch den MASK-Wert und bitten das Modell, mehrere neue Bilder zu erzeugen.
Wie Sie sehen können, bleiben Inhalt und Struktur des mittleren Bereichs größtenteils unverändert und passen sich nur geringfügig an die umliegenden Pixel an. Es fühlt sich toll an, dem Modell zu sagen, was es tun soll 😎!
Ähnlich wie bei der bedingten Bilderzeugung können wir auch eine Bildübermalung durchführen 🎨🖌.
Nehmen wir an, wir erstellen ein Bild und das meiste davon gefällt uns, bis auf eine Region, die uns nicht ganz geheuer ist. Kein Problem, wir können einfach die latenten Codes aus dem Raster ausblenden, die dieser unerwünschten Region entsprechen, und sie vom Diffusionsmodell neu generieren lassen. Um zu zeigen, wie das funktioniert, lassen Sie uns ein paar neue Münder erzeugen! Indem wir diese Codes mehrfach regenerieren, können wir viele Variationen erhalten.
Sehr cool! Wir bekommen 9 neue Bilder mit genau den gleichen Haaren, Augen und Hintergrund, aber mit völlig unterschiedlichen Mündern 👄 .
Jetzt kann der eigentliche Spaß beginnen. Aufgrund der Gitterstruktur des latenten Raums des VQGAN sind die vom VQGAN erlernten Codes in hohem Maße räumlich mit dem Inhalt der erzeugten Bilder korreliert. Das bedeutet, dass die latenten Codes, die dem Bereich der Augen eines generierten Gesichts entsprechen, Informationen über die Augen enthalten.
Okay, aber was nun? Nehmen wir die latenten Codes der 👀 von Bild A und die Codes der 👄 von Bild B. Wir fügen sie nun in ein Raster ein, blenden alle anderen Token aus und lassen unser Diffusionsmodell tun, was es am besten kann.
Wir sehen, dass das Diffusionsmodell die maskierten Bereiche gut ausgefüllt hat, so dass ein kohärentes Gesicht entsteht, wobei das ursprüngliche Aussehen von Mund und Augen erhalten bleibt.
Werden wir kreativ und wenden wir diese Idee auf ein Modell an, das an Kirchen ausgebildet wurde. Der Papst möchte, dass Sie eine neue Kirche bauen, und er liebt besonders den Sockel der berühmten Notre Dame in Paris und den Turm der herrlichen Sint-Baafs-Kathedrale in Gent. Kein Problem, Sie können einfach die Codes, die den gewünschten Regionen entsprechen, herausnehmen und sie in einen leeren latenten Raum einfügen.
Alles, was übrig bleibt, ist, das Diffusionsmodell zu bitten, die leeren Regionen auszufüllen und sie mit VQ-VAE zu dekodieren, und man kann leicht eine endlose Menge neuer Kirchen generieren, die den Beschränkungen entsprechen.
Wie Sie sehen können, bleibt der Inhalt der Türme und des Sockels gleich und das Modell füllt den Rest realistisch aus. Der Papst ist mit dem Ergebnis sehr zufrieden und schenkt dir ein VIP-Ticket, mit dem du die Schlange vor den Toren des Petersdoms überspringen kannst. Gut gemacht! Wenn Sie noch verrücktere Ergebnisse wünschen, können Sie die Sampling-Temperatur des Diffusionsmodells anpassen, um mehr Variation zu erhalten (und dafür etwas globale Konsistenz in Kauf nehmen).
Die letzte coole Anwendung dieses Modells ist, dass es uns erlaubt, Bilder zu erzeugen, die größer sind als die Bilder, auf denen das Modell trainiert wurde. Dies wird erreicht, indem der latente Raum des größeren Bildes in mehrere überlappende Raster unterteilt wird, die der ursprünglichen 16x16-Form entsprechen. Bei jedem Vorhersageschritt berechnen wir die Wahrscheinlichkeiten für neue Token und aggregieren sie über die verschiedenen Raster.
Mit diesem Trick können wir global konsistente Bilder erzeugen, auch wenn das Modell nie dafür trainiert wurde.
In diesem Blogpost haben wir erörtert, wie die bidirektionale und iterative Natur der kürzlich aufkommenden Diffusionsmodelle in Kombination mit den diskreten Darstellungen von VQGANs und den weitreichenden Modellierungsfähigkeiten von Transformatoren uns eine bessere Kontrolle über den latenten Raum ermöglicht. Diese Architektur erzeugt qualitativ hochwertige und konsistente Bilder und bietet gleichzeitig die Möglichkeit, Bilder in einem konzeptionell diskreten Raum zu bearbeiten.
Halten Sie die Augen offen, denn es wird nicht das letzte Mal sein, dass Sie von diesen Diffusionsmodellen hören werden (in der Tat wurden während des Schreibens dieses Beitrags verschiedene erstaunliche neue Arbeiten veröffentlicht, wie DALL-E 2, ImageGen, Stable Diffusion...). Und vergessen Sie nicht, sich den technischen Blogpost anzusehen, um zu erfahren, was hinter den Kulissen passiert!🤓