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

MediaPipe 顔スタイライザー タスクを使用すると、画像内の顔に顔のスタイル化を適用できます。このタスクを使用して、さまざまなスタイルの仮想アバターを作成できます。

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

サンプルコード

MediaPipe Tasks のサンプルコードは、Android 用顔スタイライザー アプリの基本的な実装です。この例では、アプリに提供された画像に顔のスタイル化を適用しています。

このアプリは、独自の Android アプリを作成する際の出発点として使用できます。また、既存のアプリを変更するときにアプリを参照することもできます。顔スタイライザーのサンプルコードは 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 の設定ガイドをご覧ください。

依存関係

顔スタイライザー タスクでは、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 顔スタイライザー タスクは、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 オブジェクトが含まれています。

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

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