Guida alla stilizzazione dei volti per Android

L'attività MediaPipe Face Stylizer ti consente di applicare stilizzazioni ai volti in 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 di MediaPipe Tasks è un'implementazione di base di un'app di stilizzazione del viso per Android. L'esempio applica la stilizzazione del volto alle immagini fornite all'app.

Puoi utilizzare l'app come punto di partenza per la tua app per Android o farvi riferimento quando modifichi un'app esistente. Il codice di esempio di Face Stylizer è ospitato su GitHub.

Scarica il codice

Le istruzioni riportate di seguito mostrano come creare una copia locale del codice di esempio utilizzando lo strumento a riga di comando git.

Per scaricare il codice di esempio:

  1. Clona il repository git utilizzando il seguente comando:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Se vuoi, configura l'istanza Git in modo da utilizzare il controllo sparse, in modo da avere solo i file per l'app di esempio Face Stylizer:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

Dopo aver creato una versione locale del codice di esempio, puoi importare il progetto in Android Studio ed eseguire l'app. Per istruzioni, consulta la Guida alla configurazione per Android.

Componenti chiave

I seguenti file contengono il codice fondamentale per questa applicazione di esempio di stilizzazione del viso:

Configurazione

Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e i progetti di codice specificamente per utilizzare Face Stylizer. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività MediaPipe, inclusi i requisiti della versione della piattaforma, consulta la guida alla configurazione per Android.

Dipendenze

L'attività Face Stylizer utilizza la libreria com.google.mediapipe:tasks-vision. Aggiungi questa dipendenza al file build.gradle della tua app per Android:

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

Modello

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

Seleziona e scarica il modello e memorizzalo nella directory del progetto:

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

Specifica il percorso del modello all'interno del parametro ModelAssetPath.

val modelName = "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task"
baseOptionsBuilder.setModelAssetPath(modelName)

Crea l'attività

L'attività MediaPipe Face Stylizer utilizza la funzione createFromOptions() per configurare l'attività. La funzione createFromOptions() accetta valori per le opzioni di configurazione. Per ulteriori informazioni sulle opzioni di configurazione, consulta Opzioni di configurazione.

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)

Opzioni di configurazione

Questa attività offre le seguenti opzioni di configurazione per le app per Android:

Nome opzione Descrizione Intervallo di valori Valore predefinito
errorListener Imposta un listener di errore facoltativo. N/A Not set

Preparazione dei dati

Face Stylizer funziona con le immagini fisse. L'attività gestisce la preelaborazione dell'input di dati, tra cui ridimensionamento, rotazione e normalizzazione dei valori. Il codice seguente mostra come trasferire i dati per l'elaborazione.

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

Esegui l'attività

Utilizza il metodo FaceStylizer.stylize() sull'immagine di input per eseguire lo stilizzatore:

val result = FaceStylizer.stylize(mpImage)

Gestire e visualizzare i risultati

La funzionalità Stilizzazione viso restituisce un oggetto FaceStylizerResult, che contiene un oggetto MPImage con una stilizzazione del volto più prominente all'interno dell'immagine di input.

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

Un primo piano generato di una donna disegnata con matita e pennarello.

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

Fotografia della donna di cui è stata utilizzata l&#39;immagine per generare l&#39;output precedente