画像セグメンテーション ガイド

MediaPipe 画像セグメンテーション タスクを使用すると、事前定義されたカテゴリに基づいて画像を複数の領域に分割できます。この機能を使用すると、特定のオブジェクトやテクスチャを識別し、背景のぼかしなどの視覚効果を適用できます。このタスクには、画像データ内の人物とその特徴をセグメント化するために特別にトレーニングされたモデルがいくつか含まれます。

  • 人物と背景
  • 人の髪のみ
  • 人の髪、顔、肌、衣服、アクセサリー

このタスクは、機械学習(ML)モデルで単一画像または連続動画ストリームの画像データを処理します。選択したmodelに応じて、画像内のオブジェクトまたは領域を表すセグメント化された領域のリストを出力します。

試してみる

使ってみる

このタスクの使用を開始するには、ターゲット プラットフォームの実装ガイドのいずれかに沿って操作します。以下のプラットフォーム固有のガイドでは、推奨モデルや推奨構成オプションを含むコードサンプルなど、このタスクの基本的な実装について説明します。

タスクの詳細

このセクションでは、このタスクの機能、入力、出力、構成オプションについて説明します。

機能

  • 入力画像処理 - 画像の回転、サイズ変更、正規化、色空間変換などを行います。
タスクの入力 タスクの出力
入力は次のいずれかのデータ型になります。
  • 静止画像
  • デコードされた動画フレーム
  • ライブ動画フィード
画像セグメンテーションは、セグメント化された画像データを出力します。これには、設定した構成オプションに応じて次のいずれかまたは両方を含めることができます。
  • CATEGORY_MASK: セグメント化されたマスクを uint8 形式の画像として含むリスト。各ピクセル値は、モデルがサポートする特定のセグメント カテゴリに含まれるかどうかを示します。
  • CONFIDENCE_MASK: ピクセル値を持つ float32 形式のセグメント化されたマスクを含むチャネルのリスト。各ピクセル値は、モデルがサポートする特定のカテゴリに含まれることの信頼度を示します。

構成オプション

このタスクには、次の構成オプションがあります。

オプション名 説明 値の範囲 デフォルト値
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 ミリ秒