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:
- Android – Przykładowy kod – 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:
- Generowanie obrazów na podstawie tekstu – generowanie obrazów na podstawie promptu tekstowego.
- 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.
- 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:
|
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 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
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.
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
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.
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
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.
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ów z zbioru danych DreamBooth z użyciem tokena „monadikos teapot”:
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.
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.