MediaPipe 画像セグメンテーション タスクを使用すると、事前定義されたカテゴリに基づいて画像を複数の領域に分割できます。この機能を使用すると、特定のオブジェクトやテクスチャを識別し、背景のぼかしなどの視覚効果を適用できます。このタスクには、画像データ内の人物とその特徴をセグメント化するために特別にトレーニングされたモデルがいくつか含まれます。
- 人物と背景
- 人の髪のみ
- 人の髪、顔、肌、衣服、アクセサリー
このタスクは、機械学習(ML)モデルで単一画像または連続動画ストリームの画像データを処理します。選択したmodelに応じて、画像内のオブジェクトまたは領域を表すセグメント化された領域のリストを出力します。
使ってみる
このタスクの使用を開始するには、ターゲット プラットフォームの実装ガイドのいずれかに沿って操作します。以下のプラットフォーム固有のガイドでは、推奨モデルや推奨構成オプションを含むコードサンプルなど、このタスクの基本的な実装について説明します。
タスクの詳細
このセクションでは、このタスクの機能、入力、出力、構成オプションについて説明します。
機能
- 入力画像処理 - 画像の回転、サイズ変更、正規化、色空間変換などを行います。
タスクの入力 | タスクの出力 |
---|---|
入力は次のいずれかのデータ型になります。
|
画像セグメンテーションは、セグメント化された画像データを出力します。これには、設定した構成オプションに応じて次のいずれかまたは両方を含めることができます。
|
構成オプション
このタスクには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
running_mode |
タスクの実行モードを設定します。モードは 3 つあります。 IMAGE: 単一の画像入力のモード。 VIDEO: 動画のデコードされたフレームのモード。 LIVE_STREAM: カメラからのデータなど、入力データのライブストリームのモード。このモードでは、resultListener を呼び出して、結果を非同期で受け取るリスナーをセットアップする必要があります。 |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
output_category_mask |
True に設定すると、出力には、uint8 画像としてセグメンテーション マスクが含まれ、各ピクセル値は最も成功したカテゴリ値を示します。 |
{True, False } |
False |
output_confidence_masks |
True に設定すると、出力には浮動小数点値の画像としてセグメンテーション マスクが含まれ、各浮動小数点値はカテゴリの信頼スコアマップを表します。 |
{True, False } |
True |
display_names_locale |
タスクのモデルのメタデータで提供される表示名に使用するラベルの言語を設定します(利用可能な場合)。英語の場合、デフォルトは en です。TensorFlow Lite Metadata Writer API を使用して、カスタムモデルのメタデータにローカライズされたラベルを追加できます。 | 言語 / 地域コード | en |
result_callback |
画像セグメンタがライブ ストリーム モードのときにセグメンテーション結果を非同期で受け取るように結果リスナーを設定します。実行モードが LIVE_STREAM に設定されている場合にのみ使用できます |
なし | なし |
モデル
画像セグメンテーションは複数の ML モデルで使用できます。次のセグメンテーション モデルのほとんどは、人の画像でセグメンテーションを実行するように構築され、トレーニングされています。ただし、DeepLab-v3 モデルは、汎用の画像セグメンタとして構築されています。アプリケーションに最適なモデルを選択します。
自撮り写真のセグメンテーション モデル
このモデルは人物のポートレートをセグメント化でき、画像の背景の置き換えや変更に使用できます。このモデルは、インデックス 0 の背景とインデックス 1 の人物の 2 つのカテゴリを出力します。このモデルには、正方形や横長など、入力形状が異なるバージョンがあり、ビデオ通話など、入力が常にその形状であるアプリケーションには効率的です。
モデル名 | 入力シェイプ | 量子化タイプ | モデルカード | バージョン |
---|---|---|---|---|
SelfieSegmenter(正方形) | 256 x 256 | 浮動小数点数 16 | 情報 | 最新 |
SelfieSegmenter(横向き) | 144×256 | 浮動小数点数 16 | 情報 | 最新 |
ヘア セグメンテーション モデル
このモデルは、人の画像を取得し、頭の毛を見つけて、髪の画像セグメンテーション マップを出力します。このモデルは、髪の色の変更や他の髪の効果の適用に使用できます。このモデルは、次のセグメンテーション カテゴリを出力します。
0 - background
1 - hair
モデル名 | 入力シェイプ | 量子化タイプ | モデルカード | バージョン |
---|---|---|---|---|
HairSegmenter | 512 × 512 | なし(float32) | 情報 | 最新 |
マルチクラスの自撮り写真セグメンテーション モデル
このモデルは人の画像を取得し、髪、肌、服などのさまざまな領域の領域を特定して、これらのアイテムの画像セグメンテーション マップを出力します。このモデルを使用すると、画像や動画内の人物にさまざまな効果を適用できます。このモデルは、次のセグメンテーション カテゴリを出力します。
0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
モデル名 | 入力シェイプ | 量子化タイプ | モデルカード | バージョン |
---|---|---|---|---|
SelfieMulticlass(256 x 256) | 256 x 256 | なし(float32) | 情報 | 最新 |
DeepLab-v3 モデル
このモデルは、背景、人、猫、犬、鉢植えなど、さまざまなカテゴリのセグメントを識別します。このモデルは、アトロス空間ピラミッドプーリングを使用して、より長い距離情報をキャプチャします。詳細については、DeepLab-v3 をご覧ください。
モデル名 | 入力シェイプ | 量子化タイプ | バージョン |
---|---|---|---|
DeepLab-V3 | 257×257 | なし(float32) | 最新 |
タスク ベンチマーク
上記の事前トレーニング済みモデルに基づくパイプライン全体のタスク ベンチマークは次のとおりです。レイテンシの結果は、CPU / GPU を使用した Google Pixel 6 の平均レイテンシです。
モデル名 | CPU レイテンシ | GPU レイテンシ |
---|---|---|
SelfieSegmenter(正方形) | 33.46 ミリ秒 | 35.15 ミリ秒 |
SelfieSegmenter(横向き) | 34.19 ミリ秒 | 33.55 ミリ秒 |
HairSegmenter | 57.90 ミリ秒 | 52.14 ミリ秒 |
SelfieMulticlass(256 x 256) | 217.76 ミリ秒 | 71.24 ミリ秒 |
DeepLab-V3 | 123.93 ミリ秒 | 103.30 ミリ秒 |