00:00:00Schön, so viele hier zu sehen.
00:00:02Wie ich bereits in der Einleitung sagte,
00:00:05werde ich Ihnen einen Einblick in Flux geben,
00:00:08unsere Modellfamilie zur Generierung und Bearbeitung von Bildern.
00:00:13Ich war schon – funktioniert es?
00:00:16Ich bin Andy, Mitbegründer von Black Force Labs.
00:00:20Bevor ich mit dem Modell beginne,
00:00:22möchte ich Ihnen einen Überblick über unsere Arbeit geben.
00:00:27Bei Black Force Labs glauben wir,
00:00:29dass visuelle Medien in Zukunft die zentrale Schnittstelle für menschliche Kommunikation sein werden.
00:00:37Wir sehen uns als zentralen Infrastrukturanbieter,
00:00:41um all die Bilder und Videos zu ermöglichen,
00:00:44die Menschen zur Interaktion miteinander nutzen werden – und das nicht nur,
00:00:50was Kameras erfassen können,
00:00:52sondern weit darüber hinaus.
00:00:54Mit diesem Gedanken gründeten wir das Unternehmen im August 2024.
00:00:59Seitdem sind wir auf 45 Mitarbeiter angewachsen und auf zwei Hauptsitze verteilt.
00:01:06Der Hauptsitz ist in Freiburg im Schwarzwald in Deutschland,
00:01:10und wir haben auch ein Büro hier in San Francisco.
00:01:14Seit der Veröffentlichung unserer Bildgenerierungsfamilie Flux im August 2024,
00:01:20als wir das Unternehmen gründeten,
00:01:23haben wir die Veröffentlichungen stets in drei verschiedenen Stufen strukturiert und die Modellfamilie kontinuierlich weiterentwickelt.
00:01:33Die Stufen sind wie folgt: Wir haben die Pro-Modelle.
00:01:37Sie sind extrem leistungsstark und die schnellsten Modelle,
00:01:42die wir anbieten.
00:01:43Sie sind nur über die VFL API und auch über einige Inference-Partner wie zum Beispiel File und Replicate verfügbar.
00:01:52Ich denke, Sie kennen sie auch.
00:01:54Sie sind super einfach zu integrieren und skalieren nahezu sofort auf massive Volumina..
00:02:03Das ist die erste Stufe,
00:02:05aber wie einige von Ihnen vielleicht wissen,
00:02:07haben meine Mitbegründer und ich sehr starke Wurzeln im Open Source-Bereich,
00:02:12ähnlich wie,
00:02:13denke ich,
00:02:14der Gründer,
00:02:14der uns heute eingeladen hat.
00:02:16Wir sind auch die ursprünglichen Entwickler hinter Stable Diffusion.
00:02:21Daran halten wir fest.
00:02:22Wir lieben die Open-Source-Community,
00:02:24und deshalb bieten wir auch Open Weights und Open-Source-Modelle an..
00:02:29Wir haben die Flux Dev-Modelle.
00:02:32Diese sind öffentlich zum Download und zum Experimentieren verfügbar.
00:02:37Sie sind vollständig anpassbar und bieten viel Flexibilität für jeden,
00:02:42der sie nutzen möchte.
00:02:43Schließlich haben wir die Flux Schnell-Modelle.
00:02:47Sie sind vollständig Open Source und in gewisser Weise der perfekte Einstiegspunkt in das Flux-Ökosystem.
00:02:54Apropos Ökosystem: Wenn man sich den Model Atlas auf Hugging Face ansieht,
00:03:00der die,
00:03:00ich denke,
00:03:01meistgenutzten Open-Source-Grundlagenmodelle über verschiedene Domänen hinweg visualisiert,
00:03:08können wir tatsächlich sehen,
00:03:10dass das größte einzelne Modell auf Hugging Face mit dem größten angeschlossenen Ökosystem unser Flux Dev-Modell ist.
00:03:18Das zeigt ziemlich deutlich,
00:03:20dass Flux bereits der Standard für die offene Bildgenerierung geworden ist.
00:03:26Offensichtlich wollen wir unsere Verbreitung in Zukunft noch weiter vorantreiben oder ausbauen.
00:03:32So viel zum Unternehmen.
00:03:34Mal sehen, ob es immer noch nicht funktioniert.
00:03:38Egal.
00:03:38Nun zum Hauptteil des Vortrags..
00:03:41Ich wollte mit Ihnen in Flux eintauchen,
00:03:44insbesondere in unser neuestes Modell Flux Context,
00:03:48das Text-zu-Bild-Generierung und -Bearbeitung vereint.
00:03:52Ich möchte heute darüber sprechen,
00:03:54wie man dies vereinheitlicht..
00:03:56Ein paar Worte vorab.
00:03:58Ich denke,
00:03:58es ist super wichtig,
00:04:00dieses gemeinsame Modell zu haben,
00:04:02denn Bildgenerierung hat offensichtlich viele schöne Anwendungen,
00:04:06und das haben wir im letzten Jahr gesehen,
00:04:09aber die Bildbearbeitung hat bis wirklich dieses Jahr nicht mit der gleichen Entwicklungsgeschwindigkeit mithalten können.
00:04:17Bildbearbeitung ist tatsächlich ein super wichtiger Anwendungsfall.
00:04:22Es ermöglicht uns,
00:04:23bestehende Bilder zu iterieren und gibt den Leuten,
00:04:26denke ich,
00:04:27ein zusätzliches Maß an Kontrolle,
00:04:29um Bilder und Ähnliches präzise zu modifizieren.
00:04:32Das ist super wichtig.
00:04:34Mit Flux Context haben wir den entscheidenden Moment für die Bildbearbeitung geschaffen.
00:04:40Es wurde im Juni 2025 veröffentlicht.
00:04:42Es ist ein Modell,
00:04:43das Bildgenerierung mit Bearbeitungsfunktionen wie Charakterkonsistenz,
00:04:48Stilreferenz,
00:04:49lokaler Bearbeitung und all dem bei nahezu Echtzeitgeschwindigkeit kombiniert.
00:04:54Das werden wir später sehen..
00:04:57Als gutes Beispiel habe ich Ihnen diese Bildreihe mitgebracht.
00:05:01Von links nach rechts beginnen wir mit einem Eingabebild.
00:05:04Dann können wir das Modell anweisen,
00:05:07dieses Objekt von ihrem Gesicht zu entfernen,
00:05:09und sie dann in einen völlig neuen Kontext setzen,
00:05:13während der Charakter konsistent bleibt.
00:05:15Das ist super wichtig.
00:05:16In der Vergangenheit wurde viel Arbeit in das Fine-Tuning investiert,
00:05:21um diese Art von Charakterkonsistenz in das Modell zu bekommen,
00:05:25basierend auf öffentlich verfügbaren Text-zu-Bild-Modellen.
00:05:28Aber diese sofortige Bildbearbeitung hat es uns ermöglicht,
00:05:32all dieses Fine-Tuning zu eliminieren,
00:05:34was,
00:05:35ich würde sagen,
00:05:36immer etwas aufwendig ist.
00:05:37Es ist tatsächlich super erstaunlich,
00:05:40dass dies jetzt vier Sekunden oder so dauert.
00:05:42Schließlich können wir einfach die Szenerie ändern.
00:05:45In diesem Fall,
00:05:46das ganz rechte Bild,
00:05:48ändern wir es in eine Winterszene.
00:05:50Cool.
00:05:50Hier sind noch ein paar weitere Beispiele,
00:05:53was es alles kann.
00:05:54Es ist nicht nur gut für charakterkonsistente Bearbeitungen oder Ähnliches,
00:05:59sondern auch super für den Stiltransfer.
00:06:01Das sehen wir auf der linken Seite.
00:06:03Wir nehmen den Stil vom Eingabebild und übertragen ihn auf einen neuen Inhalt,
00:06:08oder wir können Dinge wie Textbearbeitung machen,
00:06:11einfach Montreal in Freiburg ändern,
00:06:13während die Schriftart konsistent bleibt.
00:06:16Das alles ist in einem Modell kombiniert,
00:06:18und Sie können einfach über eine super einfache Textschnittstelle damit interagieren.
00:06:23Cool.
00:06:24Sehr wichtig ist,
00:06:25dass dieses Modell nicht nur ein allgemeines Modell ist,
00:06:28sondern auch sehr gut darin,
00:06:30spezifische wichtige und interessante Geschäftsprobleme zu lösen.
00:06:34Zum Beispiel können wir hier im linken Beispiel diesen Rock aus einem 'in-the-wild'-Bild extrahieren und erhalten fast sofort,
00:06:42wieder innerhalb von Sekunden,
00:06:44ein Produktfoto davon und einen Zoom.
00:06:46Das dauerte vor diesen Bearbeitungsmodellen Stunden,
00:06:49Tage oder war gar nicht erst möglich.
00:06:52Ähnlich wie auf der rechten Seite können wir hier aus einer Skizze in wenigen Sekunden eine vollständig gerenderte Ausgabe erhalten.
00:07:00Cool.
00:07:00Wie ich bereits erwähnt habe,
00:07:02kombiniert Flux Context Text-zu-Bild und Bildbearbeitung.
00:07:06Wir haben gerade ein paar Beispiele gesehen.
00:07:08Lassen Sie uns kurz betrachten,
00:07:10was dies eigentlich in Bezug auf die Modellpipeline bedeutet,
00:07:14die Sie benötigen.
00:07:15Hier sehen wir die klassische Text-zu-Bild-Pipeline.
00:07:18Ziemlich einfach.
00:07:19Wir alle kennen sie.
00:07:20Wir verwenden einen Text-Prompt.
00:07:22Wir leiten ihn durch das Modell.
00:07:24Das Modell vollbringt dann etwas Magie.
00:07:27Ich werde Ihnen gleich erklären,
00:07:29wie man ein solches Modell erstellt.
00:07:31Dann erhalten wir ein Bild,
00:07:33das hoffentlich,
00:07:34wenn das Modell gut ist,
00:07:35unserem eingegebenen Text-Prompt folgt.
00:07:38Wenn man sich die Bildbearbeitung ansieht,
00:07:40sieht es ganz anders aus.
00:07:42Wir beginnen mit einem Bild,
00:07:43das wir dem Modell gewissermaßen zeigen,
00:07:46und fügen dann keine Textanweisung hinzu,
00:07:48die eine ganze Szene beschreibt,
00:07:50sondern nur eine Änderung an diesem Bild.
00:07:53Hier haben wir zwei Konditionierungen.
00:07:55Im ersten Teil haben wir nur mehr Eingaben.
00:07:58Im ersten Beispiel hatten wir nur eine Eingabe.
00:08:01Jetzt beschreiben wir eine Änderung,
00:08:03und das Modell sollte das Bild dann entsprechend der Änderung modifizieren.
00:08:08Einige Teile,
00:08:08wie die Kirche hier,
00:08:10sollten nach der Bearbeitung gleich bleiben.
00:08:12Andere nicht.
00:08:13Das ist es, was diese Bearbeitungsmodelle tun.
00:08:16Es ist eine ganz andere Aufgabe.
00:08:18Dies in einem einzigen Modell zu kombinieren,
00:08:21ist tatsächlich super schön,
00:08:22weil man alles machen kann.
00:08:24Man kann ein Bild generieren,
00:08:26es danach bearbeiten und gewissermaßen viel mehr Flexibilität erhalten.
00:08:30Ich habe bereits erwähnt,
00:08:32dass vor der Veröffentlichung dieser Bearbeitungsmodelle,
00:08:35oder bevor wir diese allgemeinen Bearbeitungsmodelle sahen,
00:08:39viel Arbeit in das Fine-Tuning von Text-zu-Bild-Modellen investiert wurde,
00:08:44um diese Art von Kontrolle in das Modell zu bekommen.
00:08:47Aber das ist jetzt nicht mehr nötig.
00:08:49Wir können das einfach sofort tun.
00:08:51Das reduziert die Zeit,
00:08:53die man braucht,
00:08:54um gute Ergebnisse zu erzielen,
00:08:55erheblich.
00:08:56So viel zur Pipeline.
00:08:57Nun,
00:08:58lassen Sie uns sehen,
00:08:59wie wir diese Modelle tatsächlich trainieren können.
00:09:02Und es gibt einen sehr wichtigen Algorithmus,
00:09:05über den ich sprechen möchte.
00:09:07Der Algorithmus,
00:09:08der es uns ermöglicht,
00:09:09diese Modelle zu trainieren,
00:09:11heißt Latent Flow Matching,
00:09:13der aus zwei Aspekten besteht: Latent und Flow Matching,
00:09:16und ich möchte beide beleuchten..
00:09:24Beginnen wir mit dem Latent.
00:09:25Dies kommt aus der latenten generativen Modellierung.
00:09:29Dies ist ein Algorithmus,
00:09:30den meine Mitbegründer und ich vor fast fünf Jahren entwickelt haben.
00:09:34Um zu erklären,
00:09:35was das bedeutet,
00:09:36schauen wir uns zunächst das folgende Beispiel an.
00:09:39Was ich hier visualisiere,
00:09:40sind im Grunde zwei Bilder,
00:09:42und für uns sehen sie genau gleich aus.
00:09:44Das linke ist ein JPEG,
00:09:45und das rechte ist dasselbe Bild als PNG.
00:09:48Das linke ist also eine Annäherung an das rechte,
00:09:51aber wir sehen keinen Unterschied..
00:09:53Oder sieht jemand einen Unterschied in diesen beiden Bildern?
00:09:57Ich glaube nicht.
00:09:58Okay, schauen wir uns nun die Dateigröße dieser Bilder an.
00:10:02Die Dateigröße des JPEG ist tatsächlich um fast eine Größenordnung kleiner als die Dateigröße des PNG.
00:10:09Das ist ziemlich bemerkenswert,
00:10:11und wir alle wissen,
00:10:12wie Bildkomprimierung funktioniert,
00:10:14aber allein die Erkenntnis,
00:10:16dass wir anscheinend viele Informationen aus einem Bild entfernen können,
00:10:21ohne es zu bemerken,
00:10:22ist ziemlich bemerkenswert,
00:10:24würde ich sagen..
00:10:26Es gibt also anscheinend viele Informationen in einem Bild,
00:10:30die wir mit unserem menschlichen Auge nicht wahrnehmen können.
00:10:34Eine andere Möglichkeit,
00:10:36dies zu visualisieren,
00:10:37ist,
00:10:38die perzeptuelle Ähnlichkeit eines Bildes – im letzten Beispiel eines PNGs ist das Bild – und die Annäherung dieses Bildes,
00:10:46also das JPEG dieses Bildes,
00:10:47gegen die Dateigröße aufzutragen.
00:10:50Dabei erhalten wir diese Grafik.
00:10:52Dies ist eine konzeptionelle Darstellung,
00:10:54also nicht real,
00:10:56aber konzeptionell sieht es so aus.
00:10:58Die perzeptuelle Ähnlichkeit nimmt schnell zu und bleibt dann über fast die gesamte Dateigröße hinweg auf einem konstanten Niveau.
00:11:06Das ist es,
00:11:07was verlustbehaftete Kompressionsalgorithmen wie JPEG nutzen,
00:11:11und Sie fragen sich vielleicht,
00:11:13was das mit generativer Modellierung zu tun hat?
00:11:16Es zeigt uns,
00:11:17dass für ein perzeptuelles Signal oder ein natürliches Signal,
00:11:21wie ein Bild – für Audio ist es tatsächlich dasselbe –,
00:11:25um real auszusehen oder als real wahrgenommen zu werden.
00:11:29Wir müssen nicht alle hochfrequenten Details modellieren,
00:11:32die wir nicht wahrnehmen können.
00:11:34Daher wäre das Training eines generativen Modells im Pixelraum auf all diesen hochfrequenten Details tatsächlich eine große Verschwendung von Rechenleistung und Zeit,
00:11:45da das Modell lernen würde,
00:11:47Aspekte darzustellen,
00:11:48die wir nicht einmal wahrnehmen.
00:11:51Es ist also sinnlos, dies zu lernen, oder?
00:11:53Und das ist der Kern der latenten generativen Modellierung.
00:11:57Anstatt also ein generatives Modell im Pixelraum direkt auf Bildern zu trainieren,
00:12:03lernen wir ein Kompressionsmodell,
00:12:05das einen niederdimensionalen,
00:12:07sogenannten latenten Raum extrahiert.
00:12:09Dieser latente Raum ist das,
00:12:11was wir hier in der Mitte sehen.
00:12:13Mal sehen, ob der Laserpointer funktioniert.
00:12:16Oh, ja, dieser hier.
00:12:17Wie lernen wir dieses Modell?
00:12:19Es ist tatsächlich super einfach..
00:12:24Wir verwenden hier links ein Bild.
00:12:26Wir leiten es durch einen Encoder,
00:12:28also ist dies effektiv ein Autoencoder.
00:12:30Wir leiten das Bild durch den Encoder,
00:12:33dann gelangen wir in diesen latenten Raum,
00:12:36und die Repräsentation leiten wir dann durch eine Operation,
00:12:39die Regularisierung genannt wird..
00:12:42Dies zwingt das Modell,
00:12:43Informationen aus dieser latenten Repräsentation zu entfernen.
00:12:47Es kann entweder diskret oder kontinuierlich implementiert werden,
00:12:52und dann rekonstruieren wir das Bild wieder aus dieser latenten Repräsentation.
00:12:57Also ein klassischer Autoencoder,
00:12:59den wir trainieren,
00:13:00um im Grunde ähnliche Rekonstruktionen wie die Eingabe zu liefern,
00:13:04und,
00:13:05sehr wichtig,
00:13:06wir fügen diesen Diskriminator-Verlust hinzu.
00:13:08Dies kann man sich als Prior vorstellen,
00:13:11um sicherzustellen,
00:13:12dass tatsächlich nur die Details,
00:13:14die für unsere menschlichen Augen perzeptuell relevant sind,
00:13:18in dieser latenten Repräsentation widergespiegelt werden.
00:13:22Auch hier zwingt diese Regularisierung das Modell,
00:13:25Informationen zu reduzieren oder zu entfernen,
00:13:28und der Diskriminator stellt sicher,
00:13:30dass es die richtigen Informationen entfernt,
00:13:33die wir nicht wahrnehmen können.
00:13:35Auf diese Weise gelangen wir,
00:13:37sobald wir dieses Modell trainiert haben,
00:13:40zu diesem latenten Raum,
00:13:41der dann zum Training des generierten Modells verwendet wird.
00:13:45Der latente Raum ist eine niederdimensionale Repräsentation des Eingabebildes oder eines Bildes,
00:13:52das perzeptuell äquivalent ist.
00:13:54Dies ist im Grunde der latente Aspekt des Latent Flow Matching-Algorithmus.
00:13:58Sprechen wir über den zweiten Teil, Flow Matching.
00:14:02Auch hier geschieht alles,
00:14:03was ich jetzt erkläre,
00:14:05in diesem latenten Raum.
00:14:06Was auch immer wir jetzt tun, Sie sehen es hier.
00:14:09Auf der linken Seite wird jedes Bild im Grunde in diesen latenten Raum eingebettet.
00:14:15Also, ja, sprechen wir über Flow Matching.
00:14:17Flow Matching-Algorithmen sind eine allgemeine Familie von Algorithmen,
00:14:22die verwendet werden,
00:14:23um von einer sehr einfachen Verteilung – in unserem Fall immer die Standardnormalverteilung,
00:14:29wir sprechen also jetzt über Wahrscheinlichkeitsverteilungen – zu übersetzen.
00:14:34Ich habe es hier visualisiert.
00:14:36Dies ist eine sehr einfache Verteilung hier.
00:14:39Flow Matching-Algorithmen übersetzen dies oder stellen uns Mittel zur Verfügung,
00:14:44um ein Vektorfeld,
00:14:45das durch ein neuronales Netzwerk repräsentiert wird – dieser Kerl hier –,
00:14:50zu trainieren,
00:14:51um zwischen der einfachen Verteilung und sehr komplizierten Verteilungen,
00:14:55wie der Datenverteilung natürlicher Bilder,
00:14:58abzubilden.
00:14:59Das ist also die Datenverteilung.
00:15:01Was tun wir, um dies zu trainieren?
00:15:03Der Flow Matching-Algorithmus bietet uns ein sehr einfaches Mittel dazu.
00:15:08Alles,
00:15:08was wir während des Trainings tun müssen,
00:15:11ist,
00:15:11eine Stichprobe aus dieser Standardnormalverteilung hier zu ziehen.
00:15:16Wir haben also eine Stichprobe,
00:15:18und dann weisen wir sie einer Stichprobe aus der Datenverteilung zu,
00:15:22einem Trainingsbeispiel,
00:15:24und wir koppeln dies,
00:15:25und dann können wir diese Art von Vektor konstruieren,
00:15:28der sie direkt,
00:15:29linear verbindet..
00:15:34Wenn wir dies für jedes Beispiel in unserem Trainingsdatensatz tun,
00:15:38also einfach das Beispiel nehmen,
00:15:40zufällig einen Punkt aus der Standardnormalverteilung ziehen und sie verbinden,
00:15:45dann gelangen wir zu diesem hier konstruierten Vektorfeld.
00:15:49Ich könnte jetzt viel über die Eigenschaften von Vektorfeldern sprechen.
00:15:54Eine wichtige Eigenschaft ist,
00:15:56dass sich Pfade in Vektorfeldern nicht kreuzen können,
00:15:59und wir sehen,
00:16:00dass hier viel Kreuzung stattfindet,
00:16:02also ist dies offensichtlich nicht das wahre Vektorfeld,
00:16:06das zwischen jedem Punkt auf dieser Verteilung oder zwischen dieser Verteilung und jener übersetzt..
00:16:13Das Erstaunliche am Flow Matching ist,
00:16:15wenn man einfach dieser Regel folgt,
00:16:18also trainieren wir das Modell,
00:16:20im Grunde immer diese Art von Vektoren zwischen der Datenstichprobe und der Stichprobe aus der Standardnormalverteilung vorherzusagen.
00:16:28Wir gelangen zum wahren Vektorfeld,
00:16:31und das sieht dann so aus.
00:16:32Hier sehen wir also,
00:16:34dass sich Pfade nicht mehr kreuzen,
00:16:36und der Flow Matching-Algorithmus garantiert dies einfach.
00:16:39Das ist ein bisschen Magie,
00:16:41aber wenn man es mathematisch aufschreibt,
00:16:44sehen wir tatsächlich,
00:16:45dass das Sinn ergibt.
00:16:47Und auf diese Weise können wir das Modell dann tatsächlich trainieren,
00:16:51dieses wahre Vektorfeld darzustellen,
00:16:53das zwischen der Standardnormalverteilung und unserer Datenverteilung übersetzt..
00:17:00Und wichtig ist,
00:17:01dass wir Bilder basierend auf Texteingaben erstellen können wollen.
00:17:06Was wir also tun,
00:17:08ist,
00:17:08dieses Netzwerk im Grunde immer auf eine Texteingabe zu konditionieren,
00:17:14für jedes Bildbeispiel.
00:17:16Cool..
00:17:17Was tun wir also, wenn wir das Modell dann sampeln?
00:17:20Wir haben dieses Vektorfeld,
00:17:22das die Abbildung zwischen diesen beiden Verteilungen darstellt.
00:17:25Was wir dann tun,
00:17:26ist,
00:17:27mit einer Stichprobe aus der Standardnormalverteilung zu beginnen.
00:17:31Wir können sie mit einem Computer sampeln, richtig?
00:17:34Das wissen wir alle.
00:17:35Und dann integrieren wir entlang dieser Trajektorien,
00:17:38die durch neuronale Netze repräsentiert werden.
00:17:41Das können wir mit einem einfachen Euler-Vorwärts-Algorithmus tun.
00:17:45Wahrscheinlich kennen viele von Ihnen diese.
00:17:48Mit einem numerischen Integrationsschema können wir also einfach entlang dieser Trajektorien integrieren und dann bei der Datenstichprobe ankommen.
00:17:56Wir leiten es wieder durch den Decoder und kommen an.
00:18:00Das geschieht also wieder im latenten Raum,
00:18:02aber hier kommen wir dann wieder im Pixelraum an.
00:18:05Und so kann ich dann Bilder basierend auf einem Text-Prompt erstellen.
00:18:09Cool.
00:18:10Eine Sache ist,
00:18:11diese numerischen Integrationsschemata sind ziemlich,
00:18:14ich denke,
00:18:14sie verwenden viele Schritte,
00:18:16also zerlegen sie diesen Prozess hier Schritt für Schritt in bis zu 50 Schritte.
00:18:21Diese latenten Flow Matching-Modelle sind also nativ ziemlich langsam,
00:18:25und es dauert etwa 30 Sekunden bis eine Minute,
00:18:28um ein Bild zu generieren,
00:18:30was etwas lang ist..
00:18:32Ich werde sehr bald darüber sprechen,
00:18:34wie man sie schnell macht.
00:18:35Aber das ist der allgemeine Latent Flow Matching-Algorithmus.
00:18:39Latent steht also wieder für diesen latenten Raum,
00:18:41in dem wir das Modell trainieren.
00:18:43Und der Flow Matching-Algorithmus ist das,
00:18:45was wir gerade hier besprochen haben.
00:18:47Okay,
00:18:48jetzt habe ich erklärt,
00:18:49wie wir Bilder basierend auf Text-Prompts erstellen,
00:18:52aber wie wendet sich das jetzt auf Context an,
00:18:54das ja ein Bearbeitungsmodell ist,
00:18:56richtig?
00:18:57Das ist auch super einfach.
00:18:58Das ist also eine grundlegende Flux Context-Architektur.
00:19:01Es ist ein Transformer-Modell.
00:19:03Das wissen wir alle..
00:19:05Es ist etwas Besonderes,
00:19:06aber die Magie liegt in der Eingabe.
00:19:09Wir sehen hier auf der linken Seite die Eingabe in das Modell.
00:19:13Zuerst haben wir die Texteingabe,
00:19:15die einfach von einem Text-Encoder in einen Satz von Text-Tokens eingebettet wird.
00:19:21Und dann haben wir den Bild-Encoder,
00:19:23den wir bereits auf der letzten Folie gesehen haben,
00:19:26richtig?
00:19:27Dieser hier.
00:19:28Das ist es, was wir jetzt hier sehen.
00:19:30Wir haben also diesen Bild-Encoder,
00:19:33und dort haben wir zwei Sätze von visuellen Tokens.
00:19:36Zuerst haben wir den Satz der visuellen Tokens,
00:19:39die wir tatsächlich zur Generierung verwenden.
00:19:42Dies wird das Ausgabebild sein.
00:19:44Und dann haben wir,
00:19:46wenn wir Bildbearbeitung durchführen wollen,
00:19:48einen zweiten Satz visueller Tokens,
00:19:51die einfach das Kontextbild modellieren oder repräsentieren.
00:19:55Also im Grunde das Referenzbild, das ich dem Modell zeige.
00:19:59Und was wir dann tun,
00:20:00ist,
00:20:01dies an das Transformer-Modell zu übergeben.
00:20:04Es ist ein besonderes,
00:20:05weil es sogenannte Double Stream Blocks enthält.
00:20:08Das sind,
00:20:09würde ich sagen,
00:20:10eine Art Expertenmodelle für jede Modalität.
00:20:13Hier behandeln wir also die visuellen Tokens und die Text-Tokens separat..
00:20:20Für alles außer der Aufmerksamkeitsoperation findet die Aufmerksamkeitsoperation dann gemeinsam über alle Tokens statt.
00:20:28Und dann haben wir Standardblöcke,
00:20:31Standard-Transformer-Blöcke,
00:20:33wo wir im Grunde alle Eingabe- und Text-Tokens und die visuellen Tokens mit denselben Mappings vor der Aufmerksamkeitsoperation abbilden.
00:20:43Und so können wir einfach in die Bildbearbeitung einsteigen..
00:20:48Wenn Sie hier ein Eingabebild bereitstellen und Text-Bild-Generierung durchführen,
00:20:53stellen Sie dies einfach nicht bereit,
00:20:56und dann haben wir nur einen Text-Prompt als Eingabe,
00:20:59richtig?
00:21:00Cool.
00:21:00Letzter Punkt hier.
00:21:01Wie ist das Modell so schnell?
00:21:03Ich weiß nicht, wie viele von Ihnen Flux-Modelle kennen.
00:21:07Können Sie vielleicht einfach die Hand heben,
00:21:10wenn Sie Flux-Modelle kennen?
00:21:11Oder tatsächlich ein paar.
00:21:13Okay, cool.
00:21:14Wir wissen also alle,
00:21:15dass sie ziemlich schnell sind,
00:21:17richtig?
00:21:18Was meine ich, wenn ich schnell sage?
00:21:20Wir sind im Grunde meistens um Größenordnungen schneller als vergleichbare Modelle.
00:21:25Hier sehen wir zum Beispiel ein offensichtlich sehr langsames,
00:21:29aber schönes Modell,
00:21:30GPD Image One.
00:21:31Auch hier bei der Bearbeitung sind die Flux-Modelle mehr als 10-mal schneller,
00:21:36sogar mehr als,
00:21:37ja,
00:21:3820-mal.
00:21:38Es ist also tatsächlich unglaublich,
00:21:40wie schnell sie im Vergleich zu ähnlich leistungsstarken Modellen sind.
00:21:45Und der Grund dafür ist ein Algorithmus,
00:21:47den wir vor zwei,
00:21:49drei Jahren entwickelt haben.
00:21:50Er heißt Adversarial Diffusion Distillation,
00:21:53und das Ziel dieses Algorithmus ist es,
00:21:56die Anzahl der numerischen Integrationsschritte zu reduzieren.
00:22:00Ich habe Ihnen bereits gesagt,
00:22:01dass dies bei einem Standard-Flow-Matching-Modell meist 50 Schritte sind,
00:22:06und das Ziel hier ist es,
00:22:08sie auf nur vier zu reduzieren.
00:22:10Jeder numerische Integrationsschritt bedeutet einen Vorwärtsdurchlauf durch das neuronale Netzwerk,
00:22:16sodass wir uns vorstellen können,
00:22:18dass dies einfach lange dauert,
00:22:20also wollen wir es so weit wie möglich reduzieren.
00:22:23Wie funktioniert es?
00:22:25Wir initialisieren hier zwei Netzwerke,
00:22:27einen Lehrer und einen Schüler.
00:22:29Beide werden aus dem gelernten Flow Matching-Modell über den Algorithmus initialisiert,
00:22:35den ich Ihnen gerade gezeigt habe.
00:22:37Und was wir dann tun,
00:22:38ist,
00:22:39den Schüler zu trainieren,
00:22:40um in vier Schritten die gleiche Bildqualität in der Ausgabe zu erzielen,
00:22:45die der Lehrer in 50 Schritten erreicht.
00:22:47Das ist das Ziel, und so machen wir es.
00:22:50Wir beginnen mit einem Bild,
00:22:52kodieren es hier wieder in eine Latenz,
00:22:54und dann generieren wir ein Ausgabebild für den Schüler in vier Schritten oder in der Anzahl der Zielschritte,
00:23:01die wir erreichen wollen.
00:23:03Und dann dekodieren wir es wieder zu Pixeln..
00:23:08Am Anfang sieht dieses Bild hier sehr verschwommen und einfach nicht realistisch aus.
00:23:13Und das Ziel ist es, dies offensichtlich zu verbessern.
00:23:16Was wir also tun,
00:23:17ist,
00:23:18dies wieder zu verwenden,
00:23:19es wieder in Latenz zu kodieren und dann dasselbe mit dem Lehrer zu tun,
00:23:23aber in 50 Schritten statt in vier Schritten.
00:23:26Dies führt dann zu einem qualitativ hochwertigen Bild,
00:23:29und wir verwenden dann diesen Destillationsverlust,
00:23:32im Grunde nur einen Verlust,
00:23:34um sicherzustellen,
00:23:35dass die Verteilungen des Lehrers oder des Schülers denen des Lehrers entsprechen.
00:23:40Dies allein würde uns leider nicht ermöglichen,
00:23:43im Grunde Bilder zu generieren,
00:23:44die real aussehen.
00:23:45Was wir also hinzufügen,
00:23:47ist ein weiterer Diskriminator-Verlust.
00:23:49Das haben wir bereits für den Autoencoder-Teil im latenten generativen Modellierungsteil des Vortrags zuvor gesehen.
00:23:56Das ist im Grunde dasselbe.
00:23:58Wir trainieren also einen Diskriminator,
00:24:00um generierte Bilder des Schülers von realen Bildern zu unterscheiden,
00:24:04die wir hier eingeben.
00:24:05Und dies geschieht in einem Dyno v2 Feature Space oder gewissermaßen in einem gelernten Bildrepräsentationsmodellraum.
00:24:12Und auf diese Weise können wir das Modell dann tatsächlich trainieren,
00:24:16am Ende realistische Bilder zu generieren,
00:24:19anstatt 50 Schritte zu verwenden,
00:24:21es verwendet nur vier Schritte.
00:24:22Das ist offensichtlich eine enorme Beschleunigung.
00:24:25Allerdings, letzter Punkt hier.
00:24:27Wenn wir uns das hier ansehen,
00:24:29sieht es ziemlich,
00:24:30ich würde sagen,
00:24:31nach viel Overhead aus,
00:24:32richtig?
00:24:33Denn hier müssen wir in den latenten Raum vordringen.
00:24:36Wir beginnen also im Bildraum,
00:24:38werden in den latenten Raum überführt,
00:24:40und dekodieren wieder,
00:24:41dann müssen wir wieder kodieren und wieder dekodieren.
00:24:44Und dann kodiert auch dieses wieder in einen anderen Repräsentationsraum.
00:24:49Viel Overhead, viele Speicherkosten sind damit verbunden.
00:24:52Und das ist einfach sehr,
00:24:53es war,
00:24:54als wir es entwickelt hatten,
00:24:56waren wir davon begeistert,
00:24:57weil es uns ermöglichte,
00:24:59schnelle Modelle zu trainieren.
00:25:00Es war so aufwendig, dies zu trainieren.
00:25:03Also dachten wir darüber nach,
00:25:05okay,
00:25:05wie können wir das eigentlich vereinfachen?
00:25:08Und die Antwort ist immer die Antwort.
00:25:10Verschieben Sie es einfach in den latenten Raum,
00:25:13wann immer Sie ein Pixel haben.
00:25:14Was wir also taten,
00:25:15war,
00:25:16einen latenten Adversarial Diffusion Distillation-Ansatz zu entwickeln.
00:25:20Es ist im Grunde sehr ähnlich zu dem,
00:25:22was wir für den allgemeinen latenten generativen Modellierungsalgorithmus getan haben.
00:25:27Wir verschieben einfach alles hier in den latenten Raum.
00:25:31Dasselbe,
00:25:31aber anstatt diese Encoder und Decoder verwenden zu müssen,
00:25:35können wir sie einfach weglassen.
00:25:37Und wichtig ist,
00:25:37dass wir als Diskriminator Dyno nicht mehr verwenden..
00:25:44Dieses Bildrepräsentationsmodell,
00:25:45wir verwenden den Lehrer,
00:25:47weil dieser ohnehin bereits im latenten Raum lebt und uns eine sehr schöne Bildrepräsentation liefert.
00:25:53Wir können den Lehrer also auch als Diskriminator verwenden.
00:25:56Und der Rest ist im Grunde fast dasselbe.
00:25:59Wir entfernen auch den Destillationsverlust.
00:26:01Wir haben festgestellt,
00:26:02dass wir ihn nicht brauchen,
00:26:04was auch cool ist..
00:26:06Wir haben also einen Verlust weniger und alles wird vereinfacht.
00:26:11Und so können wir dann tatsächlich auf sehr speichereffiziente Weise die Anzahl der Integrationsschritte von fünf auf vier reduzieren.
00:26:23Wir haben also eine 12,
00:26:255-fache Beschleunigung,
00:26:27und das ist tatsächlich das,
00:26:29was wir als diese Größenordnung in den Diagrammen sehen,
00:26:34die ich Ihnen zu Beginn dieses Abschnitts gezeigt habe.
00:26:39Das ist also im Grunde,
00:26:41wie wir ein sehr schnelles Modell aus einem Flow Matching,
00:26:46aus einem Basis-Flow-Matching-Modell erhalten.
00:26:50Und jetzt,
00:26:51bevor dieser Vortrag endet,
00:26:53habe ich Ihnen tatsächlich eine Demo mitgebracht,
00:26:57um Ihnen Flux ein bisschen in Aktion zu zeigen.
00:27:01Mal sehen.
00:27:02Also, verwenden wir es hier für die Bildbearbeitung.
00:27:07Lassen Sie mich danach etwas hochladen.
00:27:10Was machen wir hier?
00:27:12Das sieht gut aus.
00:27:13Ja.
00:27:14Okay.
00:27:14Ja.
00:27:15Das ist gut.
00:27:16Also,
00:27:16hier beginne ich mit einem Logo meines Lieblingsfußballvereins,
00:27:22dem SC Freiburg.
00:27:23Ich muss 'soccer' sagen, wenn ich in den USA bin.
00:27:27Okay.
00:27:28Das ist mein Lieblingsverein,
00:27:30und ich möchte ein T-Shirt mit diesem Logo erstellen.
00:27:35Sagen wir also, dieses Logo auf ein T-Shirt setzen.
00:27:39Fühlt sich etwas komisch an,
00:27:42weil ich keinen Bildschirm vor mir habe.
00:27:45Okay.
00:27:46Los geht's.
00:27:47Generiere.
00:27:48Lassen Sie mich das etwas kleiner machen..
00:27:53Vielleicht so.
00:27:55Okay.
00:27:55Schön.
00:27:56Wir warten ein paar Sekunden,
00:27:58und wir bekommen dieses schöne Logo auf einem T-Shirt.
00:28:02Und jetzt das Schöne ist,
00:28:05wir können tatsächlich weitermachen,
00:28:08richtig?
00:28:08Wir können daran iterieren.
00:28:10Sagen wir also,
00:28:12dieses Logo ist etwas zu groß,
00:28:14würde ich sagen.
00:28:15Machen Sie das Logo kleiner und setzen Sie es auf den restlichen Teil.
00:28:21Nochmal.
00:28:22Ein paar Sekunden warten.
00:28:24Okay.
00:28:25Cool.
00:28:25Und wir kommen zu einem Ergebnis,
00:28:28das tatsächlich super schön ist.
00:28:30Das ist tatsächlich das, was ich wollte.
00:28:34Ich möchte wieder mit diesem hier beginnen.
00:28:37Und ich möchte jetzt die Farbe ändern,
00:28:41denn die Farbe des SC Freiburg ist nicht schwarz,
00:28:45sie ist rot.
00:28:46Also, machen Sie das T-Shirt rot.
00:28:48Auch super einfach.
00:28:50Jetzt sind wir bei der lokalen Bearbeitung.
00:28:54Wir bearbeiten nur lokale Teile des Bildes, richtig?
00:28:58In diesem Fall die Farbe.
00:29:00Und wichtig ist,
00:29:01dass wir jetzt ein paar Bearbeitungen vorgenommen haben und immer noch sehen,
00:29:08dass das Logo sehr konsistent dargestellt wird.
00:29:12Das ist also die Charakter- oder in diesem Fall Objektkonsistenz,
00:29:17die wir gesehen haben.
00:29:19Das ist super wichtig.
00:29:21Denken Sie an einen Vermarkter,
00:29:23der einfach ein Objekt hat und es in einen bestimmten Kontext setzen möchte,
00:29:29richtig?
00:29:30Das ist in Bezug auf den Geschäftswert großartig,
00:29:34es ist super wichtig.
00:29:36Und jetzt fügen wir schließlich eine komplexere Transformation hinzu.
00:29:42Wir können sagen: 'Setzen Sie das T-Shirt auf einen Mann,
00:29:46der im Park spaziert.' Ups.
00:29:49Das ist also eine komplexe Transformation,
00:29:52und man hätte sagen können,
00:29:54okay,
00:29:55Dinge wie das Ändern der Farbe kann man in Photoshop machen,
00:30:00richtig.
00:30:00Historisch gesehen,
00:30:02so etwas,
00:30:03das konnten Standard- oder frühere Nicht-KI-Bildgenerierungstools nicht oder waren dazu nicht in der Lage?
00:30:12Das ist tatsächlich super schön.
00:30:14Hier haben wir also jetzt diese Art von Mann,
00:30:18und schließlich,
00:30:19ich glaube,
00:30:20ich bin in der Zeit,
00:30:22aber lassen Sie uns noch eine letzte Sache tun,
00:30:26die zeigt,
00:30:27wie allgemein dieses Modell ist.
00:30:29Wir können auch Stiltransfer machen, richtig.
00:30:33Sagen wir also, machen Sie dies zu einem Aquarellgemälde.?
00:30:42Alles klar, der letzte.
00:30:44Und vor solchen Modellen hätte man wahrscheinlich – man hätte dieses einzelne Fine-Tuning für jede dieser Aufgaben trainiert,
00:30:53und jetzt können wir es einfach in einer Sache kombinieren,
00:30:58was ziemlich cool ist.
00:31:00Schön.
00:31:00Also,
00:31:01jetzt könnte ich es ausdrucken und an meine Wand hängen oder so.
00:31:05Wie auch immer,
00:31:07ja,
00:31:07ich denke,
00:31:08das zeigt die Leistungsfähigkeit dieser Modelle.
00:31:11Oh, da ist etwas abgestürzt.
00:31:14Ich wollte Ihnen noch eine letzte Folie zeigen,
00:31:17weil ich fertig bin,
00:31:19aber wir stellen ein,
00:31:20und wenn Sie uns beitreten möchten,
00:31:23scannen Sie dies hier oder besuchen Sie den Playground,
00:31:27die Demo,
00:31:28die ich Ihnen gerade gezeigt habe,
00:31:30frei verfügbar.
00:31:31Vielen Dank.
00:31:32Ich hoffe, Sie haben etwas gelernt..