圖片嵌入工作指南

MediaPipe 圖片嵌入工具工作可讓您為圖片建立數字表示法,方便完成各種以機器學習為基礎的圖片工作。這種功能經常用於比較使用 Cosine Similarity 等數學比較技術來比較兩張圖片的相似度。這項工作會以機器學習 (ML) 模型做為靜態資料或連續串流的圖片資料執行作業,並將圖片資料的數值表示法輸出為高維度特徵向量 (也稱為嵌入向量) 清單,其可以是浮點或量化格式。

試試看!

開始使用

如要開始使用這項工作,請按照目標平台適用的任一實作指南操作。下列平台專用指南將引導您以建議的模型實作這項工作的基本實作,並提供包含建議設定選項的程式碼範例:

任務詳細資料

本節說明這項工作的功能、輸入、輸出和設定選項。

功能

  • 輸入圖片處理 - 處理包括圖像旋轉、大小調整、正規化及色域轉換。
  • 感興趣的區域 - 在圖片的區域執行嵌入,而非整個圖片。
  • 嵌入相似度計算 - 內建公用程式函式,可以計算兩個特徵向量之間的餘弦相似度
  • 量化 - 支援特徵向量的純量量化。
工作輸入內容 工作輸出內容
輸入內容可以是下列任一資料類型:
  • 靜態圖片
  • 經解碼的影格數
  • 直播影片動態饋給
圖片嵌入程式會輸出包含以下內容的嵌入清單:
  • 嵌入:以浮點格式或純量化的地圖項目向量本身。
  • 頭部指數:產生此嵌入項目的頭部索引。
  • 標題名稱 (選填):產生此嵌入的頭部名稱。

設定選項

這項工作有以下設定選項:

選項名稱 說明 值範圍 預設值
running_mode 設定工作的執行模式。共有三種模式:

IMAGE:單一圖片輸入的模式。

影片:影片已解碼影格的模式。

LIVE_STREAM:輸入資料串流 (例如攝影機) 的直播模式。在這個模式下,必須呼叫 resultListener 才能設定事件監聽器,以非同步方式接收結果。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
l2_normalize 是否使用 L2 正規化傳回的特徵向量。只有在模型不含原生 L2_NORMALIZATION TFLite Op 的情況下,才能使用這個選項。在大多數情況下,已經是此情況,L2 正規化是透過 TFLite 推論達成,不需要使用這個選項。 Boolean False
quantize 是否應透過純量量化,將傳回的嵌入量化為位元組。以隱含方式假設嵌入為單位標準,因此任何維度保證在 [-1.0, 1.0] 中都有一個值。如果並非如此,請使用 l2_正規化選項。 Boolean False
result_callback 在 Image Embedder 處於直播模式時,設定結果事件監聽器以非同步方式接收嵌入結果。只能在執行模式設為 LIVE_STREAM 時使用 不適用 未設定

模型

如要使用圖片嵌入工具,您必須下載圖片嵌入模型,並儲存在專案目錄中。開始使用這項工作進行開發時,先以目標平台的預設建議模型著手。其他可用的模型通常會在效能、準確率、解析度和資源需求之間取得取捨,在某些情況下還包含其他功能。

MobileNetV3 型號

這個模型系列使用 MobileNet V3 架構,並以 ImageNet 資料訓練。這個模型使用 0.75 的倍數 (特徵數量) 來調整捲積層中的深度 (特徵數量),以調整準確率延遲權衡。此外,MobileNet V3 會採用兩種大小 (小到大) 來將網路調整為低或高資源使用案例。

模型名稱 輸入形狀 量化類型 版本
MobileNet-V3 (small) 224 x 224 無 (float32) 最新
MobileNet-V3 (大)224 x 224 無 (float32) 最新

工作基準

以下為整個管道根據上述預先訓練模型所產生的工作基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。

模型名稱 CPU 延遲時間 GPU 延遲時間
MobileNet-V3 (小) 3.94 毫秒 7.83 毫秒
MobileNet-V3 (大) 9.75 毫秒 9.08 毫秒