Leitfaden zur Bildgenerierung

Aufgabe „Bildgenerator“

Mit der Aufgabe „MediaPipe Image Generator“ können Sie Bilder anhand eines Text-Prompts generieren. Bei dieser Aufgabe werden mithilfe eines Text-zu-Bild-Modells Bilder mithilfe von Diffusionstechniken generiert.

Die Aufgabe akzeptiert einen Textprompt als Eingabe sowie ein optionales Bedingungsbild, das das Modell ergänzen und als Referenz für die Generierung verwenden kann. Weitere Informationen zur bedingten Text-zu-Bild-Generierung finden Sie unter On-Device-Diffusions-Plug-ins für die bedingte Text-zu-Bild-Generierung.

Der Bildgenerator kann auch Bilder basierend auf bestimmten Konzepten generieren, die dem Modell während des Trainings oder des erneuten Trainings zur Verfügung gestellt wurden. Weitere Informationen finden Sie unter Mit LoRA anpassen.

Jetzt starten

Folgen Sie einer dieser Implementierungsanleitungen für Ihre Zielplattform, um diese Aufgabe zu verwenden. In diesen plattformspezifischen Anleitungen erfahren Sie, wie Sie diese Aufgabe mithilfe von Codebeispielen, die ein Standardmodell und die empfohlenen Konfigurationsoptionen verwenden, einfach implementieren:

Taskdetails

In diesem Abschnitt werden die Funktionen, Eingaben, Ausgaben und Konfigurationsoptionen dieser Aufgabe beschrieben.

Funktionen

Mit dem Bildgenerator können Sie Folgendes implementieren:

  1. Text-zu-Bild-Generierung: Hiermit lassen sich Bilder mit einem Text-Prompt generieren.
  2. Bilder mit bedingten Bildern generieren: Mit einem Text-Prompt und einem Referenzbild Bilder generieren. Der Bildgenerator verwendet Bedingungsbilder ähnlich wie ControlNet.
  3. Bilder mit LoRA-Gewichten generieren: Mithilfe von benutzerdefinierten Modellgewichten können Sie Bilder von bestimmten Personen, Objekten und Stilen mit einem Text-Prompt generieren.
Aufgabeneingaben Aufgabenausgaben
Der Bildgenerator akzeptiert die folgenden Eingaben:
  • Text-Prompt
  • Seed
  • Anzahl der generativen Iterationen
  • Optional: Zustandsbild
Der Bildgenerator gibt die folgenden Ergebnisse aus:
  • Auf Grundlage der Eingaben generiertes Bild.
  • Optional: Iterations-Snapshots des generierten Bildes.

Konfigurationsoptionen

Für diese Aufgabe gibt es die folgenden Konfigurationsoptionen:

Option Beschreibung Wertebereich
imageGeneratorModelDirectory Das Modellverzeichnis des Bildgenerators, in dem die Modellgewichte gespeichert werden. PATH
loraWeightsFilePath Legen Sie den Pfad zur LoRA-Gewichtsdatei fest. Optional und nur anwendbar, wenn das Modell mit LoRA angepasst wurde. PATH
errorListener Legt einen optionalen Fehler-Listener fest. N/A

Die Aufgabe unterstützt auch Plug-in-Modelle, mit denen Nutzer Bedingungsbilder in die Aufgabeneingabe einfügen können, die das Basismodell ergänzen und als Referenz für die Generierung verwenden kann. Diese Anhaltspunkte können Gesichtsmerkmale, Kantenkonturen und Tiefenschätzungen sein, die das Modell als zusätzlichen Kontext und Informationen zum Generieren von Bildern verwendet.

Wenn Sie dem Foundation-Modell ein Plug-in-Modell hinzufügen, konfigurieren Sie auch die Plug-in-Optionen. Für das Plug-in für Gesichtsmarkierungen wird faceConditionOptions, für das Canny-Eckpunkt-Plug-in edgeConditionOptions und für das Tiefen-Plug-in depthConditionOptions verwendet.

Canny-Edge-Optionen

Konfigurieren Sie in edgeConditionOptions die folgenden Optionen.

Option Beschreibung Wertebereich Standardwert
threshold1 Erster Grenzwert für das Hystereseverfahren. Float 100
threshold2 Zweiter Grenzwert für das Hystereseverfahren. Float 200
apertureSize Blendengröße für den Sobel-Operator. Der typische Bereich liegt zwischen 3 und 7. Integer 3
l2Gradient Gibt an, ob die L2-Norm anstelle der Standard-L1-Norm verwendet wird, um die Größe des Bildgradienten zu berechnen. BOOLEAN False
EdgePluginModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Plug-in-Modell festlegt. BaseOptions Objekt N/A

Weitere Informationen zur Funktionsweise dieser Konfigurationsoptionen finden Sie unter Canny-Kantenerkennung.

Optionen für Gesichts-Landmarks

Konfigurieren Sie in faceConditionOptions die folgenden Optionen.

