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:
- Android – przykładowy kod – Przewodnik
- Dostosuj za pomocą LoRA – przykładowy kod – Colab
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:
- Generowanie tekstu na obraz – generowanie obrazów za pomocą promptu tekstowego.
- 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.
- 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:
|
Generator obrazów zwraca te wyniki:
|
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.
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ę.
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.
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.
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.