圖片嵌入工作指南

兩張冰淇淋蛋筒圖片示例,其中包含圖片的數值嵌入資料做為陣列

MediaPipe 圖片嵌入器工作可讓您建立圖片的數值表示法,這對於完成各種機器學習圖片工作相當實用。這項功能經常用於使用數學比較技術 (例如餘弦相似度) 比較兩張圖片的相似度。這項工作會以機器學習 (ML) 模型做為靜態資料或連續串流,對圖像資料進行運算,並以浮點或量化形式,將圖像資料的數值表示法輸出為高維度特徵向量清單 (也稱為嵌入向量)。

試試看吧!

開始使用

請按照下列目標平台的導入指南操作,開始使用此工作。這些平台專屬指南會逐步引導您使用建議的模型實作此項工作的基本設定,並提供含有建議設定選項的程式碼範例:

任務詳細資料

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

功能

  • 輸入圖像處理:處理作業包括圖像旋轉、大小調整、標準化和色彩空間轉換。
  • 感興趣區域:在圖片的某個區域 (而非整個圖片) 上執行嵌入作業。
  • 嵌入相似度計算:內建公用函式,用於計算兩個特徵向量之間的餘弦相似度
  • 量化:支援特徵向量的純量量化。
工作輸入內容 任務輸出
輸入內容可以是下列其中一種資料類型:
  • 靜態圖片
  • 已解碼的影片影格
  • 直播視訊畫面
圖片嵌入器會輸出嵌入清單,其中包含:
  • 嵌入:特徵向量本身,以浮點形式或量化為標量。
  • 頭部索引:產生此嵌入資料的頭部索引。
  • 頭部名稱 (選填):產生此嵌入資料的頭部名稱。

設定選項

此工作提供下列設定選項:

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

IMAGE:單一圖片輸入模式。

VIDEO:影片解碼影格模式。

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 時,才能使用 不適用 未設定

模型

圖片嵌入器需要下載圖片嵌入模型,並儲存在專案目錄中。開始使用此工作進行開發時,請先使用目標平台的預設建議模型。其他可用的模型通常會在效能、準確度、解析度和資源需求之間取得平衡,在某些情況下還會包含額外功能。

MobileNetV3 模型

這個模型系列採用 MobileNet V3 架構,並使用 ImageNet 資料進行訓練。這個模型會將乘數設為 0.75,用於卷積層中的深度 (特徵數量),以便調整準確度和延遲的權衡。此外,MobileNet V3 有兩種大小 (小型和大型),可將網路調整為低或高資源使用情境。

模型名稱 輸入形狀 量化類型 版本
MobileNet-V3 (小型) 224 x 224 None (float32) 最新
MobileNet-V3 (large) 224 x 224 None (float32) 最新

工作基準

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

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