Leitfaden zur Bildgenerierung

Aufgabe zur Bildgenerierung

Mit der MediaPipe Image Generator-Aufgabe können Sie Bilder auf Grundlage eines Text-Prompts generieren. Bei dieser Aufgabe wird ein Text-zu-Bild-Modell verwendet, um Bilder mithilfe von Diffusionstechniken zu generieren.

Für die Aufgabe wird ein Text-Prompt als Eingabe akzeptiert, zusammen mit einem optionalen Bedingungsbild, das das Modell erweitern 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.

Mit Image Generator können auch Bilder basierend auf bestimmten Konzepten generiert werden, die dem Modell während des Trainings oder erneuten Trainings zur Verfügung gestellt wurden. Weitere Informationen finden Sie unter Mit LoRA anpassen.

Jetzt starten

Folgen Sie einer der Implementierungsanleitungen für Ihre Zielplattform, um diese Aufgabe zu verwenden. In diesen plattformspezifischen Anleitungen wird die grundlegende Implementierung dieser Aufgabe beschrieben. Die Codebeispiele verwenden ein Standardmodell und die empfohlenen Konfigurationsoptionen:

Taskdetails

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

Funktionen

Mit dem Image Generator können Sie Folgendes implementieren:

  1. Text-zu-Bild-Generierung: Generieren Sie Bilder mit einem Text-Prompt.
  2. Bilder mit Bedingungsbildern generieren: Generieren Sie Bilder mit einem Text-Prompt und einem Referenzbild. Image Generator verwendet Bedingungsbilder ähnlich wie ControlNet.
  3. Bildgenerierung mit LoRA-Gewichten: Mit einem Text-Prompt und benutzerdefinierten Modellgewichten Bilder von bestimmten Personen, Objekten und Stilen generieren.
Aufgabeneingaben Aufgabenausgaben
Der Image Generator akzeptiert die folgenden Eingaben:
  • Text-Prompt
  • Seed
  • Anzahl der generativen Iterationen
  • Optional: Bild für Bedingung
Der Bildgenerator gibt die folgenden Ergebnisse aus:
  • Generiertes Bild auf Grundlage der Eingaben.
  • Optional: Iterative Snapshots des generierten Bildes.

Konfigurationsoptionen

Für diese Aufgabe sind die folgenden Konfigurationsoptionen verfügbar:

Option Beschreibung Wertebereich
imageGeneratorModelDirectory Das Verzeichnis des Bildgenerierungsmodells, in dem die Modellgewichte gespeichert werden. PATH
loraWeightsFilePath Legt den Pfad zur LoRA-Gewichtungsdatei 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, sodass Nutzer Bedingungsbilder in die Aufgabeneingabe einfügen können, die das Fundamentmodell erweitern und als Referenz für die Generierung verwenden kann. Diese Bedingungsbilder können Gesichtsmerkmale, Kantenkonturen und Tiefenschätzungen sein, die das Modell als zusätzlichen Kontext und zusätzliche Informationen zum Generieren von Bildern verwendet.

Wenn Sie dem Foundation Model ein Plug-in-Modell hinzufügen, konfigurieren Sie auch die Plug-in-Optionen. Das Plug-in für Gesichtsmerkmale verwendet faceConditionOptions, das Plug-in für Canny-Kanten verwendet edgeConditionOptions und das Plug-in für Tiefe verwendet depthConditionOptions.

Optionen für Canny Edge

Konfigurieren Sie die folgenden Optionen in edgeConditionOptions.

Option Beschreibung Wertebereich Standardwert
threshold1 Erster Schwellenwert für das Hystereseverfahren. Float 100
threshold2 Zweiter Schwellenwert für das Hystereseverfahren. Float 200
apertureSize Blendenöffnung 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 Bildgradientenmagnitude 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 Edge Detector.

Optionen für Gesichts-Landmarks

Konfigurieren Sie die folgenden Optionen in faceConditionOptions.

Option Beschreibung Wertebereich Standardwert
minFaceDetectionConfidence Der Mindestkonfidenzwert, damit die Gesichtserkennung als erfolgreich gilt. Float [0.0,1.0] 0.5
minFacePresenceConfidence Der minimale Konfidenzwert für die Gesichtserkennung bei der Erkennung von Gesichts-Landmarks. Float [0.0,1.0] 0.5
faceModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Modell festlegt, mit dem das Bedingungsbild erstellt wird. 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 Face Landmarker-Aufgabe.

Tiefenoptionen

Konfigurieren Sie die folgenden Optionen in depthConditionOptions.

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

Modelle

Für den Bildgenerator ist ein Foundation Model erforderlich. Das ist ein Text-zu-Bild-KI-Modell, das Diffusionsverfahren verwendet, um neue Bilder zu generieren. Die in diesem Abschnitt aufgeführten Foundation Models sind ressourcenschonende Modelle, die für die Ausführung auf High-End-Smartphones optimiert sind.

Plugin-Modelle sind optional und ergänzen die Basismodelle. Nutzer können damit zusätzlich zum Text-Prompt ein weiteres Bedingungsbild für eine spezifischere Bildgenerierung bereitstellen. Durch die Anpassung der Foundation Models mit LoRA-Gewichten kann das Foundation Model ein bestimmtes Konzept wie ein Objekt, eine Person oder einen Stil lernen und in generierte Bilder einfügen.

