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 odniesienie do generowania. Więcej informacji o generowaniu obrazów na podstawie tekstu warunkowego znajdziesz w artykule Wtyczki dyfuzji na urządzeniu do generowania obrazów na podstawie tekstu warunkowego.
Generator obrazów może też generować obrazy na podstawie konkretnych koncepcji przekazanych do modelu 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 implementacji na platformie docelowej. Te przewodniki dotyczące konkretnych platform przeprowadzą Cię przez podstawową implementację tego zadania. Zawierają przykłady kodu, które używają modelu domyślnego i zalecanych opcji konfiguracji:
- Android – przykład kodu – przewodnik
- Dostosowywanie za pomocą LoRA – Przykład kodu – Colab
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 zaimplementować te funkcje:
- Zamiana tekstu na obraz – generowanie obrazów za pomocą prompta tekstowego.
- Generowanie obrazów na podstawie obrazów warunkowych – generowanie obrazów za pomocą prompta tekstowego i obrazu referencyjnego. Generator obrazów używa obrazów warunkowych w sposób podobny do ControlNet.
- Generowanie obrazów na podstawie wag LoRA – generowanie obrazów konkretnych osób, obiektów i stylów za pomocą prompta tekstowego i dostosowanych wag modelu.
| Dane wejściowe zadania | Dane wyjściowe zadania |
|---|---|
Generator obrazów akceptuje te dane wejściowe:
|
Generator obrazów zwraca te wyniki:
|
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 moduł obsługi błędów. | N/A |
Zadanie obsługuje też modele wtyczek, które umożliwiają użytkownikom dodawanie obrazów warunkowych do danych wejściowych zadania. Model podstawowy może je rozszerzyć i wykorzystać jako odniesienie do generowania. Obrazy warunkowe mogą zawierać punkty charakterystyczne 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 punktów charakterystycznych twarzy używa faceConditionOptions, wtyczka krawędzi Canny używa edgeConditionOptions, a wtyczka głębi używa depthConditionOptions.
Opcje krawędzi 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 apertury dla operatora Sobela. Typowy zakres to 3–7. | Integer |
3 |
l2Gradient |
Określa, czy do obliczania wielkości gradientu obrazu jest używana norma L2, zamiast domyślnej normy L1. | BOOLEAN |
False |
EdgePluginModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu wtyczki. |
Obiekt BaseOptions |
N/A |
Więcej informacji o tym, jak działają te opcje konfiguracji, znajdziesz w artykule Detektor krawędzi Canny.
Opcje punktów charakterystycznych twarzy
Skonfiguruj te opcje w faceConditionOptions.
| Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
|---|---|---|---|
minFaceDetectionConfidence |
Minimalny wynik ufności, aby wykrywanie twarzy zostało uznane za udane. | Float [0.0,1.0] |
0.5 |
minFacePresenceConfidence |
Minimalny wynik ufności obecności twarzy wynik w wykrywaniu punktów charakterystycznych twarzy. | Float [0.0,1.0] |
0.5 |
faceModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu tworzącego obraz warunkowy. |
Obiekt BaseOptions |
N/A |
FacePluginModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu wtyczki. |
Obiekt BaseOptions |
N/A |
Więcej informacji o tym, jak działają te opcje konfiguracji, znajdziesz w artykule 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ę
do modelu tworzącego obraz warunkowy. |
Obiekt BaseOptions |
N/A |
depthPluginModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu wtyczki. |
Obiekt BaseOptions |
N/A |
Modele
Generator obrazów wymaga modelu podstawowego, czyli modelu AI zamiany tekstu na obraz, który używa technik 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ą użytkownikom podawanie 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 konkretnej koncepcji, takiej jak obiekt, osoba lub styl, i wstawia ją do generowanych obrazów.
Modele podstawowe
Modele podstawowe to modele dyfuzji latentnej zamiany 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 opartym na tym modelu:
Z generatorem obrazów są też zgodne te modele podstawowe:
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 muszą być używane w połączeniu z modelem podstawowym. Modele wtyczek umożliwiają generatorowi obrazów przyjmowanie jako danych wejściowych obrazu warunkowego wraz z promptem tekstowym, co pozwala kontrolować strukturę generowanych obrazów. Modele wtyczek zapewniają możliwości podobne do ControlNet, ale mają nową architekturę przeznaczoną specjalnie do dyfuzji na urządzeniu.
Modele wtyczek muszą być określone w opcjach podstawowych i mogą wymagać pobrania dodatkowych plików modelu. Każda wtyczka ma unikalne wymagania dotyczące obrazu warunkowego, który może być generowany przez generator obrazów.
Wtyczka krawędzi Canny
Wtyczka krawędzi Canny akceptuje obraz warunkowy, który określa zamierzone krawędzie generowanego obrazu. Model podstawowy używa krawędzi wynikających z obrazu warunkowego i generuje nowy obraz na podstawie prompta tekstowego. Generator obrazów ma wbudowane funkcje tworzenia obrazów warunkowych i wymaga tylko pobrania modelu wtyczki.
Pobierz wtyczkę krawędzi Canny
Wtyczka krawędzi Canny 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 apertury dla operatora Sobela. Typowy zakres to 3–7. | Integer |
3 |
l2Gradient |
Określa, czy do obliczania wielkości gradientu obrazu jest używana norma L2, zamiast domyślnej normy L1. | BOOLEAN |
False |
EdgePluginModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu wtyczki. |
Obiekt BaseOptions |
N/A |
Więcej informacji o tym, jak działają te opcje konfiguracji, znajdziesz w artykule Detektor krawędzi Canny.
Wtyczka punktów charakterystycznych twarzy
Wtyczka punktów charakterystycznych twarzy akceptuje dane wyjściowe z narzędzia MediaPipe Face Landmarker jako obraz warunkowy. Narzędzie Face Landmarker udostępnia szczegółową siatkę twarzy, która odwzorowuje obecność i położenie cech twarzy. Model podstawowy używa odwzorowania twarzy wynikającego z obrazu warunkowego i generuje nową twarz na siatce.
Pobierz wtyczkę punktów charakterystycznych twarzy
Wtyczka punktów charakterystycznych twarzy wymaga też pakietu modelu Face Landmarker model bundle do utworzenia obrazu warunkowego. Ten pakiet modelu jest taki sam jak pakiet używany przez zadanie Face Landmarker.
Pobierz pakiet modelu punktów charakterystycznych twarzy
Wtyczka punktów charakterystycznych twarzy zawiera te opcje konfiguracji:
| Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
|---|---|---|---|
minFaceDetectionConfidence |
Minimalny wynik ufności, aby wykrywanie twarzy zostało uznane za udane. | Float [0.0,1.0] |
0.5 |
minFacePresenceConfidence |
Minimalny wynik ufności obecności twarzy wynik w wykrywaniu punktów charakterystycznych twarzy. | Float [0.0,1.0] |
0.5 |
faceModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu tworzącego obraz warunkowy. |
Obiekt BaseOptions |
N/A |
FacePluginModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu wtyczki. |
Obiekt BaseOptions |
N/A |
Więcej informacji o tym, jak działają te opcje konfiguracji, znajdziesz w artykule Zadanie Face Landmarker.
Wtyczka głębi
Wtyczka głębi akceptuje obraz warunkowy, który określa głębię obiektu w obrazie monokularowym. Model podstawowy używa obrazu warunkowego do określenia rozmiaru i głębi obiektu, który ma zostać wygenerowany, i generuje nowy obraz na podstawie prompta tekstowego.
Wtyczka głębi wymaga też modelu szacowania głębi do utworzenia obrazu warunkowego.
Pobierz model szacowania głębi
Wtyczka głębi zawiera te opcje konfiguracji:
| Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
|---|---|---|---|
depthModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu tworzącego obraz warunkowy. |
Obiekt BaseOptions |
N/A |
depthPluginModelBaseOptions |
Obiekt BaseOptions, który ustawia ścieżkę
do modelu wtyczki. |
Obiekt BaseOptions |
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 trenowaniu model może generować obrazy nowej koncepcji, gdy token jest określony w prompcie tekstowym.
Tworzenie wag LoRA wymaga trenowania modelu podstawowego na obrazach konkretnego obiektu, osoby lub stylu, co umożliwia modelowi rozpoznawanie nowej koncepcji i stosowanie jej podczas generowania obrazów. Jeśli tworzysz wagi LoRA do generowania obrazów konkretnych osób i twarzy, używaj tego rozwiązania tylko na swojej twarzy lub twarzach osób, które wyraziły na to zgodę.
Poniżej przedstawiamy dane wyjściowe z dostosowanego modelu wytrenowanego na obrazach dzbanków z zbioru danych DreamBooth przy użyciu tokena "monadikos teapot":
Prompt: a monadikos teapot beside a mirror
Dostosowany model otrzymał token w prompcie i wstawił dzbanek, który nauczył się przedstawiać na podstawie wag LoRA, i umieścił go na obrazie obok lustra zgodnie z prośbą w prompcie.
Więcej informacji znajdziesz w przewodniku dostosowywania, który używa Model Garden w Vertex AI do dostosowywania modelu przez stosowanie wag LoRA do modelu podstawowego.