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.

Die Aufgabe akzeptiert einen Text-Prompt als Eingabe sowie ein optionales 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 bedingte Text-zu-Bild Generierung.

Image Generator kann auch Bilder auf Grundlage bestimmter Konzepte generieren, die dem Modell während des Trainings oder des erneuten Trainings zur Verfügung gestellt werden. 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 wird eine grundlegende Implementierung dieser Aufgabe beschrieben. Sie enthalten Codebeispiele, in denen ein Standardmodell und die empfohlenen Konfigurationsoptionen verwendet werden:

Task details

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

Funktionen

Mit Image Generator können Sie Folgendes implementieren:

  1. Text-zu-Bild-Generierung : Bilder mit einem Text-Prompt generieren.
  2. Bildgenerierung mit Bedingungsbildern : Bilder mit einem Text Prompt und einem Referenzbild generieren. Image Generator verwendet Bedingungsbilder auf Weise ähnlich wie ControlNet.
  3. Bildgenerierung mit LoRA-Gewichten : Bilder von bestimmten Personen, Objekten und Stilen mit einem Text-Prompt und angepassten Modellgewichten generieren.
Aufgabeneingaben Aufgabenausgaben
Image Generator akzeptiert die folgenden Eingaben:
  • Text-Prompt
  • Seed
  • Anzahl der generativen Iterationen
  • Optional: Bedingungsbild
Image Generator gibt die folgenden Ergebnisse aus:
  • Auf Grundlage der Eingaben generiertes Bild.
  • Optional: Iterative Snapshots des generierten Bildes.

Konfigurationsoptionen

Diese Aufgabe hat die folgenden Konfigurationsoptionen:

Option Beschreibung Wertebereich
imageGeneratorModelDirectory Das Verzeichnis des Bildgeneratormodells, in dem die Modellgewichte gespeichert sind. PATH
loraWeightsFilePath Legt den Pfad zur LoRA-Gewichtsdatei fest. Optional und nur anwendbar, wenn das Modell mit LoRA angepasst wurde. PATH
errorListener Legt einen optionalen Fehlerlistener fest. N/A

Die Aufgabe unterstützt auch Plug-in-Modelle, mit denen Nutzer Bedingungsbilder in die Aufgabeneingabe einbeziehen können. Das Basismodell kann diese Bilder erweitern und als Referenz für die Generierung verwenden. Diese Bedingungsbilder können Gesichts-Landmarks, Kantenumrisse und Tiefenschätzungen sein, die das Modell als zusätzlichen Kontext und Informationen zum Generieren von Bildern verwendet.

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

Optionen für Canny-Kanten

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 zur Berechnung der Bildgradientenstärke anstelle der Standard-L1-Norm verwendet wird. 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-Kantendetektor.

Optionen für Gesichts-Landmarks

Konfigurieren Sie die folgenden Optionen in faceConditionOptions.

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

Optionen für die Tiefe

Konfigurieren Sie die folgenden Optionen in depthConditionOptions.

Option Beschreibung Wertebereich Standardwert
depthModelBaseOptions Das -Objekt, das den Pfad für das Modell festlegt, mit dem das Bedingungsbild erstellt wird.BaseOptions 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 Image Generator ist ein Basismodell erforderlich. Dabei handelt es sich um ein Text-zu-Bild-KI-Modell, das Diffusionstechniken verwendet, um neue Bilder zu generieren. Die in diesem Abschnitt aufgeführten Basismodelle sind ressourcenarme Modelle, die für die Ausführung auf High-End-Smartphones optimiert sind.

Plug-in-Modelle sind optional und ergänzen die Basismodelle. Sie ermöglichen es Nutzern, neben einem Text-Prompt ein zusätzliches Bedingungsbild für eine genauere Bildgenerierung bereitzustellen. Wenn Sie die Basismodelle mit LoRA-Gewichten anpassen, lernt das Basismodell ein bestimmtes Konzept wie ein Objekt, eine Person oder einen Stil und kann diese in generierte Bilder einfügen.

Basismodelle

Die Basismodelle sind latente Text-zu-Bild-Diffusionsmodelle, die Bilder aus einem Text-Prompt generieren. Für Image Generator muss das Basismodell dem Modellformat stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only entsprechen, das auf dem folgenden Modell basiert:

Die folgenden Basismodelle sind ebenfalls mit Image Generator kompatibel:

Nachdem Sie ein Basismodell heruntergeladen haben, verwenden Sie die 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 convert.py Skript 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 Image Generator neben einem Text-Prompt auch ein Bedingungsbild als Eingabe akzeptieren. So können Sie die Struktur der generierten Bilder steuern. Die Plug-in-Modelle bieten ähnliche Funktionen wie ControlNet, mit einer neuen Architektur speziell für die On-Device-Diffusion.

Die Plug-in-Modelle müssen in den Basisoptionen angegeben werden und erfordern möglicherweise, dass Sie zusätzliche Modelldateien herunterladen. Jedes Plug-in hat eigene Anforderungen an das Bedingungsbild, das von 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 Basismodell verwendet die durch das Bedingungsbild implizierten Kanten und generiert ein neues Bild auf Grundlage des Text-Prompts. 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 zur Berechnung der Bildgradientenstärke anstelle der Standard-L1-Norm verwendet wird. 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-Kantendetektor.

Plug-in für Gesichts-Landmarks

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 Plug-in für Gesichts-Landmarks akzeptiert die Ausgabe von MediaPipe Face Landmarker als Bedingungsbild. Face Landmarker bietet ein detailliertes Gesichtsnetz eines einzelnen Gesichts, das die Anwesenheit und Position von Gesichtsmerkmalen zuordnet. Das Basismodell verwendet die durch das Bedingungsbild implizierte Gesichtszuordnung und generiert ein neues Gesicht über dem Netz.

Plug-in für Gesichts-Landmarks herunterladen

Für das Plug-in für Gesichts-Landmarks ist auch das Modellbundle für Face Landmarker Modell Bundle erforderlich, um das Bedingungsbild zu erstellen. Dieses Modellbundle ist dasselbe Bundle, das von der Face Landmarker-Aufgabe verwendet wird.

Modellbundle für Gesichts-Landmarks herunterladen

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

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

Plug-in für die Tiefe

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 Plug-in für die Tiefe akzeptiert ein Bedingungsbild, das die monokulare Tiefe eines Objekts angibt. Das Basismodell verwendet das Bedingungsbild, um die Größe und Tiefe des zu generierenden Objekts abzuleiten, und generiert ein neues Bild auf Grundlage des Text-Prompts.

Plug-in für die Tiefe herunterladen

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

Modell zur Tiefenschätzung herunterladen

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

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

Anpassungen mithilfe von LoRA

Wenn Sie ein Modell mit LoRA anpassen, kann Image Generator Bilder auf Grundlage bestimmter Konzepte 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 Basismodell 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 Gesicht oder die Gesichter von Personen, die Ihnen die Erlaubnis dazu gegeben haben.

Im Folgenden sehen Sie die Ausgabe eines angepassten 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-Gewichte gelernt hat. Außerdem wurde die Teekanne wie im Prompt angefordert neben einem Spiegel platziert.

LoRA mit Vertex AI

Weitere Informationen finden Sie in der Anpassungs anleitung, in der Model Garden in Vertex AI verwendet wird, um ein Modell anzupassen, indem LoRA-Gewichte auf ein Basismodell angewendet werden.