Basismodelle

Die Basismodelle sind latente Text-zu-Bild-Diffusionsmodelle, die Bilder aus einem Text-Prompt generieren. Für den Image Generator muss das Foundation Model dem stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only-Modellformat entsprechen. Das folgende Modell wird verwendet:

Die folgenden Foundation Models sind ebenfalls mit dem Image Generator kompatibel:

Nachdem Sie ein Fundamentmodell heruntergeladen haben, verwenden Sie image_generator_converter, um das Modell in das entsprechende On-Device-Format für den Image Generator zu konvertieren.

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 Plugin-Modelle in diesem Abschnitt wurden von Google entwickelt und müssen in Kombination mit einem Basismodell verwendet werden. Mit Plugin-Modellen kann Image Generator neben einem Text-Prompt auch ein Bedingungsbild als Eingabe akzeptieren. So lässt sich die Struktur der generierten Bilder steuern. Die Plugin-Modelle bieten ähnliche Funktionen wie ControlNet, jedoch mit einer neuartigen Architektur speziell für die Geräte-Diffusion.

Die Plugin-Modelle müssen in den Basisoptionen angegeben werden. Möglicherweise müssen Sie zusätzliche Modelldateien herunterladen. Für jedes Plug-in gelten eigene Anforderungen an das Bedingungsbild, das vom Image Generator generiert werden kann.

Canny Edge-Plug-in

Beispielausgabe von zwei generierten Bildern, die ein bereitgestelltes Bedingungsbild mit einer starken Umrisslinie von Ziegeln und dem Prompt verwenden

Das Canny Edge-Plug-in akzeptiert ein Bedingungsbild, das die beabsichtigten Kanten des generierten Bildes umreißt. Das Fundierungsmodell verwendet die durch das Bedingungsbild implizierten Kanten und generiert ein neues Bild basierend auf dem Text-Prompt. Der Image Generator enthält integrierte Funktionen zum Erstellen von Bedingungsbildern. Sie müssen nur 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 Schwellenwert für das Hystereseverfahren. Float 100
threshold2 Zweiter Schwellenwert für das Hystereseverfahren. Float 200
apertureSize Blendenöffnung 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 Bildgradientenmagnitude 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 Edge Detector.

Face Landmark-Plug‑in

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

Das Face Landmark-Plug-in akzeptiert die Ausgabe des MediaPipe Face Landmarker als Bedingungsbild. Der Face Landmarker bietet ein detailliertes Gesichts-Mesh eines einzelnen Gesichts, das die Position und das Vorhandensein von Gesichtsmerkmalen abbildet. Das Fundierungsmodell verwendet die Gesichtszuordnung, die durch das Bedingungsbild impliziert wird, und generiert ein neues Gesicht über dem Mesh.

Plugin für Gesichtsmerkmale herunterladen

Für das Face Landmark-Plug-in ist auch das Modellpaket „Face Landmarker“ erforderlich, um das Bedingungsbild zu erstellen. Dieses Modell-Bundle ist dasselbe Bundle, das von der Aufgabe Face Landmarker verwendet wird.

Face Landmark-Modellbundle herunterladen

Das Plug-in „Gesichtsmerkmale“ enthält die folgenden Konfigurationsoptionen:

Option Beschreibung Wertebereich Standardwert
minFaceDetectionConfidence Der Mindestkonfidenzwert, damit die Gesichtserkennung als erfolgreich gilt. Float [0.0,1.0] 0.5
minFacePresenceConfidence Der minimale Konfidenzwert für die Gesichtserkennung bei der Erkennung von Gesichts-Landmarks. Float [0.0,1.0] 0.5
faceModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Modell festlegt, mit dem das Bedingungsbild erstellt wird. 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 Face Landmarker-Aufgabe.

Tiefen-Plug-in

Beispielausgabe von zwei generierten Bildern, die ein bereitgestelltes Bedingungsbild mit der allgemeinen Form eines Autos verwenden, 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 Bedingungsbild, um die Größe und Tiefe des zu generierenden Objekts abzuleiten, und generiert ein neues Bild basierend auf dem Text-Prompt.

Depth-Plug-in herunterladen

Für das Depth-Plug-in ist auch ein Modell zur Tiefenschätzung erforderlich, um das Bedingungsbild zu erstellen.

Modell zur Tiefenschätzung herunterladen

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

Option Beschreibung Wertebereich Standardwert
depthModelBaseOptions Das BaseOptions-Objekt, das den Pfad für das Modell festlegt, mit dem das Bedingungsbild erstellt wird. 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

Durch die Anpassung eines Modells mit LoRA kann der Image Generator 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 Text-Prompt angegeben wird.

Zum Erstellen von LoRA-Gewichten muss ein Fundierungsmodell mit Bildern eines bestimmten Objekts, einer bestimmten Person oder eines bestimmten Stils trainiert werden. So kann das Modell das neue Konzept erkennen und beim Generieren 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 eigenes Gesicht oder für Gesichter von Personen, die Ihnen die Erlaubnis dazu gegeben 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 Spiegel an einer Wand

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-Gewichtungen gelernt hat darzustellen. Außerdem hat es die Teekanne wie im Prompt gefordert neben einem Spiegel platziert.

LoRA mit Vertex AI

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