Przewodnik po stylizacji twarzy w Pythonie

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 stylizatora twarzy umożliwia pełną implementację tego zadania w Pythonie. Ten kod pomoże Ci przetestować to zadanie i zacząć tworzyć własny stylizator twarzy. Przykładowy kod stylizatora twarzy możesz wyświetlać, uruchamiać i edytować tylko w przeglądarce.

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 języka Python.

Pakiety

Zadanie MediaPipe Face Stylizer wymaga pakietu Mediapipe PyPI. Możesz zainstalować i zaimportować te zależności za pomocą:

$ python -m pip install mediapipe

Importowane dane

Aby uzyskać dostęp do funkcji zadań Stylizatora twarzy, zaimportuj te klasy:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

Model

Zadanie Stylizatora twarzy MediaPipe wymaga wytrenowanego modelu zgodnego z tym zadaniem. Więcej informacji o dostępnych wytrenowanych modelach dotyczących stylizatora twarzy znajdziesz w omówieniu zadań w sekcji poświęconej modelom.

Wybierz i pobierz model, a następnie zapisz go w katalogu lokalnym:

model_path = '/absolute/path/to/face_stylizer.task'

Użyj parametru model_asset_path obiektu BaseOptions, aby określić ścieżkę modelu, który ma być używany. Przykładowy kod znajdziesz w następnej sekcji.

Tworzenie zadania

Zadanie Stylizatora twarzy MediaPipe konfiguruje to zadanie za pomocą funkcji create_from_options. Funkcja create_from_options akceptuje wartości opcji konfiguracji.

Poniższy kod pokazuje, jak skompilować i skonfigurować to zadanie.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
Facestylizer = mp.tasks.vision.face_stylizer
FacestylizerOptions = mp.tasks.vision.FaceStylizerOptions

# Create a face stylizer instance with the image mode:
options = FacestylizerOptions(
    base_options=BaseOptions(model_asset_path=model_path),
with Facestylizer.create_from_options(options) as stylizer:
  # The stylizer is initialized. Use it here.
  # ...

Przygotuj dane

Przygotuj dane wejściowe jako plik graficzny lub tablicę numpy, a następnie przekonwertuj je na obiekt mediapipe.Image. Jeśli dane wejściowe to plik wideo lub transmisja na żywo z kamery internetowej, możesz użyć zewnętrznej biblioteki, takiej jak OpenCV, aby wczytać klatki wejściowe jako tablice numpy.

import mediapipe as mp

# Load the input image from an image file.
mp_image = mp.Image.create_from_file('/path/to/image')

# Load the input image from a numpy array.
mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)

Uruchamianie zadania

Stylizator twarzy używa funkcji stylize do aktywowania wnioskowania. W przypadku stylizacji twarzy wymaga to wstępnego przetwarzania danych wejściowych i określania stylu twarzy na obrazie.

Poniższy kod pokazuje, jak wykonać przetwarzanie za pomocą modelu zadań.

# Perform face stylization on the provided single image.
# The face stylizer must be created with the image mode.
face_stylizer_result = stylizer.stylize(mp_image)

Obsługa i wyświetlanie wyników

Stylizator twarzy zwraca obiekt Image ze stylizacją najbardziej widocznej twarzy na zdjęciu 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: