Guida alla stilizzazione dei volti per Python

L'attività Stilizzazione facciale di MediaPipe consente di applicare stilizzazioni dei volti ai volti di un'immagine. Puoi utilizzare questa attività per creare avatar virtuali in vari stili.

L'esempio di codice descritto in queste istruzioni è disponibile su GitHub. Per ulteriori informazioni sulle funzionalità, sui modelli e sulle opzioni di configurazione di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio per Face Stylizer fornisce un'implementazione completa di questa attività in Python come riferimento. Questo codice ti consente di testare l'attività e iniziare a creare il tuo stilista per il viso. Puoi visualizzare, eseguire e modificare il codice di esempio per lo stilizzatore per il viso usando solo il browser web.

Configurazione

In questa sezione vengono descritti i passaggi fondamentali per configurare l'ambiente di sviluppo e codificare i progetti in modo specifico per l'utilizzo di Face Stylizer. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività MediaPipe, inclusi i requisiti di versione della piattaforma, consulta la Guida alla configurazione per Python.

Pacchetti

L'attività MediaPipe Face Stylizer richiede il pacchetto PyPI di MediaPipe. Puoi installare e importare queste dipendenze con quanto segue:

$ python -m pip install mediapipe

Importazioni

Importa le seguenti classi per accedere alle funzioni dell'attività Stilista facciale:

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

Modello

L'attività MediaPipe Face Stylizer richiede un modello addestrato compatibile con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per lo stilista del viso, consulta la sezione Modelli della panoramica dell'attività.

Seleziona e scarica il modello, quindi memorizzalo in una directory locale:

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

Utilizza il parametro model_asset_path dell'oggetto BaseOptions per specificare il percorso del modello da utilizzare. Per un esempio di codice, consulta la sezione successiva.

Creare l'attività

L'attività MediaPipe Face Stylizer utilizza la funzione create_from_options per configurarla. La funzione create_from_options accetta i valori per le opzioni di configurazione da gestire.

Il codice seguente mostra come creare e configurare questa attività.

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.
  # ...

Preparazione dei dati

Prepara l'input come file immagine o array numpy, quindi convertilo in un oggetto mediapipe.Image. Se il tuo input è un file video o un live streaming da una webcam, puoi utilizzare una libreria esterna come OpenCV per caricare i frame di input come array 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)

Esegui l'attività

Lo stilista per il viso utilizza la funzione stylize per attivare le inferenze. Per la stilizzazione dei volti, ciò comporta la pre-elaborazione dei dati di input e la stilizzazione dei volti nell'immagine.

Il seguente codice mostra come eseguire l'elaborazione con il modello di attività.

# 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)

Gestire e visualizzare i risultati

Lo stilo per il viso restituisce un oggetto Image con una stilizzazione del volto più in evidenza all'interno dell'immagine di input.

Di seguito è riportato un esempio dei dati di output di questa attività:

L'output riportato sopra è stato creato applicando il modello Schizzo a colori alla seguente immagine di input: