Android 的臉部風格化指南

您可以使用 MediaPipe 臉部樣式化工作,將臉部樣式化效果套用至圖片中的臉部。您可以使用這個工作,以各種風格建立虛擬人物。

您可以在 GitHub 上找到這些操作說明中所述的程式碼範例。如要進一步瞭解這項工作的功能、模型和設定選項,請參閱總覽

程式碼範例

MediaPipe Tasks 範例程式碼是 Android 版 Face Stylizer 應用程式的基本實作項目。這個範例會將臉部樣式套用至應用程式提供的圖片。

您可以使用這個應用程式做為自有 Android 應用程式的起點,也可以在修改現有應用程式時參考這個應用程式。Face Stylizer 範例程式碼託管於 GitHub 上。

下載程式碼

以下操作說明說明如何使用 git 指令列工具,建立範例程式碼的本機副本。

下載程式碼範例:

  1. 使用下列指令複製 Git 存放區:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. 您可以選擇將 Git 例項設定為使用稀疏檢查,這樣您就只會取得 Face Stylizer 範例應用程式的檔案:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

建立本機版本的範例程式碼後,您可以將專案匯入 Android Studio 並執行應用程式。如需操作說明,請參閱 Android 設定指南

重要元件

以下檔案包含此臉部風格化範例應用程式的重要程式碼:

設定

本節將說明設定開發環境和程式碼專案的關鍵步驟,以便使用 Face Stylizer。如要進一步瞭解如何設定開發環境以使用 MediaPipe 工作,包括平台版本需求,請參閱 Android 設定指南

依附元件

臉部特效處理器工作會使用 com.google.mediapipe:tasks-vision 程式庫。請將這個依附元件新增至 Android 應用程式的 build.gradle 檔案:

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

型號

MediaPipe Face Stylizer 工作需要與此工作相容的已訓練模型套件。如要進一步瞭解 Face Stylizer 可用的訓練模型,請參閱任務總覽的「模型」一節。

選取並下載模型,並儲存在專案目錄中:

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

ModelAssetPath 參數中指定模型路徑。

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

建立工作

MediaPipe 臉部樣式化器工作會使用 createFromOptions() 函式設定工作。createFromOptions() 函式會接受設定選項的值。如要進一步瞭解設定選項,請參閱「設定選項」。

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)

設定選項

此工作提供下列 Android 應用程式設定選項:

選項名稱 說明 值範圍 預設值
errorListener 設定選用的錯誤監聽器。 N/A Not set

準備資料

臉部修容功能可用於靜態圖片,此工作會處理資料輸入的前置處理作業,包括調整大小、旋轉和值正規化。以下程式碼示範如何將資料交由處理。

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

執行工作

在輸入圖片上使用 FaceStylizer.stylize() 方法執行樣式化工具:

val result = FaceStylizer.stylize(mpImage)

處理及顯示結果

臉部造型器會傳回 FaceStylizerResult 物件,其中包含 MPImage 物件,該物件會將輸入圖片中最顯眼的臉部造型。

以下是這項工作的輸出資料範例:

系統產生的特寫圖片,以鉛筆和馬克筆素描風格繪製的女子。

上方的輸出內容是將色彩素描模型套用至下列輸入圖片所產生:

使用前一個輸出內容的女性相片