Przewodnik po generowaniu obrazów

Zadanie generatora obrazów

Zadanie MediaPipe Image Generator umożliwia generowanie obrazów na podstawie prompta tekstowego. To zadanie wykorzystuje model zamiany tekstu na obraz do generowania obrazów za pomocą technik dyfuzji.

Zadanie przyjmuje jako dane wejściowe prompt tekstowy oraz opcjonalny obraz warunkowy, który model może rozszerzyć i wykorzystać jako punkt odniesienia do generowania. Więcej informacji o generowaniu obrazów na podstawie tekstu z warunkami znajdziesz w artykule Wtyczki dyfuzji na urządzeniu do generowania obrazów na podstawie tekstu z warunkami.

Generator obrazów może też generować obrazy na podstawie konkretnych koncepcji dostarczonych modelowi podczas trenowania lub ponownego trenowania. Więcej informacji znajdziesz w artykule Dostosowywanie za pomocą LoRA.

Rozpocznij

Aby zacząć korzystać z tego zadania, postępuj zgodnie z jednym z tych przewodników po implementacji na platformie docelowej. Te przewodniki dotyczące poszczególnych platform zawierają podstawową implementację tego zadania wraz z przykładami kodu, które korzystają z domyślnego modelu i zalecanych opcji konfiguracji:

Szczegóły działania

W tej sekcji opisujemy możliwości, dane wejściowe, dane wyjściowe i opcje konfiguracji tego zadania.

Funkcje

Za pomocą generatora obrazów możesz:

  1. Generowanie obrazów na podstawie tekstu – generowanie obrazów na podstawie promptu tekstowego.
  2. Generowanie obrazów na podstawie obrazów warunkowych – generowanie obrazów na podstawie promptu tekstowego i obrazu referencyjnego. Generator obrazów wykorzystuje obrazy warunkowe w sposób podobny do ControlNet.
  3. Generowanie obrazów z wagami LoRA – generowanie obrazów konkretnych osób, obiektów i stylów za pomocą promptu tekstowego z użyciem dostosowanych wag modelu.
Dane wejściowe zadania Dane wyjściowe działania
Generator obrazów akceptuje te dane wejściowe:
  • Prompt tekstowy
  • Ziarno
  • Liczba iteracji generatywnych
  • Opcjonalnie: obraz warunku
Generator obrazów zwraca te wyniki:
  • Obraz wygenerowany na podstawie danych wejściowych.
  • Opcjonalnie: iteracyjne zrzuty wygenerowanego obrazu.

Opcje konfiguracji

To zadanie ma te opcje konfiguracji:

Nazwa opcji Opis Zakres wartości
imageGeneratorModelDirectory Katalog modelu generatora obrazów, w którym są przechowywane wagi modelu. PATH
loraWeightsFilePath Ustawia ścieżkę do pliku wag LoRA. Opcjonalne i ma zastosowanie tylko wtedy, gdy model został dostosowany za pomocą LoRA. PATH
errorListener Ustawia opcjonalny odbiornik błędów. N/A

Zadanie obsługuje też modele wtyczek, które umożliwiają użytkownikom dodawanie do danych wejściowych obrazów warunkowych, które model podstawowy może rozszerzać i wykorzystywać jako odniesienie do generowania. Obrazy warunków mogą zawierać punkty orientacyjne twarzy, kontury krawędzi i szacunki głębi, które model wykorzystuje jako dodatkowy kontekst i informacje do generowania obrazów.

Gdy dodajesz model wtyczki do modelu podstawowego, skonfiguruj też opcje wtyczki. Wtyczka Face landmark używa faceConditionOptions, wtyczka Canny edge używa edgeConditionOptions, a wtyczka Depth używa depthConditionOptions.

Opcje wykrywania krawędzi metodą Canny

Skonfiguruj te opcje w edgeConditionOptions.

Nazwa opcji Opis Zakres wartości Wartość domyślna
threshold1 Pierwszy próg procedury histerezy. Float 100
threshold2 Drugi próg procedury histerezy. Float 200
apertureSize Rozmiar przysłony operatora Sobela. Typowy zakres to 3–7. Integer 3
l2Gradient Określa, czy do obliczania wielkości gradientu obrazu ma być używana norma L2 zamiast domyślnej normy L1. BOOLEAN False
EdgePluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę do modelu wtyczki. BaseOptions obiekt N/A

Więcej informacji o działaniu tych opcji konfiguracji znajdziesz w artykule Detektor krawędzi Canny’ego.

Opcje punktów charakterystycznych twarzy

Skonfiguruj te opcje w faceConditionOptions.

