Przewodnik po stylizacji twarzy na Androidzie

Zadanie MediaPipe Stylizer pozwala stosować style twarzy do twarzy na zdjęciu. Możesz używać tego zadania do tworzenia wirtualnych awatarów w różnych stylach.

Przykładowy kod opisany w tych instrukcjach jest dostępny na GitHub Więcej informacji o funkcjach, modelach i opcjach konfiguracji zapoznaj się z Przeglądem.

Przykładowy kod

Przykładowy kod MediaPipe Tasks to podstawowa implementacja stylizatora twarzy na Androida. W przykładzie zastosowano stylizację twarzy do obrazów przesłanych do funkcji .

Możesz użyć tej aplikacji jako punktu wyjścia dla własnej aplikacji na Androida lub odnieść się do niej podczas modyfikowania istniejącej aplikacji. Przykładowy kod Stylizatora twarzy jest hostowany na GitHub

Pobieranie kodu

Poniżej znajdziesz instrukcje tworzenia lokalnej kopii przykładu. za pomocą narzędzia wiersza poleceń git.

Aby pobrać przykładowy kod:

  1. Sklonuj repozytorium git za pomocą tego polecenia:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Opcjonalnie możesz skonfigurować instancję git tak, aby wykorzystywała rozproszony proces płatności, aby Tylko pliki 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 w Android Studio i uruchom aplikację. Odpowiednie instrukcje znajdziesz w Przewodniku po konfiguracji na urządzeniu z Androidem.

Kluczowe elementy

Poniższe pliki zawierają kluczowy kod dotyczący tego przykładu stylizacji twarzy aplikacja:

  • FaceStylizationHelper.kt: Inicjuje stylizację twarzy i obsługuje model oraz umożliwia wybór użytkownika.
  • MainActivity.kt: Podaje wyniki i dane wyjściowe oraz obsługuje wszystkie błędy.

Konfiguracja

W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz projekty kodu, w których będą używane Stylizatory twarzy. Ogólne informacje na temat: skonfigurować środowisko programistyczne do korzystania z zadań MediaPipe, w tym wymagań wersji platformy znajdziesz w przewodniku konfiguracji dla na urządzeniu z Androidem.

Zależności

Zadanie Stylizatora twarzy korzysta z biblioteki com.google.mediapipe:tasks-vision. Dodaj tę zależność od pliku build.gradle aplikacji na Androida:

dependencies {
    implementation 'com.google.mediapipe:tasks-vision:latest.release'
}

Model

Zadanie MediaPipe Face Stylizer wymaga wytrenowanego pakietu modeli zgodnego z w tym zadaniu. Więcej informacji o dostępnych wytrenowanych modelach dotyczących Stylizowania twarzy znajdziesz zapoznaj się z omówieniem zadania sekcją Modele.

Wybierz i pobierz model oraz zapisz go w katalogu projektu:

<dev-project-root>/src/main/assets

Określ ś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 MediaPipe Face Stylizer używa funkcji createFromOptions() do skonfigurowania zadanie. Funkcja createFromOptions() akceptuje wartości konfiguracji . Więcej informacji o opcjach konfiguracji znajdziesz w sekcji Konfiguracja .

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 zawiera 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 z nieruchomymi obrazami. Zadanie obsługuje wprowadzanie danych w tym m.in. zmianę rozmiaru, obrót i normalizację wartości. ten kod pokazuje, jak przekazywać dane do przetworzenia.

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

Aby uruchomić stylizator, użyj metody FaceStylizer.stylize() na obrazie wejściowym:

val result = FaceStylizer.stylize(mpImage)

Obsługa i wyświetlanie wyników

Styl twarzy zwraca obiekt FaceStylizerResult, który zawiera Obiekt MPImage ze stylizacją najbardziej widocznej twarzy w danych wejściowych .

Poniżej znajdziesz przykładowe dane wyjściowe tego zadania:

Powyższy wynik został utworzony przez zastosowanie szkicu kolorów. do następującego obrazu wejściowego: