Heim > Artikel > Technologie-Peripheriegeräte > Textgenerierte Bilder sind so beliebt, dass Sie die Entwicklung dieser Technologien verstehen müssen
OpenAI hat kürzlich das DALL·E 2-System veröffentlicht, das ein „Erdbeben“ in der KI-Welt verursacht hat. Das System kann Bilder basierend auf Textbeschreibungen erstellen. Dies ist die zweite Version des DALL·E-Systems, die erste Version wurde vor fast einem Jahr veröffentlicht. Innerhalb von OpenAI heißt das Modell hinter DALL·E 2 jedoch unCLIP, was dem GLIDE-System von OpenAI näher kommt als das ursprüngliche DALL·E.
Für den Autor ist die Wirkung des DALL·E 2-Systems vergleichbar mit AlphaGo. Es scheint, dass das Modell viele komplexe Konzepte erfasst und auf sinnvolle Weise kombiniert. Noch vor wenigen Jahren war es schwierig vorherzusagen, ob Computer aus solchen Textbeschreibungen Bilder generieren können. Sam Altman erwähnte in seinem Blogbeitrag, dass unsere Vorhersagen über KI falsch zu sein scheinen und aktualisiert werden müssen, da KI begonnen hat, kreative Arbeit und nicht nur mechanische und sich wiederholende Arbeit zu beeinflussen.
Dieser Artikel soll die Leser durch die Entwicklung des textgesteuerten Bildgenerierungsmodells von OpenAI führen, einschließlich der ersten und zweiten Version von DALL·E und anderen Modellen.
DALL·E Die erste Version ist ein Transformatordecoder im GPT-3-Stil, der autoregressiv arbeitet Erzeugt ein 256×256-Bild basierend auf der Texteingabe und einem optionalen Bildstart.
Diese Avocado-Stühle müssen Sie gesehen haben:
Aus dem Original-Blogbeitrag.
Wenn Sie verstehen möchten, wie GPT-ähnliche Transformatoren funktionieren, schauen Sie sich Jay Alammars großartige visuelle Erklärung an: https://jalammar.github.io/how-gpt3-works-visualizations-animations/# 🎜 🎜#
Text wird durch BPE-Tokens (bis zu 256) codiert, und Bilder werden durch spezielle Bild-Tokens (1024 davon) codiert, die von diskreten Variations-Autoencodern (dVAE) generiert werden. dVAE kodiert ein 256×256-Bild in ein Raster aus 32×32-Tokens mit einem Vokabular von 8192 möglichen Werten. dVAE verliert einige Details und Hochfrequenzmerkmale im generierten Bild, daher verwendet DALL·E eine gewisse Unschärfe und Glättung von Merkmalen im generierten Bild. Vergleich von Originalbild (oben) und dVAE-Rekonstruktion (unten). Bild vom Originalpapier. Der hier verwendete Transformator ist ein großes Modell mit 12B-Größenparametern, bestehend aus 64 spärlichen Transformatorblöcken. Es verfügt intern über einen komplexen Satz von Aufmerksamkeitsmechanismen, darunter: 1) Klassischer Mechanismus zur Maskierung der Aufmerksamkeit von Text zu Text, 2) Aufmerksamkeit von Bild zu Text, 3) spärliche Aufmerksamkeit von Bild zu Bild. Alle drei Aufmerksamkeitstypen werden zu einer Aufmerksamkeitsoperation zusammengefasst. Das Modell wird anhand eines Datensatzes von 250 Millionen Bild-Text-Paaren trainiert. Der GPT-3-ähnliche Transformator-Decoder verwendet eine Reihe von Text-Tokens und (optional) Bild-Tokens (hier ein einzelnes Bild mit ID 42-Token) und generieren Sie die Fortsetzung des Bildes (hier ist das nächste Bild-Token mit der ID 1369) Das trainierte Modell generiert mehrere Beispiele (bis zu 512) basierend auf dem bereitgestellten Text, und dann werden alle diese Beispiele sortiert durch ein spezielles Modell namens CLIP, und das bestplatzierte Modell wird als Ergebnis des Modells ausgewählt. Mehrere Beispiele zur Bildgenerierung aus dem Originalpapier. CLIP war ursprünglich ein separates Hilfsmodell, das zur Einstufung der Ergebnisse von DALL·E verwendet wurde. Sein Name ist die Abkürzung für Contrastive Language-Image Pre-Training. Die Idee hinter CLIP ist einfach. Der Autor hat einen Bild-Text-Paar-Datensatz (400 MB groß) aus dem Internet geholt und dann ein Vergleichsmodell auf einem solchen Datensatz trainiert. Kontrastive Modelle können hohe Ähnlichkeitswerte für Bilder und Text aus demselben Paar (also ähnlich) und niedrige Werte für nicht übereinstimmende Texte und Bilder (wir möchten, dass ein bestimmtes Bild mit jedem anderen im aktuellen Trainingsstapel identisch ist) erzielen Die Wahrscheinlichkeit, dass zwischen Textpaaren Ergebnisse mit hoher Ähnlichkeit erzielt werden, ist sehr gering.Das Modell besteht aus zwei Encodern: einem für Text und einem für Bilder. Der Encoder erzeugt eine Einbettung (eine mehrdimensionale Vektordarstellung eines Objekts, z. B. einen 512-Byte-Vektor). Anschließend wird das Skalarprodukt anhand der beiden Einbettungen berechnet und ein Ähnlichkeitswert abgeleitet. Da die Einbettungen normalisiert sind, ergibt dieser Prozess der Berechnung des Ähnlichkeitswerts eine Kosinusähnlichkeit. Die Kosinusähnlichkeit beträgt nahezu 1 für Vektoren, die in die gleiche Richtung zeigen (mit einem kleinen Winkel zwischen ihnen), 0 für orthogonale Vektoren und -1 für entgegengesetzte Vektoren.
Vergleichsvisualisierung des Pre-Training-Prozesses (Bild aus dem Originalbeitrag)
CLIP ist eine Reihe von Modellen. Es gibt 9 Bildkodierer, 5 Faltungskodierer und 4 Transformatorkodierer. Die Faltungsencoder sind ResNet-50, ResNet-101 und EfficientNet-ähnliche Modelle mit der Bezeichnung RN50x4, RN50x16, RN50x64 (je höher die Zahl, desto besser das Modell). Die Transformator-Encoder sind die visuellen Transformatoren (oder ViTs): ViT-B/32, ViT-B/16, ViT-L/14 und ViT-L/14@336. Der letzte wurde auf Bilder mit einer Auflösung von 336×336 Pixeln optimiert, die anderen wurden auf 224×224 Pixel trainiert.
OpenAI veröffentlichte das Programm schrittweise, zunächst ViT-B/32 und ResNet-50, dann ResNet-101 und RN50x4 und dann im Juli 2021 RN50x16 und ViT-B/16, gefolgt von RN50x64 und ViT-L/14 im Januar 2022 und schließlich ViT-L/14@336 im April 2022.
Der Text-Encoder ist ein normaler Transformator-Encoder, jedoch mit einem maskierten Aufmerksamkeitsmechanismus. Dieser Encoder besteht aus 12 Schichten, jede Schicht hat 8 Aufmerksamkeitsköpfe und verfügt über insgesamt 63 Millionen Parameter. Interessanterweise beträgt die Aufmerksamkeitsspanne nur 76 Token (im Vergleich zu 2048 Token für GPT-3 und 512 Token für Standard-BERT). Daher ist der Textteil des Modells nur für relativ kurze Texte geeignet und Sie können keine großen Textblöcke in das Modell einfügen. Da DALL·E 2 und CLIP ungefähr gleich sind, sollten sie die gleichen Einschränkungen haben.
CLIP Nach dem Vortraining kann es für verschiedene Aufgaben verwendet werden (mit dem Vorteil eines guten Basismodells).
Das Beste daran ist, dass Leser anhand der in DALL·E sortierten Modelle mehrere Ergebnisse erzielen und das beste auswählen können. Alternativ können Sie die CLIP-Funktion verwenden, um darauf einen benutzerdefinierten Klassifikator zu trainieren, es gibt jedoch noch nicht viele erfolgreiche Beispiele.
Als nächstes kann CLIP verwendet werden, um eine Zero-Shot-Klassifizierung für eine beliebige Anzahl von Klassen durchzuführen (wenn das Modell nicht speziell für die Verwendung dieser Klassen trainiert ist). Diese Klassen können angepasst werden, ohne das Modell neu zu trainieren.
Einfach ausgedrückt können Sie einen Textdatensatz erstellen, der die Objekte im Bild für so viele Klassen beschreibt, wie Sie benötigen. Für diese Beschreibungen werden dann Texteinbettungen generiert und als Vektoren gespeichert. Wenn Bilder zur Klassifizierung verwendet werden, werden Bildeinbettungen mithilfe eines Bildkodierers generiert und das Skalarprodukt zwischen den Bildeinbettungen und allen vorberechneten Texteinbettungen berechnet. Das Paar mit der höchsten Punktzahl wird ausgewählt und die entsprechende Klasse ist das Ergebnis.
Ein Programm zur Zero-Shot-Klassifizierung mit CLIP.
Ein Zero-Shot-Klassifizierungsmodell bedeutet, dass das Modell nicht für einen bestimmten Satz von Kategorien trainiert wird. Anstatt einen Klassifikator von Grund auf zu trainieren oder ein vorab trainiertes Bildmodell zu optimieren, gibt es jetzt die Option, vorab trainiertes CLIP für die spontane Entwicklung zu verwenden (wie bei der Verwendung von GPT-Modellen).
Viele Leute wissen nicht, dass es möglich ist, CLIP zum Generieren von Bildern zu verwenden (auch wenn es nicht dafür voreingestellt ist). Zu den erfolgreichen Fällen gehören CLIPDraw und VQGAN-CLIP.
CLIPD-Zeichnungsbeispiel. Bilder aus dem Originalpapier.
VQGAN-CLIP und sein Beispiel für die Generierung von Textaufforderungen. Bilder aus dem Originalpapier.
Der Prozess ist einfach und schön, sehr ähnlich zu DeepDream. Beginnen Sie mit einer Textbeschreibung des gewünschten Bildes und einem Anfangsbild (zufällige Einbettung, Szenenbeschreibung in Splines oder Pixeln, jedes Bild, das auf unterscheidbare Weise erstellt wurde), und führen Sie dann eine Schleife aus, die das Bild generiert und einige Verbesserungen für die Stabilitätseigenschaft hinzufügt Erstellen Sie eine CLIP-Einbettung des resultierenden Bildes und vergleichen Sie diese mit einer CLIP-Einbettung des Texts, der das Bild beschreibt. Der Verlust wird auf Grundlage dieser Differenz berechnet und ein Gradientenabstiegsprogramm wird ausgeführt, um das Bild zu aktualisieren und den Verlust zu reduzieren. Nach einigen Iterationen können Sie ein Bild erhalten, das gut zur Textbeschreibung passt. Die Art und Weise, wie die ursprüngliche Szene erstellt wird (mithilfe von Splines, Pixeln, Rendering-Primitiven, zugrunde liegendem Code von VQGAN usw.), kann die Bildeigenschaften erheblich beeinflussen.
CLIPDraw-Generierungsprozess: Ausgehend von einem Satz zufälliger Bezier-Kurven werden Position und Farbe der Kurven optimiert, damit die generierten Grafiken am besten mit der gegebenen Beschreibungsaufforderung übereinstimmen. Die Bilder stammen aus dem Originalpapier.
VQGAN-CLIP-Generierungsprozess. Die Bilder stammen aus dem Originalpapier. Die
CLIP-Einbettung erfasst nicht alles und einige interessante Demos zeigen ihre Schwächen. Eines der bekanntesten Beispiele sind typografische Angriffe. Bei diesem Angriff kann Text auf dem Bild zu einer Fehlklassifizierung des Bildes führen.
Aktuell gibt es einige Alternativmodelle mit einem ähnlichen Aufbau wie CLIP, etwa Googles ALIGN oder Huaweis FILIP.
GLIDE
GLIDE, oder Guided Language to Image Diffusion for Generation and Editing, ist ein von OpenAI eingeführtes textgesteuertes Bildgenerierungsmodell. Es hat derzeit DALL·E besiegt, hat aber relativ wenig Aufmerksamkeit erhalten. Es gibt nicht einmal einen eigenen Beitrag auf der OpenAI-Website. GLIDE erzeugt Bilder mit einer Auflösung von 256×256 Pixeln.
Das GLIDE-Modell mit 3,5B-Parametern (aber die richtige Anzahl scheint 5B-Parameter zu sein, da es ein separates Upsampling-Modell mit 1,5B-Parametern gibt) wird gegenüber den 12B-Parametern DALL·E in Bezug auf den FID-Score bevorzugt. Auch DALL· besiegt E.
Probe von GLIDE. Bild vom Originalpapier.
GLIDE-Modelle können auch so angepasst werden, dass sie Bild-Inpainting durchführen und so eine leistungsstarke textgesteuerte Bildbearbeitung ermöglichen, die in DALL·E 2 verwendet wird.
Beispiel für eine textbedingte Bildreparatur von GLIDE. Der grüne Bereich wird gelöscht und das Modell füllt diesen Bereich gemäß den vorgegebenen Anweisungen. Das Modell ist in der Lage, sich an den Stil und die Beleuchtung seiner Umgebung anzupassen und so ein realistisches Erscheinungsbild zu erzielen. Beispiele stammen aus der Originalarbeit.
GLIDE kann bei Veröffentlichung „DALL·E 2“ heißen. Wenn nun ein separates DALL·E 2-System veröffentlicht wird (im Papier tatsächlich als unCLIP bezeichnet und stark von GLIDE selbst Gebrauch macht), können wir GLIDE DALL·E 1.5 nennen :)
GLIDE ähnelt einem anderen Namen und ist ein Diffusionsmodell. Einfach ausgedrückt fügen Diffusionsmodelle den Eingabedaten durch eine Kette von Diffusionsschritten zufälliges Rauschen hinzu und lernen dann den umgekehrten Diffusionsprozess, um aus dem Rauschen ein Bild zu konstruieren.
Diffusionsmodell zur Rauschunterdrückung erzeugt Bilder.
Das Bild unten ist eine visuelle Darstellung von Google, das das Diffusionsmodell zum Generieren von Bildern verwendet.
Vergleich von Diffusionsmodellen mit anderen Kategorien generativer Modelle.
Zuerst trainierten die Autoren mithilfe eines Text-Encoders ein 3,5B-Parameterdiffusionsmodell, das auf Beschreibungen in natürlicher Sprache basierte. Als nächstes verglichen sie zwei Techniken zum Bootstrapping von Diffusionsmodellen mit Texteingabeaufforderungen: CLIP-Bootstrapping und klassifikatorfreies Bootstrapping (letzteres lieferte bessere Ergebnisse).
Klassifikator-Bootstrapping ermöglicht die Konditionierung des Diffusionsmodells an der Markierung des Klassifikators und der Gradient vom Klassifikator wird verwendet, um die Probe zur Markierung zu führen.
Klassifikatorfreies Bootstrapping erfordert kein Training eines separaten Klassifikatormodells. Dies ist lediglich eine Form des Bootstrappings, bei dem zwischen den Vorhersagen des Diffusionsmodells mit und ohne Beschriftungen interpoliert wird.
Wie der Autor sagte, hat die klassifizierungsfreie Führung zwei attraktive Eigenschaften. Erstens ermöglicht es einem einzelnen Modell, während des Bootstrapping-Prozesses sein eigenes Wissen zu nutzen, anstatt sich auf das Wissen eines separaten (manchmal kleineren) Klassifizierungsmodells zu verlassen. Zweitens vereinfacht es die Anleitung bei der Konditionierung von Informationen, die mit einem Klassifikator schwer vorherzusagen sind, wie z. B. Text.
Unter CLIP-Anleitung wird der Klassifikator durch ein CLIP-Modell ersetzt. Es verwendet das Skalarprodukt eines Bildes und den in Bezug auf die Bildunterschrift kodierten Gradienten.
Beim Klassifikator und CLIP-Bootstrapping müssen wir CLIP auf verrauschten Bildern trainieren, um während des Rückdiffusionsprozesses den richtigen Gradienten zu erhalten. Die Autoren verwendeten CLIP-Modelle, die explizit auf Geräuscherkennung trainiert wurden. Diese Modelle werden als verrauschte CLIP-Modelle bezeichnet. Öffentliche CLIP-Modelle, die nicht auf verrauschte Bilder trainiert wurden, können weiterhin zur Führung von Diffusionsmodellen verwendet werden, aber die verrauschte CLIP-Führung eignet sich gut für diesen Ansatz.
Das textbedingte Diffusionsmodell ist eine erweiterte ADM-Modellarchitektur, die das Bild des nächsten Diffusionsschritts basierend auf dem verrauschten Bild xₜ und der entsprechenden Textbeschriftung c vorhersagt.
Der visuelle Teil ist eine modifizierte U-Net-Architektur. Das U-Net-Modell verwendet eine Reihe von Restschichten und Downsampling-Faltungen, dann eine Reihe von Restschichten mit Upsampling-Faltungen und verwendet eine Restverbindung (Skip-Verbindung), um die Schichten mit derselben räumlichen Größe zu verbinden.
Original U-Net-Architektur. Die Bilder stammen aus dem Originalpapier.
GLIDE hat verschiedene Modifikationen an der Breite, Tiefe usw. der ursprünglichen U-Net-Architektur und fügt mehrere Aufmerksamkeitsköpfe mit den Auflösungen 8×8, 16×16 und 32×32 hinzu. Zusätzlich wird jedem Restblock die Projektion der Zeitschritteinbettung hinzugefügt.
Für das Klassifikator-Bootstrap-Modell ist die Klassifikatorarchitektur ein heruntergesampeltes Backbone-Netzwerk des U-Net-Modells mit einem Aufmerksamkeitspool auf 8×8 Schichten, um die endgültige Ausgabe zu generieren.
Der Text wird durch das Transformatormodell in eine Folge von K-Tokens kodiert (die maximale Aufmerksamkeitsspanne ist noch nicht bekannt).
Die Ausgabe des Transformators kann auf zwei Arten verwendet werden: Erstens wird die letzte Token-Einbettung verwendet, um die Klasseneinbettung im ADM-Modell zu ersetzen; zweitens wird die letzte Ebene der Token-Einbettung verwendet (Sequenz von K Merkmalsvektoren) wird separat auf die Dimensionen jeder Aufmerksamkeitsschicht im gesamten ADM-Modell projiziert und dann mit dem Aufmerksamkeitskontext jeder Schicht verbunden.
Der Texttransformator verfügt über 24 Restblöcke mit einer Breite von 2048, was zu etwa 1,2B Parametern führt. Der visuelle Teil des für die Auflösung 64×64 trainierten Modells besteht aus 2,3B Parametern. Zusätzlich zum textbedingten Diffusionsmodell mit 3,5B-Parametern trainierte der Autor auch ein weiteres textbedingtes Upsampling-Diffusionsmodell mit 1,5B-Parametern und erhöhte die Auflösung auf 256×256 (diese Idee wird auch in DALL·E verwendet).
Das Upsampling-Modell verarbeitet Text auf die gleiche Weise wie das Basismodell, verwendet jedoch einen kleineren Text-Encoder mit einer Breite von 1024 statt 2048. Zur CLIP-Anleitung trainierten sie außerdem ein verrauschtes 64×64 ViT-L CLIP-Modell.
GLIDE wird auf demselben Datensatz wie DALL·E trainiert, und die gesamte Trainingsberechnung entspricht in etwa der, die zum Trainieren von DALL·E verwendet wurde.
GLIDE ist in allen Einstellungen optimal, auch in Einstellungen, die es DALL·E ermöglichen, mehr Testzeitberechnungen zu verwenden, um eine bessere Leistung zu erzielen und gleichzeitig die GLIDE-Probenqualität zu reduzieren (über VAE-Unschärfe).
Das Modell ist so abgestimmt, dass es die bedingungslose Bilderzeugung unterstützt. Dieser Trainingsprozess ist genau derselbe wie vor dem Training, außer dass 20 % der Text-Token-Sequenzen durch leere Sequenzen ersetzt werden. Auf diese Weise behält das Modell die Fähigkeit, eine bedingte Textausgabe zu generieren, kann aber auch Bilder bedingungslos generieren.
Das Modell ist auch explizit auf die Durchführung von Reparaturen abgestimmt. Bei der Feinabstimmung werden zufällige Bereiche der Trainingsbeispiele entfernt und die verbleibenden Teile zusammen mit dem Maskenkanal als zusätzliche bedingte Informationen in das Modell eingespeist.
GLIDE kann mithilfe der Zero-Shot-Generierung iterativ komplexe Szenen erstellen, gefolgt von einer Reihe von Reparaturbearbeitungen.
Generieren Sie zunächst das Bild der Eingabeaufforderung „ein gemütliches Wohnzimmer“, verwenden Sie dann die Reparaturmaske, und die anschließende Texteingabeaufforderung fügt ein Gemälde an der Wand hinzu , Ein Couchtisch, eine Vase auf dem Couchtisch und schließlich bewegte sich die Wand zum Sofa. Beispiele stammen aus der Originalarbeit.
OpenAI hat das DALL·E 2-System am 6. April 2022 veröffentlicht. Das DALL·E 2-System verbessert die Ergebnisse erheblich gegenüber dem ursprünglichen DALL·E. Es erzeugt Bilder mit einer viermal höheren Auflösung (im Vergleich zum ursprünglichen DALL·E und GLIDE), jetzt bis zu 1024 x 1024 Pixel. Das Modell hinter dem DALL·E 2-System heißt unCLIP.
Die Autoren fanden heraus, dass Menschen GLIDE im Hinblick auf den Fotorealismus leicht dem UnCLIP vorziehen, der Unterschied ist jedoch sehr gering. Bei ähnlichem Realismus wird unCLIP hinsichtlich der Vielfalt gegenüber GLIDE bevorzugt, was einen seiner Vorteile hervorhebt. Bedenken Sie, dass der GLIDE selbst beliebter ist als der DALL·E 1, sodass der DALL·E 2 eine deutliche Verbesserung gegenüber seinem Vorgänger, dem DALL·E 1, darstellt.
Für die Anfrage „Malen Sie ein Gemälde eines Fuchses, der bei Sonnenaufgang auf einem Feld sitzt, im Stil von Claude Monet“, zwei Versionen der vom System generierten Bilder, die Bilder stammen aus dem Originalartikel.
DALL·E 2 ermöglicht die Kombination von Konzepten, Eigenschaften und Stilen:
Beispiele aus dem Originalartikel.
DALL·E 2 kann auch Bildbearbeitung basierend auf Textführung durchführen, was eine Funktion in GLIDE ist. Es fügt Elemente hinzu und entfernt sie und berücksichtigt dabei Schatten, Reflexionen und Texturen:
Hinzufügen eines Corgis an einer bestimmten Stelle auf einem Bild vom Originalpapier.
DALL·E 2 kann auch verwendet werden, um Varianten des Originalbildes zu generieren:
Varianten des Bildes generieren, das Bild stammt aus dem Originaltext.
DALL·E 2 hat auch einige Probleme. Insbesondere ist unCLIP beim Binden von Eigenschaften an Objekte schlechter als das GLIDE-Modell. Beispielsweise ist es mit unCLIP schwieriger als mit GLIDE, der Aufforderung zu begegnen, zwei separate Objekte (Würfel) an zwei separate Eigenschaften (Farben) binden zu müssen:
unCLIP weist auch einige Probleme bei der Generierung kohärenten Textes auf:
Ein weiteres Problem besteht darin, dass unCLIP Schwierigkeiten hat, Details in komplexen Szenen zu generieren:
Es gibt einige Änderungen innerhalb des Modells. Das Bild unten ist eine Kombination aus CLIP und GLIDE. Das Modell selbst (Stapel zur bedingten Volltextbildgenerierung) wird in der Arbeit intern als unCLIP bezeichnet, da es Bilder durch Invertieren des CLIP-Bildcodierers generiert.
So funktioniert das Modell: CLIP-Modelle werden individuell trainiert. Der CLIP-Textencoder generiert dann Einbettungen für den Eingabetext (Titel). Dann generiert ein spezielles Vorgängermodell Bildeinbettungen basierend auf Texteinbettungen. Ein Diffusionsdecoder generiert dann ein Bild basierend auf der Bildeinbettung. Der Decoder invertiert im Wesentlichen die Bildeinbettung wieder in ein Bild.
Makroübersicht des Systems. Einige Details (z. B. die Bedingungen für den Decodertext) werden nicht angezeigt. Die Bilder stammen aus dem Originalpapier.
Das CLIP-Modell verwendet den ViT-H/16-Bildencoder, der Bilder mit einer Auflösung von 256×256 und einer Breite von 1280 und 32 Transformer-Blöcken verwendet (er ist tiefer als der größte ViT-L im ursprünglichen CLIP-Werk). Der Text-Encoder ist ein Transformer mit kausaler Aufmerksamkeitsmaske, Breite 1024 und 24 Transformer-Blöcken (das ursprüngliche CLIP-Modell hat 12 Transformer-Blöcke). Es ist unklar, ob die Aufmerksamkeitsspanne des Texttransformators dieselbe ist wie im ursprünglichen CLIP-Modell (76 Token).
Der Diffusionsdecoder ist ein modifizierter GLIDE mit 3,5B-Parametern. CLIP-Bildeinbettungen werden projiziert und zu vorhandenen Zeitschritteinbettungen hinzugefügt. Die CLIP-Einbettung wird auch in vier zusätzliche Kontexttokens projiziert, die mit der Ausgabesequenz des GLIDE-Textencoders verbunden sind. Der textbedingte Pfad des ursprünglichen GLIDE wird beibehalten, da er es dem Diffusionsmodell ermöglicht, Aspekte der natürlichen Sprache zu lernen, die CLIP nicht erfassen kann (allerdings hilft es nicht viel). Während des Trainings wurden 10 % der Zeit damit verbracht, CLIP-Einbettungen nach dem Zufallsprinzip auf Null zu setzen, und 50 % der Zeit wurde damit verbracht, Textbeschriftungen nach dem Zufallsprinzip zu entfernen.
Der Decoder generiert ein 64×64-Pixel-Bild, und dann erzeugen zwei Upsampling-Diffusionsmodelle anschließend 256×256- und 1024×1024-Bilder, das erstere mit 700 Millionen Parametern und das letztere mit 300 Millionen Parametern. Um die Robustheit des Upsamplings zu verbessern, werden die bedingten Bilder während des Trainings leicht beschädigt. Die erste Upsampling-Stufe verwendet Gaußsche Unschärfe, und die zweite Stufe nutzt eine vielfältigere BSR-Verschlechterung, einschließlich JPEG-Komprimierungsartefakten, Kamerasensorrauschen, bilinearer und bikubischer Interpolation und Gaußsches Rauschen. Die Modelle werden auf zufälligen Bildern trainiert, die ein Viertel der Größe des Ziels haben. Die Textkonditionierung wird für Upsampling-Modelle nicht verwendet.
A priori generiert Bildeinbettungen basierend auf Textbeschreibungen. Die Autoren untersuchen zwei verschiedene Modellklassen von Prior-Modellen: autoregressive (AR) Priors und Diffusions-Priors. Beide Vorgängermodelle verfügen über 1B-Parameter.
In der AR-Vorstufe werden CLIP-Bildeinbettungen in eine Folge diskreter Codes umgewandelt und auf der Grundlage der Bildunterschriften werden autoregressive Vorhersagen getroffen. Im Diffusions-Prior werden die kontinuierlichen Einbettungsvektoren direkt unter Verwendung eines vom Titel abhängigen Gaußschen Diffusionsmodells modelliert.
Zusätzlich zum Titel kann das Vorgängermodell auch von der CLIP-Texteinbettung abhängig gemacht werden, da es sich um eine deterministische Funktion des Titels handelt. Um die Stichprobenqualität zu verbessern, ermöglichten die Autoren außerdem eine klassifikatorfreie geführte Stichprobenziehung für AR- und Diffusions-Priors, indem sie diese Textzustandsinformationen in 10 % der Fälle während des Trainings zufällig entfernten.
Für AR-Prioritäten reduziert die Hauptkomponentenanalyse (PCA) die Dimensionalität von CLIP-Bildeinbettungen. 319 der 1024 Hauptkomponenten behielten mehr als 99 % der Informationen. Jede Dimension ist auf 1024 Buckets quantisiert. Die Autoren optimierten den AR im Vorfeld, indem sie Texttitel und CLIP-Texteinbettungen als Präfixe der Sequenz kodierten. Darüber hinaus fügen sie ein Token hinzu, das das (quantisierte) Skalarprodukt zwischen der Texteinbettung und der Bildeinbettung darstellt. Dies ermöglicht die Abstimmung des Modells auf Produkte mit höherem Punktwert, da höhere Text-Bild-Punktprodukte Beschriftungen entsprechen, die das Bild besser beschreiben. Das Skalarprodukt wird aus der oberen Hälfte der Verteilung entnommen. Sagen Sie die generierten Sequenzen mithilfe eines Transformer-Modells mit einer Kausalaufmerksamkeitsmaske voraus.
Für die vorherige Diffusion wird ein Nur-Decoder-Transformer mit kausaler Aufmerksamkeitsmaske auf eine Sequenz trainiert, die aus Folgendem besteht:
verwendet unterschiedliche Anpassungssignale, das Bild stammt aus dem Originaltext.
Beim Training des Encoders haben die Autoren mit gleicher Wahrscheinlichkeit Stichproben aus den CLIP- und DALL-E-Datensätzen (insgesamt ~650 Millionen Bilder) durchgeführt. Beim Training des Decoders, des Upsamplers und des Vorgängermodells wurde nur der DALL-E-Datensatz (ca. 250 Millionen Bilder) verwendet, da der verrauschtere CLIP-Datensatz beim Training des Generierungsstapels zusammengeführt wurde und somit zunächst die Probenqualität bei der Auswertung negativ beeinflusst wurde. Die Gesamtgröße des Modells scheint zu betragen: 632M? Parameter (CLIP ViT-H/16 Bildencoder) + 340M? (CLIP-Text-Encoder) + 1B (Diffusion Prior) + 3,5B (Diffusion Decoder) + 1B (zwei Diffusions-Upsampler) = ~ ~6,5B Parameter (wenn ich mich richtig erinnere). Diese Methode ermöglicht die Generierung von Bildern basierend auf Textbeschreibungen. Es sind jedoch auch einige andere interessante Anwendungen möglich. Beispiel aus dem Originalpapier.Jedes Bild x kann in eine zweiteilige latente Darstellung (z_i, x_T) codiert werden, was ausreicht, damit der Decoder eine genaue Rekonstruktion erstellen kann. latent z_i ist eine CLIP-Bildeinbettung, die den von CLIP erkannten Bildaspekt beschreibt. Das latente x_T wird durch Anwenden der DDIM-Inversion (Denoising Diffusion Implicit Model) unter Verwendung des Decoders auf x unter der Bedingung von z_i erhalten. Mit anderen Worten handelt es sich um das Startrauschen des Diffusionsprozesses beim Erzeugen des Bildes x (oder äquivalent x_0, siehe das Entrauschungs-Diffusionsmodellschema im Abschnitt GLIDE).
Diese binäre Darstellung ermöglicht drei interessante Operationen.
Zunächst können Sie Bildvarianten für eine gegebene binäre latente Darstellung (z_i, x_T) erstellen, indem Sie im Decoder mit DDIM mit η > 0 abtasten. Wenn η = 0, wird der Decoder deterministisch und rekonstruiert ein gegebenes Bild x. Je größer der η-Parameter ist, desto größer ist die Änderung, und wir können sehen, welche Informationen in der CLIP-Bildeinbettung erfasst und in allen Beispielen dargestellt werden.
Entdecken Sie die Veränderungen in Ihren Bildern.
Zweitens können Sie zwischen den Bildern x1 und x2 interpolieren. Dazu müssen Sie die CLIP-Bildeinbettungen z_i1 und z_i2 nehmen und dann Slerp (sphärische lineare Interpolation) anwenden, um eine Zwischen-CLIP-Bilddarstellung zu erhalten. Es gibt zwei Optionen für das entsprechende Zwischen-DDIM-Latent x_Ti: 1) Verwenden Sie slerp, um zwischen x_T1 und x_T2 zu interpolieren, 2) Fixieren Sie das DDIM-Latent auf einen zufällig abgetasteten Wert für alle Interpolationen in der Trajektorie (es kann eine unbegrenzte Anzahl von Trajektorien generiert werden). . Die folgenden Bilder wurden mit der zweiten Option generiert.
Entdecken Sie die Interpolation zweier Bilder.
Die dritte Sache ist schließlich die sprachgesteuerte Bildmanipulation oder Textdifferenz. Um das Bild so zu ändern, dass es die neue Textbeschreibung y widerspiegelt, erhalten Sie zunächst die CLIP-Texteinbettung z_t und die CLIP-Texteinbettung z_t0 des Titels, der das aktuelle Bild beschreibt (vielleicht ein Dummy-Titel wie „Foto“ oder ein leerer Titel). Berechnen Sie dann den Textdifferenzvektor z_d = norm(z_t - z_t0). slerp wird dann verwendet, um zwischen der Bild-CLIP-Einbettung z_i und dem Textdifferenzvektor z_d zu rotieren und ein Bild mit einem festen Basis-DDIM-Rauschen x_T über die gesamte Trajektorie zu erzeugen.
Untersuchen Sie Textunterschiede zum Originaltext.
Der Autor führte auch eine Reihe von Experimenten durch, um den Potenzialraum von CLIP zu erkunden. Frühere Untersuchungen haben gezeigt, dass CLIP anfällig für Druckangriffe ist. Bei diesen Angriffen wird ein Textstück über ein Objekt gelegt, was dazu führt, dass CLIP das Objekt vorhersagt, das der Text beschreibt, und nicht das im Bild beschriebene Objekt (erinnern Sie sich an Apple mit dem „iPod“-Banner?). Die Autoren versuchen nun, Varianten solcher Bilder zu generieren und stellen fest, dass die Wahrscheinlichkeit, dass das Bild korrekt klassifiziert wird, zwar sehr gering ist, die generierten Varianten jedoch mit hoher Wahrscheinlichkeit korrekt sind. Obwohl die relative Vorhersagewahrscheinlichkeit dieses Titels sehr hoch ist, generiert das Modell nie ein Bild eines iPod.
Angriffsfall ausdrucken.
Ein weiteres interessantes Experiment besteht darin, das Bild mit immer mehr Hauptkomponenten zu rekonstruieren. Im Bild unten haben sie CLIP-Bilderinbettungen einer kleinen Anzahl von Quellbildern aufgenommen, diese mit zunehmenden PCA-Abmessungen rekonstruiert und dann die rekonstruierten Bilderinbettungen mithilfe eines Decoders mit DDIM visualisiert. Dies ermöglicht die Anzeige semantischer Informationen, die in verschiedenen Dimensionen kodiert sind.
Immer mehr Hauptbestandteile aus dem Originalpapier.
Bedenken Sie auch die Schwierigkeiten, die unCLIP bei der Bindung von Eigenschaften, der Textgenerierung und den Details in komplexen Szenen hat.
Die ersten beiden Probleme sind wahrscheinlich auf die CLIP-Einbettungseigenschaften zurückzuführen.
Eigenschaftsbindungsprobleme können auftreten, da die CLIP-Einbettung selbst Eigenschaften nicht explizit an Objekte bindet, sodass der Decoder beim Generieren von Bildern Eigenschaften und Objekte verwechselt.
Eine weitere Reihe von Rekonstruktionen für schwierige Bindungsprobleme aus dem Originalartikel.
Probleme bei der Textgenerierung können dadurch verursacht werden, dass die CLIP-Einbettung die Rechtschreibinformationen des gerenderten Textes nicht genau kodiert.
Probleme mit geringen Details können auftreten, da die Decoder-Hierarchie Bilder mit einer Basisauflösung von 64×64 generiert und diese dann hochsampelt. Daher kann das Problem bei Verwendung einer höheren Basisauflösung verschwinden (auf Kosten zusätzlicher Trainings- und Inferenzberechnungen).
Wir haben die Entwicklung des textbasierten Bildgenerierungsmodells von OpenAI gesehen. Es gibt auch andere Unternehmen, die in diesem Bereich tätig sind.
DALL·E 2 (oder unCLIP) ist eine enorme Verbesserung gegenüber der ersten Version des Systems, DALL·E 1, die gerade erstellt wurde ein Jahr. Es gibt jedoch noch viel Raum für Verbesserungen.
Leider waren diese leistungsstarken und interessanten Modelle nicht Open Source. Der Autor würde sich wünschen, dass mehr solcher Modelle veröffentlicht oder zumindest über die API verfügbar gemacht würden. Andernfalls sind alle diese Ergebnisse nur auf ein sehr begrenztes Publikum anwendbar.
Es ist unbestreitbar, dass solche Modelle Fehler aufweisen, manchmal falsche Inhaltstypen produzieren oder von böswilligen Proxys verwendet werden können. Der Autor fordert die Notwendigkeit, den Umgang mit diesen Problemen zu diskutieren. Es gibt zahllose potenziell gute Einsatzmöglichkeiten für diese Modelle, aber das Versäumnis, die oben genannten Probleme anzugehen, hat diese Untersuchungen behindert.
Der Autor hofft, dass DALL·E 2 (oder andere ähnliche Modelle) bald über eine offene API für jedermann verfügbar gemacht werden.
Das obige ist der detaillierte Inhalt vonTextgenerierte Bilder sind so beliebt, dass Sie die Entwicklung dieser Technologien verstehen müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!