Nazwa opcji Opis Zakres wartości Wartość domyślna
minFaceDetectionConfidence Minimalny poziom ufności, przy którym wykrywanie twarzy jest uznawane za udane. Float [0.0,1.0] 0.5
minFacePresenceConfidence Minimalny poziom ufności wykrycia twarzy w wykrywaniu punktów charakterystycznych twarzy. Float [0.0,1.0] 0.5
faceModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę dla modelu tworzącego obraz warunkowy. BaseOptions obiekt N/A
FacePluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę do modelu wtyczki. BaseOptions obiekt N/A

Więcej informacji o działaniu tych opcji konfiguracji znajdziesz w sekcji Zadanie Face Landmarker.

Opcje głębi

Skonfiguruj te opcje w depthConditionOptions.

Nazwa opcji Opis Zakres wartości Wartość domyślna
depthModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę dla modelu tworzącego obraz warunkowy. BaseOptions obiekt N/A
depthPluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę do modelu wtyczki. BaseOptions obiekt N/A

Modele

Generator obrazów wymaga modelu podstawowego, czyli modelu AI typu tekst na obraz, który wykorzystuje techniki dyfuzji do generowania nowych obrazów. Modele podstawowe wymienione w tej sekcji to lekkie modele zoptymalizowane pod kątem działania na zaawansowanych smartfonach.

Modele wtyczek są opcjonalne i uzupełniają modele podstawowe, umożliwiając użytkownikom podanie dodatkowego obrazu warunkowego wraz z promptem tekstowym, co pozwala na bardziej precyzyjne generowanie obrazów. Dostosowywanie modeli podstawowych za pomocą wag LoRA to opcja, która uczy model podstawowy konkretnego pojęcia, takiego jak obiekt, osoba lub styl, i wstawia je do generowanych obrazów.

Modele podstawowe

Modele podstawowe to ukryte modele dyfuzji tekstu na obraz, które generują obrazy na podstawie prompta tekstowego. Generator obrazów wymaga, aby model podstawowy był zgodny z formatem modelu stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only na podstawie tego modelu:

Generator obrazów jest też zgodny z tymi modelami podstawowymi:

Po pobraniu modelu podstawowego użyj narzędzia image_generator_converter, aby przekonwertować model do odpowiedniego formatu na urządzeniu dla generatora obrazów.

Zainstaluj niezbędne zależności:

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

Uruchom skrypt convert.py:

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

Modele wtyczek

Modele wtyczek w tej sekcji zostały opracowane przez Google i muszą być używane w połączeniu z modelem podstawowym. Modele wtyczek umożliwiają generatorowi obrazów akceptowanie obrazu warunkowego wraz z promptem tekstowym jako danych wejściowych, co pozwala kontrolować strukturę generowanych obrazów. Modele wtyczek zapewniają możliwości podobne do ControlNet, ale mają nową architekturę zaprojektowaną specjalnie z myślą o dyfuzji na urządzeniu.

Modele wtyczek muszą być określone w opcjach podstawowych i mogą wymagać pobrania dodatkowych plików modeli. Każda wtyczka ma unikalne wymagania dotyczące obrazu warunkowego, który może wygenerować generator obrazów.

Wtyczka Canny Edge

Przykładowe wyjście dwóch wygenerowanych obrazów, które wykorzystują podany obraz warunkowy z wyraźnym zarysem cegieł i promptem

Wtyczka Canny Edge akceptuje obraz warunkowy, który przedstawia zamierzone krawędzie wygenerowanego obrazu. Model podstawowy wykorzystuje krawędzie wynikające z obrazu warunkowego i generuje nowy obraz na podstawie promptu tekstowego. Generator obrazów ma wbudowane funkcje tworzenia obrazów warunków i wymaga jedynie pobrania modelu wtyczki.

Pobierz wtyczkę Canny Edge

Wtyczka Canny Edge zawiera te opcje konfiguracji:

Nazwa opcji Opis Zakres wartości Wartość domyślna
threshold1 Pierwszy próg procedury histerezy. Float 100
threshold2 Drugi próg procedury histerezy. Float 200
apertureSize Rozmiar przysłony operatora Sobela. Typowy zakres to 3–7. Integer 3
l2Gradient Określa, czy do obliczania wielkości gradientu obrazu ma być używana norma L2 zamiast domyślnej normy L1. BOOLEAN False
EdgePluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę do modelu wtyczki. BaseOptions obiekt N/A

Więcej informacji o działaniu tych opcji konfiguracji znajdziesz w artykule Detektor krawędzi Canny’ego.

Wtyczka Face Landmark

Przykładowe wygenerowane obrazy, które wykorzystują podany obraz warunkowy przedstawiający narysowaną twarz i 2 różne prompty, aby pokazać, że ten sam obraz warunkowy może być użyty do wygenerowania bardzo różnych obrazów

Wtyczka Face Landmark akceptuje dane wyjściowe z Face Landmarker MediaPipe jako obraz warunkowy. Model Face Landmarker zapewnia szczegółową siatkę pojedynczej twarzy, która określa obecność i lokalizację elementów twarzy. Model podstawowy wykorzystuje mapowanie twarzy wynikające z obrazu warunkowego i generuje nową twarz na siatce.

Pobierz wtyczkę Face landmark

Wtyczka Face landmark wymaga też pakietu modelu Face Landmarker, aby utworzyć obraz warunkowy. Ten pakiet modeli jest taki sam jak pakiet używany przez zadanie Face Landmarker.

Pobierz pakiet modelu punktów charakterystycznych twarzy

Wtyczka Face Landmark zawiera te opcje konfiguracji:

Nazwa opcji Opis Zakres wartości Wartość domyślna
minFaceDetectionConfidence Minimalny poziom ufności, przy którym wykrywanie twarzy jest uznawane za udane. Float [0.0,1.0] 0.5
minFacePresenceConfidence Minimalny poziom ufności wykrycia twarzy w wykrywaniu punktów charakterystycznych twarzy. Float [0.0,1.0] 0.5
faceModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę dla modelu tworzącego obraz warunkowy. BaseOptions obiekt N/A
FacePluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę do modelu wtyczki. BaseOptions obiekt N/A

Więcej informacji o działaniu tych opcji konfiguracji znajdziesz w sekcji Zadanie Face Landmarker.

Wtyczka głębi

Przykładowe dane wyjściowe dwóch wygenerowanych obrazów, które wykorzystują podany obraz warunkowy przedstawiający ogólny kształt samochodu, aby pokazać, że wtyczka Depth może tworzyć obrazy, które dodają głębi do płaskiego obrazu

Wtyczka Depth akceptuje obraz warunkowy, który określa głębię monokularową obiektu. Model podstawowy wykorzystuje obraz warunkowy do określenia rozmiaru i głębokości obiektu, który ma zostać wygenerowany, a następnie tworzy nowy obraz na podstawie promptu tekstowego.

Pobierz wtyczkę Depth

Wtyczka Depth wymaga też modelu szacowania głębi do utworzenia obrazu warunkowego.

Pobierz model szacowania głębi

Wtyczka Głębokość zawiera te opcje konfiguracji:

Nazwa opcji Opis Zakres wartości Wartość domyślna
depthModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę dla modelu tworzącego obraz warunkowy. BaseOptions obiekt N/A
depthPluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę do modelu wtyczki. BaseOptions obiekt N/A

Dostosowywanie za pomocą LoRA

Dostosowanie modelu za pomocą LoRA może umożliwić generatorowi obrazów tworzenie obrazów na podstawie określonych koncepcji, które są identyfikowane przez unikalne tokeny podczas trenowania. Po wytrenowaniu modelu z użyciem nowych wag LoRA jest on w stanie generować obrazy przedstawiające nową koncepcję, gdy w prompcie tekstowym zostanie podany token.

Tworzenie wag LoRA wymaga wytrenowania modelu podstawowego na obrazach konkretnego obiektu, osoby lub stylu, co umożliwia modelowi rozpoznawanie nowego pojęcia i stosowanie go podczas generowania obrazów. Jeśli tworzysz wagi LoRa, aby generować obrazy konkretnych osób i twarzy, używaj tego rozwiązania tylko w przypadku swojej twarzy lub twarzy osób, które wyraziły na to zgodę.

Poniżej znajdziesz dane wyjściowe dostosowanego modelu wytrenowanego na obrazach czajnikówzbioru danych DreamBooth z użyciem tokena „monadikos teapot”:

Wygenerowane realistyczne zdjęcie czajnika stojącego na stole obok lustra zamontowanego na ścianie

Prompt: monadikos teapot beside a mirror

Dostosowany model otrzymał token w prompcie i wstawił czajnik, który nauczył się przedstawiać na podstawie wag LoRA, a następnie umieścił go na obrazie obok lustra zgodnie z prompterem.

LoRA w Vertex AI

Więcej informacji znajdziesz w przewodniku po dostosowywaniu, w którym opisujemy, jak za pomocą bazy modeli w Vertex AI dostosować model, stosując wagi LoRA do modelu podstawowego.