MediaPipe 臉部觸控筆工作可讓你為圖片中的臉孔套用臉孔風格。 透過這項工作,您可以建立各種風格的虛擬顯示圖片。
如需上述指示中所述的程式碼範例,請前往 GitHub。 進一步瞭解功能、模型和設定選項 請參閱總覽。
程式碼範例
MediaPipe Tasks 程式碼範例是臉部樣式設定的基本實作 App Engine 應用程式這個範例會將臉部風格化技術套用至 應用程式。
您可以將應用程式做為起點,當做 Android 應用程式的起點,也可以參照應用程式 做出決定臉部樣式設定範例程式碼 GitHub。
下載程式碼
以下說明如何建立範例的本機副本 git 指令列工具編寫程式碼。
如要下載範例程式碼,請按照下列步驟操作:
- 使用下列指令複製 git 存放區:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 您也可以設定 Git 執行個體來使用稀疏結帳功能,
僅限臉部樣式設定範例應用程式的檔案:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/face_stylization/android
建立範例程式碼的本機版本後,您可以匯入專案 然後執行應用程式如需操作說明,請參閱 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 工作需要訓練完成的模型套裝組合,且必須與 執行這項工作如要進一步瞭解適用於臉部風格化工具的已訓練模型, 請參閱工作總覽的「模型」一節。
選取並下載模型,然後儲存在專案目錄中:
<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
物件
圖片。
以下範例顯示這項工作的輸出資料範例:
以上輸出內容是使用色彩草圖建立而成 新增至下列輸入圖片: