Android 的臉部風格化指南

MediaPipe 臉部風格化工具工作可讓您為圖片中的臉孔套用臉部樣式。您可以使用這項工作建立各種樣式的虛擬顯示圖片。

您可以前往 GitHub 取得這些操作說明中提及的程式碼範例。如要進一步瞭解這項工作的功能、模型和設定選項,請參閱總覽

程式碼範例

MediaPipe Tasks 範例程式碼是適用於 Android 的 Face Stylizer 應用程式的基本實作。這個範例會將臉部風格套用至提供給應用程式的圖片。

您可以將該應用程式做為開發 Android 應用程式的起點,也可以在修改現有應用程式時參照。錶面樣式工具範例程式碼由 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 設定指南

重要元件

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

設定

本節說明設定開發環境的重要步驟,以及專門針對使用臉部樣式工具的程式碼專案。如需瞭解如何使用 MediaPipe 工作設定開發環境的一般資訊,包括平台版本需求,請參閱 Android 設定指南

依附元件

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

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

型號

MediaPipe 臉部風格化工具工作需要的已訓練模型組合與這項工作相容。如要進一步瞭解臉部風格工具可用的已訓練模型,請參閱工作總覽「模型」一節

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

<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 Face Stylizer 工作會使用 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 物件,其樣式為輸入圖片中最醒目的臉孔。

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

上述輸出是將色彩草圖模型套用至下列輸入圖片所建立: