Android 向け顔のスタイル設定ガイド

MediaPipe Face Stylizer タスクを使用すると、画像内の顔に顔のスタイル設定を適用できます。このタスクを使用すると、さまざまなスタイルの仮想アバターを作成できます。

これらの手順で説明するコードサンプルは GitHub で入手できます。このタスクの機能、モデル、構成オプションの詳細については、概要をご覧ください。

サンプルコード

MediaPipe Tasks のサンプルコードは、Android 向けの Face Stylizer アプリの基本的な実装です。この例では、アプリに提供された画像に顔のスタイル設定を適用します。

このアプリは、独自の Android アプリの開始点として使用できます。また、既存のアプリを変更する際にも参照できます。Face Stylizer のサンプルコードは 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 のセットアップ ガイドをご覧ください。

主要コンポーネント

次のファイルには、この顔のスタイル設定サンプル アプリケーションの重要なコードが含まれています。

  • FaceStylizationHelper.kt: 顔のスタイル設定ツールを初期化し、モデルとデリゲートの選択を処理します。
  • MainActivity.kt: 結果と出力を提供するとともに、エラーを処理します。

セットアップ

このセクションでは、Face Stylizer を使用するように開発環境とコード プロジェクトを設定する主な手順について説明します。プラットフォーム バージョンの要件など、MediaPipe タスクを使用する開発環境の設定に関する一般的な情報については、Android の設定ガイドをご覧ください。

依存関係

Face Stylizer タスクは 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 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)

結果を処理して表示する

Face Stylizer は FaceStylizerResult オブジェクトを返します。このオブジェクトには、入力画像内の最も目立つ顔のスタイル設定が含まれる MPImage オブジェクトが含まれています。

このタスクの出力データの例を次に示します。

鉛筆とマーカーで描かれたスケッチ スタイルの女性の生成されたクローズアップ。

上記の出力は、次の入力画像にカラースケッチモデルを適用して作成されました。

前の出力の生成に使用された女性の写真