Option Beschreibung Wertebereich Standardwert
minFaceDetectionConfidence Die Mindestpunktzahl für die Gesichtserkennung, die als erfolgreich gilt. Float [0.0,1.0] 0.5
minFacePresenceConfidence Die minimale Konfidenz der Punktzahl für die Gesichtspräsenz bei der Gesichts-Landmark-Erkennung. Float [0.0,1.0] 0.5
faceModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Modell festlegt, das das Zustandsbild erstellt. BaseOptions Objekt N/A
FacePluginModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Plug-in-Modell festlegt. BaseOptions Objekt N/A

Weitere Informationen zur Funktionsweise dieser Konfigurationsoptionen finden Sie unter Aufgabe „Gesichtsmarkierungen“.

Optionen für die Tiefe

Konfigurieren Sie in depthConditionOptions die folgenden Optionen.

Option Beschreibung Wertebereich Standardwert
depthModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Modell festlegt, das das Zustandsbild erstellt. BaseOptions Objekt N/A
depthPluginModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Plug-in-Modell festlegt. BaseOptions Objekt N/A

Modelle

Der Bildgenerator benötigt ein Basismodell, ein KI-Modell für die Text-zu-Bild-Erzeugung, das mithilfe von Diffusionstechniken neue Bilder generiert. Die in diesem Abschnitt aufgeführten Foundation Models sind ressourcenschonende Modelle, die für die Ausführung auf High-End-Smartphones optimiert sind.

Plug-in-Modelle sind optional und ergänzen die grundlegenden Modelle. So können Nutzer ein zusätzliches Bedingungsbild zusammen mit einem Textprompt angeben, um eine genauere Bildgenerierung zu ermöglichen. Die Anpassung der Basismodelle mit LoRA-Gewichten ist eine Option, mit der das Basismodell ein bestimmtes Konzept wie ein Objekt, eine Person oder einen Stil lernt und diese in generierte Bilder einfügt.

Basismodelle

Die Basismodelle sind latente Text-zu-Bild-Diffusionsmodelle, die Bilder aus einem Textprompt generieren. Der Bildgenerator erfordert, dass das Basismodell dem runwayml/stable-diffusion-v1-5 EMA-only-Modellformat entspricht, das auf dem folgenden Modell basiert:

Die folgenden Foundation Models sind ebenfalls mit dem Bildgenerator kompatibel:

Nachdem Sie ein Basismodell heruntergeladen haben, verwenden Sie den image_generator_converter, um das Modell in das richtige On-Device-Format für den Bildgenerator umzuwandeln.

Installieren Sie die erforderlichen Abhängigkeiten:

$ pip install torch typing_extensions numpy Pillow requests pytorch_lightning absl-py

Führen Sie das Skript convert.py aus:

$ python3 convert.py --ckpt_path <ckpt_path> --output_path <output_path>

Plug-in-Modelle

Die Plug-in-Modelle in diesem Abschnitt wurden von Google entwickelt und müssen in Kombination mit einem Basismodell verwendet werden. Mit Plug-in-Modellen kann der Image Generator ein Referenzbild zusammen mit einem Text-Prompt als Eingabe akzeptieren. So können Sie die Struktur der generierten Bilder steuern. Die Plug-in-Modelle bieten Funktionen, die denen von ControlNet ähneln, mit einer neuartigen Architektur, die speziell für die Diffusion auf dem Gerät entwickelt wurde.

Die Plug-in-Modelle müssen in den Basisoptionen angegeben werden. Möglicherweise müssen Sie zusätzliche Modelldateien herunterladen. Jedes Plug-in hat spezifische Anforderungen an das Zustandsbild, das mit dem Bildgenerator erstellt werden kann.

Canny Edge-Plug-in

Beispielausgabe von zwei generierten Bildern, bei denen ein bereitgestelltes Bild mit einem starken Umriss von Ziegeln und der Prompt verwendet werden

Das Canny-Edge-Plug-in akzeptiert ein Bedingungsbild, in dem die gewünschten Kanten des generierten Bildes dargestellt sind. Das Basismodell verwendet die Kanten, die durch das Bild mit der Bedingung impliziert werden, und generiert ein neues Bild basierend auf dem Textprompt. Der Bildgenerator enthält integrierte Funktionen zum Erstellen von Zustandsbildern. Sie müssen lediglich das Plug-in-Modell herunterladen.

Canny Edge-Plug-in herunterladen

Das Canny Edge-Plug-in enthält die folgenden Konfigurationsoptionen:

Option Beschreibung Wertebereich Standardwert
threshold1 Erster Grenzwert für das Hystereseverfahren. Float 100
threshold2 Zweiter Grenzwert für das Hystereseverfahren. Float 200
apertureSize Blendengröße für den Sobel-Operator. Der typische Bereich liegt zwischen 3 und 7. Integer 3
l2Gradient Gibt an, ob die L2-Norm anstelle der Standard-L1-Norm verwendet wird, um die Größe des Bildgradienten zu berechnen. BOOLEAN False
EdgePluginModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Plug-in-Modell festlegt. BaseOptions Objekt N/A

Weitere Informationen zur Funktionsweise dieser Konfigurationsoptionen finden Sie unter Canny-Kantenerkennung.

Plugin „Gesichts-Landmark“

Beispielausgabe von zwei generierten Bildern, die ein bereitgestelltes Ausgangsbild eines skizzierten Gesichts und zwei verschiedene Prompts verwenden, um zu zeigen, dass mit demselben Ausgangsbild sehr unterschiedliche Bilder generiert werden können

Das Plug-in „Gesichtsmarkierung“ akzeptiert die Ausgabe des MediaPipe-Gesichtsmarkierungs-Filters als Bedingungsbild. Die Gesichtsmarkierung liefert ein detailliertes Gesichts-Mesh eines einzelnen Gesichts, das die Anwesenheit und Position der Gesichtsmerkmale abbildet. Das Basismodell verwendet die vom Zustandsbild implizierte Gesichtskartierung und generiert ein neues Gesicht über dem Mesh.

Plug-in für Gesichtsmarkierungen herunterladen

Für das Gesichts-Landmark-Plug-in ist außerdem das Modell-Bundle für den Gesichts-Landmarker erforderlich, um das Zustandsbild zu erstellen. Dieses Modellpaket ist dasselbe, das für die Aufgabe Gesichtsmarkierungen verwendet wird.

Modellpaket für Gesichtsmarkierungen herunterladen

Das Plug-in für Gesichtsmarkierungen enthält die folgenden Konfigurationsoptionen:

Option Beschreibung Wertebereich Standardwert
minFaceDetectionConfidence Die Mindestpunktzahl für die Gesichtserkennung, die als erfolgreich gilt. Float [0.0,1.0] 0.5
minFacePresenceConfidence Die minimale Konfidenz der Punktzahl für die Gesichtspräsenz bei der Gesichts-Landmark-Erkennung. Float [0.0,1.0] 0.5
faceModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Modell festlegt, das das Zustandsbild erstellt. BaseOptions Objekt N/A
FacePluginModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Plug-in-Modell festlegt. BaseOptions Objekt N/A

Weitere Informationen zur Funktionsweise dieser Konfigurationsoptionen finden Sie unter Aufgabe „Gesichtsmarkierungen“.

Tiefen-Plug-in

Beispielausgabe von zwei generierten Bildern, bei denen ein bereitgestelltes Bild mit der allgemeinen Form eines Autos verwendet wird, um zu zeigen, dass das Depth-Plug-in Bilder erstellen kann, die einem flachen Bild Tiefe verleihen

Das Depth-Plug-in akzeptiert ein Bedingungsbild, das die monokulare Tiefe eines Objekts angibt. Das Foundation Model verwendet das Referenzbild, um die Größe und Tiefe des zu generierenden Objekts zu ermitteln, und generiert ein neues Bild basierend auf dem Textprompt.

Depth-Plug-in herunterladen

Für das Depth-Plug-in ist außerdem ein Modell zur Tiefenschätzung erforderlich, um das Vergleichsbild zu erstellen.

Modell zur Tiefenschätzung herunterladen

Das Depth-Plug-in enthält die folgenden Konfigurationsoptionen:

Option Beschreibung Wertebereich Standardwert
depthModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Modell festlegt, das das Zustandsbild erstellt. BaseOptions Objekt N/A
depthPluginModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Plug-in-Modell festlegt. BaseOptions Objekt N/A

Anpassung mit LoRA

Wenn Sie ein Modell mit LoRA anpassen, kann der Bildgenerator Bilder basierend auf bestimmten Konzepten generieren, die während des Trainings durch eindeutige Tokens identifiziert werden. Mit den neuen LoRA-Gewichten nach dem Training kann das Modell Bilder des neuen Konzepts generieren, wenn das Token im Textprompt angegeben ist.

Zum Erstellen von LoRA-Gewichten muss ein Basismodell anhand von Bildern eines bestimmten Objekts, einer bestimmten Person oder eines bestimmten Stils trainiert werden. So kann das Modell das neue Konzept erkennen und bei der Generierung von Bildern anwenden. Wenn Sie LoRa-Gewichte erstellen, um Bilder von bestimmten Personen und Gesichtern zu generieren, verwenden Sie diese Lösung nur für Ihr Gesicht oder die Gesichter von Personen, die Ihnen dazu die Erlaubnis erteilt haben.

Unten sehen Sie die Ausgabe eines benutzerdefinierten Modells, das mit Bildern von Teekannen aus dem DreamBooth-Dataset trainiert wurde. Dabei wurde das Token „monadikos teapot“ verwendet:

Ein generiertes fotorealistisches Bild einer Teekanne auf einem Tisch neben einem an der Wand montierten Spiegel

Prompt: Eine Monadikos-Teekanne neben einem Spiegel

Das angepasste Modell hat das Token im Prompt erhalten und eine Teekanne eingefügt, die es anhand der LoRA-Gewichte dargestellt hat. Das Bild wird dann wie im Prompt angefordert neben einem Spiegel platziert.

LoRA mit Vertex AI

Weitere Informationen finden Sie im Anleitung zur Anpassung, in dem Model Garden in Vertex AI verwendet wird, um ein Modell durch Anwenden von LoRA-Gewichten auf ein Basismodell anzupassen.