Zadanie Stylizatora twarzy MediaPipe umożliwia stosowanie stylów twarzy do twarzy na zdjęciu. Możesz tu tworzyć wirtualne awatary w różnych stylach.
Przykładowy kod opisany w tych instrukcjach jest dostępny na GitHub. Więcej informacji o możliwościach, modelach i opcjach konfiguracji tego zadania znajdziesz w sekcji Omówienie.
Przykładowy kod
Przykładowy kod MediaPipe Tasks to podstawowa implementacja aplikacji do stylizowania twarzy na Androida. W tym przykładzie styl twarzy jest stosowany do obrazów przesyłanych do aplikacji.
Możesz użyć aplikacji jako punktu wyjścia dla własnej aplikacji na Androida lub skorzystać z niej podczas modyfikowania istniejącej aplikacji. Przykładowy kod stylizatora twarzy jest hostowany na GitHub.
Pobieranie kodu
Z instrukcji poniżej dowiesz się, jak utworzyć lokalną kopię przykładowego kodu za pomocą narzędzia wiersza poleceń git.
Aby pobrać przykładowy kod:
- Sklonuj repozytorium git za pomocą tego polecenia:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Opcjonalnie skonfiguruj instancję git tak, aby używała rozproszonego procesu płatności, aby mieć tylko pliki z przykładowej aplikacji Stylizator twarzy:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/face_stylization/android
Po utworzeniu lokalnej wersji przykładowego kodu możesz zaimportować projekt do Android Studio i uruchomić aplikację. Instrukcje znajdziesz w przewodniku konfiguracji na Androida.
Kluczowe elementy
Te pliki zawierają kluczowy kod tej przykładowej aplikacji do stylizacji twarzy:
- FaceStylizationHelper.kt: inicjuje stylizator twarzy i obsługuje model oraz przekazywanie wyboru.
- MainActivity.kt: dostarcza wyniki i dane wyjściowe oraz obsługuje wszelkie błędy.
Konfiguracja
W tej sekcji znajdziesz najważniejsze czynności, jakie należy wykonać, aby skonfigurować środowisko programistyczne i projekty kodu na potrzeby korzystania z Stylizatora twarzy. Ogólne informacje o konfigurowaniu środowiska programistycznego na potrzeby zadań MediaPipe, w tym o wymaganiach dotyczących wersji platformy, znajdziesz w przewodniku konfiguracji na Androida.
Zależności
Zadanie Stylizatora twarzy korzysta z biblioteki com.google.mediapipe:tasks-vision
. Dodaj tę zależność do pliku build.gradle
aplikacji na Androida:
dependencies {
implementation 'com.google.mediapipe:tasks-vision:latest.release'
}
Model
Zadanie Stylizatora twarzy MediaPipe wymaga wytrenowanego pakietu modeli, który jest zgodny z tym zadaniem. Więcej informacji o dostępnych wytrenowanych modelach dotyczących stylizatora twarzy znajdziesz w sekcji poświęconej modelom na temat zadań.
Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:
<dev-project-root>/src/main/assets
Podaj ścieżkę modelu w parametrze ModelAssetPath
.
val modelName = "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task"
baseOptionsBuilder.setModelAssetPath(modelName)
Tworzenie zadania
Zadanie Stylizatora twarzy MediaPipe konfiguruje to zadanie za pomocą funkcji createFromOptions()
. Funkcja createFromOptions()
akceptuje wartości opcji konfiguracji. Więcej informacji o opcjach konfiguracji znajdziesz w artykule Opcje konfiguracji.
val baseOptionsBuilder = BaseOptions.builder().setModelAssetPath(modelName)
val baseOptions = baseOptionBuilder.build()
val optionsBuilder =
FaceStylizer.FaceStylizerOptions.builder()
.setBaseOptions(baseOptionsBuilder.build())
val options = optionsBuilder.build()
FaceStylizer =
FaceStylizer.createFromOptions(context, options)
Opcje konfiguracji
To zadanie ma te opcje konfiguracji aplikacji na Androida:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
errorListener |
Ustawia opcjonalny detektor błędów. | N/A |
Not set |
Przygotuj dane
Stylizacja twarzy działa ze zdjęciami. Zadaniem tego zadania jest wstępne przetwarzanie danych wejściowych, w tym zmiana rozmiaru, rotacja i normalizacja wartości. Poniższy kod pokazuje, jak przekazywać dane do przetwarzania.
import com.google.mediapipe.framework.image.BitmapImageBuilder
import com.google.mediapipe.framework.image.MPImage
// Convert the input Bitmap object to an MPImage object to run inference
val mpImage = BitmapImageBuilder(image).build()
Uruchamianie zadania
Użyj metody FaceStylizer.stylize()
na obrazie wejściowych, aby uruchomić stylizator:
val result = FaceStylizer.stylize(mpImage)
Obsługa i wyświetlanie wyników
Stylizator twarzy zwraca obiekt FaceStylizerResult
, który zawiera obiekt MPImage
ze stylizacją najbardziej widocznej twarzy na obrazie wejściowym.
Poniżej znajdziesz przykład danych wyjściowych z tego zadania:
Powyższe dane wyjściowe utworzono przez zastosowanie modelu Szkic kolorów do tego obrazu wejściowego: