画像埋め込みタスクガイド

アイスクリーム コーンの 2 つのサンプル画像。画像の数値エンベディングが配列として含まれています。

MediaPipe Image Embedder タスクを使用すると、画像の数値表現を作成できます。これは、さまざまな ML ベースの画像タスクの実行に役立ちます。この機能は、コサイン類似度などの数学的比較手法を使用して 2 つの画像の類似度を比較する場合によく使用されます。このタスクは、機械学習(ML)モデルを静的データまたは連続ストリームとして使用して画像データを処理し、画像データの数値表現を、浮動小数点形式または量子化形式で高次元特徴ベクトル(エンベディング ベクトル)のリストとして出力します。

試してみる

使ってみる

このタスクを使用するには、対象プラットフォーム向けの次のいずれかの実装ガイドに沿って操作します。これらのプラットフォーム固有のガイドでは、推奨モデルを使用してこのタスクの基本的な実装について説明します。また、推奨構成オプションを含むコードサンプルも提供します。

タスクの詳細

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

機能

  • 入力画像の処理 - 処理には、画像の回転、サイズ変更、正規化、色空間変換が含まれます。
  • 関心領域 - 画像全体ではなく、画像の領域にエンベディングを実行します。
  • エンベディングの類似性計算 - 2 つの特徴ベクトル間のコサイン類似度を計算する組み込みユーティリティ関数
  • 量子化 - 特徴ベクトルのスカラー量子化をサポートします。
タスク入力 タスクの出力
入力は次のいずれかのデータ型にする必要があります。
  • 静止画像
  • デコードされた動画フレーム
  • ライブ動画フィード
Image Embedder は、次で構成されるエンベディングのリストを出力します。
  • エンベディング: 浮動小数点形式またはスカラー量子化された特徴ベクトル自体。
  • ヘッド インデックス: このエンベディングを生成するヘッドのインデックス。
  • ヘッド名(省略可): このエンベディングを生成するヘッドの名前。

構成オプション

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

オプション名 説明 値の範囲 デフォルト値
running_mode タスクの実行モードを設定します。モードは次の 3 つです。

IMAGE: 単一画像入力のモード。

動画: 動画のデコードされたフレームのモード。

LIVE_STREAM: カメラなどからの入力データのライブ配信モード。このモードでは、resultListener を呼び出して、結果を非同期で受信するリスナーを設定する必要があります。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
l2_normalize 返された特徴ベクトルを L2 ノルムで正規化するかどうか。このオプションは、モデルにネイティブの L2_NORMALIZATION TFLite オペレーションがまだ含まれていない場合にのみ使用します。ほとんどの場合、すでにこの状態であるため、TFLite 推論によって L2 正規化が実現され、このオプションは必要ありません。 Boolean False
quantize 返されたエンベディングをスカラー量子化でバイトに量子化するかどうか。エンベディングは暗黙的に単位正規化されていると見なされるため、すべてのディメンションの値は [-1.0、1.0] の範囲内にあることが保証されます。そうでない場合は、l2_normalize オプションを使用します。 Boolean False
result_callback 画像埋め込みツールがライブ配信モードのときに、埋め込み結果を非同期で受信するように結果リスナーを設定します。実行モードが LIVE_STREAM に設定されている場合にのみ使用できます。 なし 未設定

モデル

Image Embedder では、画像エンベディング モデルをダウンロードしてプロジェクト ディレクトリに保存する必要があります。このタスクで開発を開始する場合は、ターゲット プラットフォームのデフォルトの推奨モデルから始めます。使用可能な他のモデルでは通常、パフォーマンス、精度、解像度、リソース要件のトレードオフが行われます。また、追加機能が含まれている場合もあります。

MobileNetV3 モデル

このモデルファミリーは MobileNet V3 アーキテクチャを使用しており、ImageNet データを使用してトレーニングされています。このモデルでは、畳み込みレイヤの深さ(特徴の数)に 0.75 の乗数を使用して、精度とレイテンシのトレードオフを調整します。また、MobileNet V3 には小と大の 2 種類のサイズがあり、リソース使用量の少ないユースケースとリソース使用量の多いユースケースにネットワークを適応させることができます。

モデル名 入力シェイプ 量子化のタイプ バージョン
MobileNet-V3(小) 224 x 224 なし(float32) 最新
MobileNet-V3(大) 224 x 224 なし(float32) 最新

タスクのベンチマーク

上記の事前トレーニング済みモデルに基づくパイプライン全体のタスクのベンチマークは次のとおりです。レイテンシの結果は、CPU / GPU を使用した Google Pixel 6 の平均レイテンシです。

モデル名 CPU レイテンシ GPU レイテンシ
MobileNet-V3(小) 3.94 ミリ秒 7.83 ミリ秒
MobileNet-V3(大) 9.75 ミリ秒 9.08 ミリ秒