Przewodnik po stylizacji twarzy w aplikacjach internetowych

Zadanie MediaPipe Face Stylizer umożliwia stylizowanie twarzy na obrazie. Za pomocą tego zadania możesz tworzyć wirtualnych awatarów 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 związanych z tym zadaniem znajdziesz w sekcji Omówienie.

Przykładowy kod

Przykładowy kod usługi Face Stylizer zawiera kompletną implementację tego zadania w języku JavaScript. Ten kod pomoże Ci przetestować to zadanie i rozpocząć tworzenie własnej aplikacji do stylizacji twarzy. Możesz wyświetlać, uruchamiać i edytować przykładowy kod Face Stylizer za pomocą przeglądarki.

Konfiguracja

W tej sekcji opisaliśmy kluczowe kroki konfigurowania środowiska programistycznego, które są niezbędne do korzystania z Face Stylizera. Informacje ogólne o konfigurowaniu środowiska programowania stron internetowych i JavaScriptu, w tym wymagania dotyczące wersji platformy, znajdziesz w przewodniku po konfiguracji dla stron internetowych.

Pakiety JavaScript

Kod Face Stylizer jest dostępny w pakiecie @mediapipe/tasks-vision NPM MediaPipe. Te biblioteki możesz znaleźć i pobrać, wykonując instrukcje podane w przewodniku po konfiguracji platformy.

Wymagane pakiety możesz zainstalować za pomocą NPM, używając tego polecenia:

npm install @mediapipe/tasks-vision

Jeśli chcesz zaimportować kod zadania za pomocą usługi sieci dystrybucji treści (CDN), dodaj ten kod w tagu <head> w pliku HTML:

<!-- You can replace JSDeliver with another CDN if you prefer -->
<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.js"
    crossorigin="anonymous"></script>
</head>

Model

Zadanie MediaPipe Face Stylizer wymaga wytrenowanego modelu, który jest zgodny z tym zadaniem. Więcej informacji o dostępnych wytrenowanych modelach usługi Face Stylizer znajdziesz w sekcji Modele w omówieniu zadania.

Wybierz i pobierz model, a potem zapisz go w katalogu projektu:

<dev-project-root>/app/shared/models/

Tworzenie zadania

Użyj jednej z funkcji Face Stylizera createFrom...(), aby przygotować zadanie do wykonywania wnioskowań. Użyj funkcji createFromModelPath() z względną lub bezwzględną ścieżką do wytrenowanego pliku modelu. Jeśli model został już załadowany do pamięci, możesz użyć metody createFromModelBuffer().

Przykładowy kod poniżej pokazuje użycie funkcji createFromOptions() do konfigurowania zadania. Funkcja createFromOptions umożliwia dostosowywanie Face Stylizera za pomocą opcji konfiguracji.

Poniższy kod pokazuje, jak utworzyć i skonfigurować zadanie za pomocą opcji niestandardowych:

const vision = await FilesetResolver.forVisionTasks(
  // path/to/wasm/root
  "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
const facestylizer = await FaceStylizer.createFromOptions(
    vision,
    {
      baseOptions: {
        modelAssetPath: "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task"
      },
    });

Przygotuj dane

Narzędzie Face Stylizer może stylizować twarze na obrazach w dowolnym formacie obsługiwanym przez przeglądarkę hosta. Zadanie to obejmuje też wstępną obróbkę danych wejściowych, w tym zmianę rozmiaru, obrót i normalizację wartości.

Uruchamianie zadania

Stylizator twarzy używa metody stylize() do wywoływania wniosków. Zadanie przetwarza dane, próbuje stylizować twarze, a potem przekazuje wyniki. Wywołania metody Face Stylizera stylize() są wykonywane synchronicznie i blokują wątek interfejsu użytkownika.

Poniższy kod pokazuje, jak wykonać przetwarzanie za pomocą modelu zadania:

const image = document.getElementById("image") as HTMLImageElement;
const faceStylizerResult = faceStylizer.stylize(image);

Obsługa i wyświetlanie wyników

Stylizator twarzy zwraca obiekt MPImage ze stylizacją najbardziej wyróżniającej się twarzy na obrazie wejściowym.

Poniżej znajdziesz przykład danych wyjściowych z tego zadania:

Wygenerowany zbliżenie na kobietę narysowaną ołówkiem i markerem.

Wynik powyżej został utworzony przez zastosowanie modelu Rysunek kolorem do tego obrazu wejściowego:

Zdjęcie kobiety, której obraz został użyty do wygenerowania poprzedniego wyniku