您可以使用 MediaPipe 臉部樣式化工作,將臉部樣式化效果套用至圖片中的臉部。您可以使用這個工作,以各種風格建立虛擬人物。
您可以在 GitHub 上找到這些操作說明中所述的程式碼範例。如要進一步瞭解這項工作的功能、模型和設定選項,請參閱總覽。
程式碼範例
MediaPipe Tasks 範例程式碼是 Android 版 Face Stylizer 應用程式的基本實作項目。這個範例會將臉部樣式套用至應用程式提供的圖片。
您可以使用這個應用程式做為自有 Android 應用程式的起點,也可以在修改現有應用程式時參考這個應用程式。Face Stylizer 範例程式碼託管於 GitHub 上。
下載程式碼
以下操作說明說明如何使用 git 指令列工具,建立範例程式碼的本機副本。
下載程式碼範例:
- 使用下列指令複製 Git 存放區:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 您可以選擇將 Git 例項設定為使用稀疏檢查,這樣您就只會取得 Face Stylizer 範例應用程式的檔案:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/face_stylization/android
建立本機版本的範例程式碼後,您可以將專案匯入 Android Studio 並執行應用程式。如需操作說明,請參閱 Android 設定指南。
重要元件
以下檔案包含此臉部風格化範例應用程式的重要程式碼:
- FaceStylizationHelper.kt:初始化臉部樣式化工具,並處理模型和委派函式選項。
- MainActivity.kt:提供結果和輸出內容,並處理任何錯誤。
設定
本節將說明設定開發環境和程式碼專案的關鍵步驟,以便使用 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
物件,該物件會將輸入圖片中最顯眼的臉部造型。
以下是這項工作的輸出資料範例:
上方的輸出內容是將色彩素描模型套用至下列輸入圖片所產生: