Guida alla stilizzazione dei volti per Android

L'attività Stilizzazione del volto di MediaPipe consente di applicare stilizzazioni dei volti 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 su funzionalità, modelli e opzioni di configurazione di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio di MediaPipe Tasks è un'implementazione di base di uno stilizzatore di volti per Android. L'esempio applica la stilizzazione dei volti alle immagini fornite ai dell'app.

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

Scarica il codice

Le seguenti istruzioni mostrano come creare una copia locale dell'esempio utilizzando lo strumento a riga di comando git.

Per scaricare il codice di esempio:

  1. Clona il repository git utilizzando il comando seguente:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Facoltativamente, configura la tua istanza Git per l'utilizzo di un pagamento sparso, 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 questo esempio di stilizzazione dei volti applicazione:

Configurazione

Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e di codice per usare specificatamente Face Stylizer. Per informazioni generali su configurare l'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, tra cui: i requisiti di versione della piattaforma, consulta la Guida alla configurazione per Android.

Dipendenze

L'attività Stilizzazione del volto utilizza la raccolta com.google.mediapipe:tasks-vision. Aggiungi questa dipendenza dal file build.gradle della tua app per Android:

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

Modello

L'attività Stilizzazione del viso di MediaPipe richiede un bundle di modelli addestrato che siano compatibili con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per Face Stylizer, consulta la sezione Modelli della panoramica delle attività.

Seleziona e scarica il modello e archivialo 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à Stilizzatore del viso di MediaPipe utilizza la funzione createFromOptions() per configurare dell'attività. La funzione createFromOptions() accetta i valori per la configurazione le opzioni di CPU e memoria disponibili. Per ulteriori informazioni sulle opzioni di configurazione, vedi Configurazione opzioni.

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à include le seguenti opzioni di configurazione per le app per Android:

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

Preparazione dei dati

Lo Stilizzatore del viso funziona con le immagini fisse. L'attività gestisce l'input dei dati pre-elaborazione, tra cui il ridimensionamento, la rotazione e la normalizzazione dei valori. La il seguente codice 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à

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

val result = FaceStylizer.stylize(mpImage)

Gestire e visualizzare i risultati

Lo Stilizzatore dei volti restituisce un oggetto FaceStylizerResult, che contiene un MPImage oggetto con una stilizzazione della faccia più evidente all'interno dell'input dell'immagine.

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

L'output precedente è stato creato applicando lo schizzo a colori modello alla seguente immagine di input: