Android 的臉部風格化指南

MediaPipe 臉部觸控筆工作可讓你為圖片中的臉孔套用臉孔風格。 透過這項工作,您可以建立各種風格的虛擬顯示圖片。

如需上述指示中所述的程式碼範例,請前往 GitHub。 進一步瞭解功能、模型和設定選項 請參閱總覽

程式碼範例

MediaPipe Tasks 程式碼範例是臉部樣式設定的基本實作 App Engine 應用程式這個範例會將臉部風格化技術套用至 應用程式。

您可以將應用程式做為起點,當做 Android 應用程式的起點,也可以參照應用程式 做出決定臉部樣式設定範例程式碼 GitHub

下載程式碼

以下說明如何建立範例的本機副本 git 指令列工具編寫程式碼。

如要下載範例程式碼,請按照下列步驟操作:

  1. 使用下列指令複製 git 存放區:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. 您也可以設定 Git 執行個體來使用稀疏結帳功能, 僅限臉部樣式設定範例應用程式的檔案:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

建立範例程式碼的本機版本後,您可以匯入專案 然後執行應用程式如需操作說明,請參閱 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 工作需要訓練完成的模型套裝組合,且必須與 執行這項工作如要進一步瞭解適用於臉部風格化工具的已訓練模型, 請參閱工作總覽的「模型」一節

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

<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 物件 圖片。

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

以上輸出內容是使用色彩草圖建立而成 新增至下列輸入圖片: