MediaPipe Interactive Image Segmenter タスクは、画像内の位置を取得し、境界線を推定 そのオブジェクトのセグメンテーションを 作成します。以下では、インタラクティブ画像セグメンタを Android アプリ。この手順で説明するコードサンプルは、 GitHub。 機能、モデル、構成オプションの詳細については、 概要をご覧ください。
サンプルコード
MediaPipe Tasks のコードサンプルは、インタラクティブな画像セグメンテーションの簡単な実装です。 アプリ この例は、デバイスのギャラリーから選択された画像に対して機能します。
独自の Android アプリの出発点としてアプリを使用することも、アプリ自体に言及することもできます。 変更する際の注意点があります。インタラクティブ画像セグメンタのサンプル コードは次の場所でホストされています: GitHub。
コードをダウンロードする
次の手順では、サンプルのローカルコピーを作成する方法を示します。 git コマンドライン ツールを使用してコードを実行します。
<ph type="x-smartling-placeholder">サンプルコードをダウンロードするには:
- 次のコマンドを使用して Git リポジトリのクローンを作成します。
git clone https://github.com/google-ai-edge/mediapipe-samples
- 必要に応じて、スパース チェックアウトを使用するように Git インスタンスを構成します。
したがって、インタラクティブ イメージ セグメンタ サンプルアプリのファイルのみが含まれることになります。
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/interactive_segmentation/android
サンプルコードのローカル バージョンを作成したら、プロジェクトをインポートできます。 アプリを実行します。手順については、次をご覧ください: Android 向けセットアップ ガイド
主要コンポーネント
次のファイルには、この画像に不可欠なコードが含まれています。 セグメンテーションのサンプル アプリケーション:
- InteractiveSegmentationHelper.kt - インタラクティブ画像セグメンタ タスクを初期化し、モデルとデリゲートを処理する 選択します。
- OverlayView.kt - セグメンテーションの結果を処理し、フォーマットします。
セットアップ
このセクションでは、開発環境をセットアップする主な手順と インタラクティブ画像セグメンタを使用するためのコード プロジェクトです。一般的な情報については、 MediaPipe タスクを使用するための開発環境の設定 プラットフォーム バージョンの要件については、 Android の設定ガイド
<ph type="x-smartling-placeholder">依存関係
インタラクティブ画像セグメンタでは、com.google.mediapipe:tasks-vision
ライブラリを使用します。こちらの
build.gradle
ファイルに依存関係を追加して、
Android アプリ開発プロジェクト。必要な依存関係をインポートする
次のコードを使用します。
dependencies {
...
implementation 'com.google.mediapipe:tasks-vision:latest.release'
}
モデル
MediaPipe Interactive Image Segmenter タスクには、この変換と互換性のあるトレーニング済みモデルが必要です。 タスクを実行します。インタラクティブ画像セグメンテーションで使用可能なトレーニング済みモデルについて詳しくは、以下をご覧ください。 タスクの概要のモデル セクションをご覧ください。
モデルを選択してダウンロードし、プロジェクト ディレクトリに保存します。
<dev-project-root>/src/main/assets
BaseOptions.Builder.setModelAssetPath()
メソッドを使用してパスを指定する
使用されます。次のコードサンプルでは、このメソッドを使用しています。
。
インタラクティブ画像セグメンタでは
サンプルコード、
モデルは InteractiveSegmenterHelper.kt
で定義されています。
setupInteractiveSegmenter()
関数内で指定します。
タスクを作成する
タスクを作成するには、createFromOptions
関数を使用します。「
createFromOptions
関数は、次のような構成オプションを受け入れます。
マスク出力タイプ。リソースの構成について
構成の概要をご覧ください。
InteractiveSegmenterOptions options = InteractiveSegmenterOptions.builder() .setBaseOptions( BaseOptions.builder().setModelAssetPath("model.tflite").build()) .setOutputCategoryMask(true) .setOutputConfidenceMasks(false) .setResultListener((result, inputImage) -> { // Process the segmentation result here. }) .setErrorListener(exception -> { // Process the segmentation errors here. }) .build(); interactivesegmenter = InteractiveSegmenter.createFromOptions(context, options);
outputCategoryMask
True
に設定すると、出力にはセグメンテーション マスクが含まれます。
uint8 イメージとして格納されます。各ピクセル値は、そのピクセルが
検出対象領域のオブジェクトです。True, False
}False
outputConfidenceMasks
True
に設定すると、出力にはセグメンテーション マスクが含まれます。
浮動小数点値の画像として格納され、各浮動小数点値は信頼度を
そのピクセルが対象領域にあるオブジェクトの一部であることが示されます。True, False
}True
displayNamesLocale
en
です。
英語。カスタムモデルのメタデータにローカライズされたラベルを追加できます。
TensorFlow Lite Metadata Writer API を使用
errorListener
データの準備
インタラクティブ画像セグメンタは画像に対して動作し、タスクはデータ入力を処理
これには、サイズ変更、回転、値の正規化などの前処理が含まれます。
入力画像を元の画像に
com.google.mediapipe.framework.image.MPImage
オブジェクトを使用してから
タスクを実行します。
import com.google.mediapipe.framework.image.BitmapImageBuilder; import com.google.mediapipe.framework.image.MPImage; // Load an image on the user’s device as a Bitmap object using BitmapFactory. // Convert an Android’s Bitmap object to a MediaPipe’s Image object. MPImage mpImage = new BitmapImageBuilder(bitmap).build();
RegionOfInterest roi = RegionOfInterest.create( NormalizedKeypoint.create( normX * it.width, normY * it.height ) ); ImageSegmenterResult segmenterResult = interactivesegmenter.segment(image, roi);