Przewodnik po generowaniu obrazów

Zadanie Generatora obrazów MediaPipe umożliwia generowanie obrazów na podstawie promptu tekstowego. W tym zadaniu używany jest model „tekst na obraz” do generowania obrazów przy użyciu technik dyfuzji.

Zadanie akceptuje jako dane wejściowe prompt tekstowy oraz opcjonalny obraz warunku, który model może uzupełnić i wykorzystać jako punkt odniesienia przy generowaniu. Więcej informacji o uwarunkowanym generowaniu tekstu na obraz znajdziesz w artykule Wtyczki dyfuzyjne na urządzeniu służące do uwarunkowanego generowania tekstu na obraz.

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

Rozpocznij

Zacznij od wykonania tego zadania, postępując zgodnie z instrukcjami podanymi w jednym z przewodników po implementacji dla platformy docelowej. Te przewodniki dotyczące poszczególnych platform przeprowadzą Cię przez podstawową implementację tego zadania wraz z przykładami kodu, w których wykorzystuje się model domyślny, i zalecanymi opcjami konfiguracji:

Szczegóły działania

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

Funkcje

Możesz użyć generatora obrazów do zaimplementowania:

  1. Generowanie tekstu na obraz – generowanie obrazów za pomocą promptu tekstowego.
  2. Generowanie obrazów z obrazami warunku – generuj obrazy z promptem tekstowym i obrazem referencyjnym. Generator obrazów wykorzystuje obrazy warunków w sposób podobny do ControlNet.
  3. Generowanie obrazów za pomocą wag LoRA – generuj obrazy konkretnych osób, obiektów i stylów za pomocą promptu tekstowego z użyciem niestandardowych wag modelu.
Dane wejściowe zadań Wyniki działania
Generator obrazów akceptuje te dane wejściowe:
  • Prompt tekstowy
  • Materiał wyjściowy
  • Liczba iteracji generatywnej
  • Opcjonalnie: obraz stanu
Generator obrazów zwraca te wyniki:
  • Obraz został 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 modeli generatora obrazów, w którym są zapisane wagi modeli. PATH
loraWeightsFilePath Ustawia ścieżkę do pliku wag LoRA. Opcjonalny i ma zastosowanie tylko wtedy, gdy model został dostosowany za pomocą LoRA. PATH
errorListener Ustawia opcjonalny detektor błędów. N/A

To zadanie obsługuje też modele wtyczek, które pozwalają użytkownikom umieszczać w danych wejściowych dotyczących zadania obrazy warunków, które model podstawowy może uzupełniać i wykorzystywać jako odniesienia do generowania. Takimi obrazami mogą być punkty orientacyjne twarzy, kontury krawędzi i oszacowania głębi, których model używa jako dodatkowego kontekstu i informacji do generowania obrazów.

Podczas dodawania modelu wtyczki do modelu podstawowego skonfiguruj również opcje wtyczek. Wtyczka punktów orientacyjnych twarzy Face korzysta z faceConditionOptions, wtyczka Canny Edge – edgeConditionOptions, a wtyczka Depth – depthConditionOptions.

Opcje Canny Edge

Skonfiguruj te opcje w edgeConditionOptions.

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

Więcej informacji o działaniu tych opcji konfiguracji znajdziesz w artykule na temat detektorów brzegowych Canny’ego.

Opcje punktu orientacyjnego

Skonfiguruj te opcje w faceConditionOptions.

Nazwa opcji Opis Zakres wartości Wartość domyślna
minFaceDetectionConfidence Minimalny stopień pewności, że wykrywanie twarzy zostanie uznane za udane. Float [0.0,1.0] 0.5
minFacePresenceConfidence Minimalny wskaźnik ufności wykrywania obecności twarzy w przypadku wykrywania punktów orientacyjnych twarzy. Float [0.0,1.0] 0.5
faceModelBaseOptions Obiekt BaseOptions wyznaczający ścieżkę modelu tworzącego obraz warunku. BaseOptions obiekt N/A
FacePluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę modelu wtyczki. BaseOptions obiekt N/A

Więcej informacji o działaniu tych opcji konfiguracyjnych znajdziesz w artykule o zadaniu Oznaczenie twarzy.

Opcje głębokości

Skonfiguruj te opcje w depthConditionOptions.

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

Modele

Generator obrazów wymaga modelu podstawowego, czyli modelu AI opartego na tekście 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 zaawansowanych smartfonów.

Modele wtyczek są opcjonalne i uzupełniają modele podstawowe. Dzięki temu użytkownicy mogą dostarczać dodatkowe obrazy warunku wraz z promptem tekstowym, aby generować bardziej szczegółowe obrazy. Dostosowywanie modeli podstawowych za pomocą wag LoRA to opcja, która uczenie modelu podstawowego o konkretnym pojęciu, takim jak obiekt, osoba lub styl, i wstawianie ich w wygenerowanych obrazach.

Modele podstawowe

Modele podstawowe to utajone modele dyfuzji oparte na tekście na obrazie, które generują obrazy na podstawie promptu tekstowego. Generator obrazów wymaga, aby model podstawowy odpowiadał formatowi modelu runwayml/stable-diffusion-v1-5 EMA-only na podstawie tego modelu:

Te modele podstawowe są również zgodne z generatorem obrazów:

Po pobraniu modelu podstawowego użyj narzędzia image_generator_converter, aby przekonwertować model na odpowiedni format 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 należy ich używać w połączeniu z modelem podstawowym. Modele wtyczek umożliwiają generatorowi obrazów akceptowanie obrazu warunku wraz z wpisanym promptem tekstowym. Pozwala to kontrolować strukturę generowanych obrazów. Modele wtyczek mają możliwości podobne do funkcji ControlNet o nowatorskiej architekturze służącej do dyfuzji na urządzeniu.

Modele wtyczek muszą być określone w opcjach podstawowych i może być konieczne pobranie dodatkowych plików modelu. Każda wtyczka ma unikalne wymagania dotyczące obrazu stanu, które można wygenerować za pomocą generatora obrazów.

Wtyczka Canny Edge

Wtyczka Canny Edge akceptuje obraz warunku, który określa zamierzone krawędzie wygenerowanego obrazu. Model podstawowy wykorzystuje krawędzie określone przez obraz warunku i generuje nowy obraz na podstawie promptu tekstowego. Generator obrazów zawiera wbudowane funkcje tworzenia obrazów warunków i wymaga tylko 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 dla procedury histerezy. Float 100
threshold2 Drugi próg dla procedury histerezy. Float 200
apertureSize Rozmiar przysłony dla operatora Sobel. Typowy zakres wynosi od 3 do 7. Integer 3
l2Gradient Czy do obliczania wielkości gradientu obrazu używana jest norma L2 zamiast domyślnej normy L1. BOOLEAN False
EdgePluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę modelu wtyczki. BaseOptions obiekt N/A

Więcej informacji o działaniu tych opcji konfiguracji znajdziesz w artykule na temat detektorów brzegowych Canny’ego.

Wtyczka Face Pinpoint

Wtyczka Face Point jako obraz warunku akceptuje dane wyjściowe z Face Landmarker MediaPipe. Funkcja FaceLandmarker tworzy szczegółową siatkę twarzy pojedynczej twarzy, na której widać obecność i lokalizację tych cech. Model podstawowy korzysta z mapowania twarzy sugerowanego przez obraz warunku i generuje na siatce nową ścianę.

Pobierz wtyczkę Face Point

Aby utworzyć obraz warunku, wtyczka punktu orientacyjnego Face wymaga też pakietu modeli interfejsu Face Marker. Ten pakiet modelu jest taki sam jak pakiet używany przez zadanie Oznaczenie twarzy.

Pobierz pakiet modeli punktów orientacyjnych twarzy

Wtyczka Face Punkt orientacyjny zawiera te opcje konfiguracji:

Nazwa opcji Opis Zakres wartości Wartość domyślna
minFaceDetectionConfidence Minimalny stopień pewności, że wykrywanie twarzy zostanie uznane za udane. Float [0.0,1.0] 0.5
minFacePresenceConfidence Minimalny wskaźnik ufności wykrywania obecności twarzy w przypadku wykrywania punktów orientacyjnych twarzy. Float [0.0,1.0] 0.5
faceModelBaseOptions Obiekt BaseOptions wyznaczający ścieżkę modelu tworzącego obraz warunku. BaseOptions obiekt N/A
FacePluginModelBaseOptions Obiekt BaseOptions, który ustawia ścieżkę modelu wtyczki. BaseOptions obiekt N/A

Więcej informacji o działaniu tych opcji konfiguracyjnych znajdziesz w artykule o zadaniu Oznaczenie twarzy.

Wtyczka Depth

Wtyczka Depth akceptuje obraz warunku, który określa głębię monokularną obiektu. Model podstawowy korzysta z obrazu warunku do ustalenia rozmiaru i głębokości obiektu, który ma zostać wygenerowany, oraz generuje nowy obraz na podstawie promptu tekstowego.

Pobierz wtyczkę Depth

Wtyczka Depth wymaga też modelu szacowania głębokości do utworzenia obrazu warunku.

Pobierz model szacowania głębokości

Wtyczka Depth zawiera te opcje konfiguracji:

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

Dostosowywanie za pomocą LoRA

Dostosowywanie modelu za pomocą LoRA może umożliwić generatorowi obrazów generowanie obrazów na podstawie konkretnych koncepcji, które są identyfikowane przez unikalne tokeny podczas trenowania. Dzięki nowym wagom LoRA po wytrenowaniu model może generować obrazy nowej koncepcji, gdy token zostanie określony w prompcie tekstowym.

Tworzenie wag LoRA wymaga wytrenowania modelu podstawowego na obrazach konkretnych obiektów, osób lub stylów, co umożliwia modelowi rozpoznanie nowej koncepcji i zastosowanie jej podczas generowania obrazów. Jeśli tworzysz wagi LoRa w celu generowania obrazów konkretnych osób i twarzy, używaj tego rozwiązania tylko do twarzy lub twarzy osób, które wyraziły na to zgodę.

Poniżej znajdziesz dane wyjściowe z niestandardowego modelu wytrenowanego na obrazach imbryków ze zbioru danych DreamBooth przy użyciu tokena „monadikos teapot”:

Prompt: czajnik monadikos obok lustra

Dostosowany model otrzymał w prompcie token i wstrzyknął herbatę, którą nauczył się przedstawiać na podstawie wag LoRA, i umieszcza go obok lustra zgodnie z żądaniem w prompcie.

LoRA z Vertex AI

Więcej informacji znajdziesz w przewodniku po dostosowaniach, który korzysta z ogrodu modeli w Vertex AI, aby dostosować model przez zastosowanie wag LoRA do modelu podstawowego.