MediaPipe 臉部風格化工具工作可讓您為圖片中的臉孔套用臉部樣式。您可以使用這項工作建立各種樣式的虛擬顯示圖片。
您可以前往 GitHub 取得這些操作說明中提及的程式碼範例。如要進一步瞭解這項工作的功能、模型和設定選項,請參閱總覽。
程式碼範例
MediaPipe Tasks 範例程式碼是適用於 Android 的 Face Stylizer 應用程式的基本實作。這個範例會將臉部風格套用至提供給應用程式的圖片。
您可以將該應用程式做為開發 Android 應用程式的起點,也可以在修改現有應用程式時參照。錶面樣式工具範例程式碼由 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:提供結果和輸出內容,以及處理所有錯誤。
設定
本節說明設定開發環境的重要步驟,以及專門針對使用臉部樣式工具的程式碼專案。如需瞭解如何使用 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
物件,其樣式為輸入圖片中最醒目的臉孔。
以下為這項工作的輸出資料範例:
上述輸出是將色彩草圖模型套用至下列輸入圖片所建立: