手部地標偵測指南

一隻手拿著雞蛋。手的形狀會標示為線框,指出已識別的結構

MediaPipe Hand Landmarker 工作可讓您偵測圖片中的手部地標。您可以使用這個工作,找出手部的重要點,並在手部上顯示視覺效果。這項工作會使用機器學習 (ML) 模型 (以靜態資料或持續串流形式) 處理圖片資料,並輸出圖片座標中的手標記、世界座標中的手標記,以及多個偵測到的手的慣用手 (左手/右手)。

試試看吧!

開始使用

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

任務詳細資料

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

功能

  • 輸入圖像處理:處理作業包括圖像旋轉、大小調整、標準化和色彩空間轉換。
  • 分數門檻:根據預測分數篩選結果。
工作輸入內容 任務輸出
Hand Landmarker 接受下列任一資料類型的輸入:
  • 靜態圖片
  • 已解碼的影片影格
  • 直播視訊畫面
Hand Landmarker 會輸出以下結果:
  • 偵測到的手部慣用手
  • 圖片座標中偵測到的手部地標
  • 以世界座標表示的偵測到的手部地標

設定選項

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

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

IMAGE:單一圖片輸入模式。

VIDEO:影片解碼影格模式。

LIVE_STREAM:輸入資料 (例如來自攝影機的資料) 的直播模式。在這個模式中,必須呼叫 resultListener,才能設定事件監聽器,以非同步方式接收結果。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands 手部地標偵測器偵測到的手部數量上限。 Any integer > 0 1
min_hand_detection_confidence 在手掌偵測模型中,手部偵測的最低信賴分數,才會視為成功。 0.0 - 1.0 0.5
min_hand_presence_confidence 手部地標偵測模型中手部存在分數的最低可信度分數。在影片模式和直播模式中,如果手勢地標模型的手勢存在可信度分數低於此閾值,手勢地標偵測器就會觸發手掌偵測模型。否則,輕量手勢追蹤演算法會判斷手的位置,以便後續的標記偵測。 0.0 - 1.0 0.5
min_tracking_confidence 手部追蹤系統判定為成功的最低可信度分數。這是目前影格和上一個影格中手的定界框交併比閾值。在 Hand Landmarker 的影片模式和串流模式中,如果追蹤失敗,Hand Landmarker 會觸發手部偵測。否則系統會略過手勢偵測。 0.0 - 1.0 0.5
result_callback 在手部標記處於即時串流模式時,將結果事件監聽器設為以非同步方式接收偵測結果。只有在執行模式設為 LIVE_STREAM 時才適用 不適用 不適用

模型

手部標記偵測器會使用模型套件,其中包含兩個已封裝的模型:手掌偵測模型和手部標記偵測模型。您需要包含這兩個模型的模型套件,才能執行此工作。

模型名稱 輸入形狀 量化類型 模型資訊卡 版本
HandLandmarker (完整) 192 x 192、224 x 224 float 16 info 最新

手部關鍵點模型套件會在偵測到的手部區域中,偵測 21 個手指關節座標的關鍵點位置。我們使用約 3 萬張實際圖片,以及在各種背景上疊加的幾個算繪合成手部模型,訓練這個模型。

手部標記模型套件包含手掌偵測模型和手部標記偵測模型。手掌偵測模型會在輸入圖片中找出手掌,手部地標偵測模型則會在手掌偵測模型定義的裁剪手部圖片中,找出特定手部地標。

由於執行手掌偵測模型需要耗費時間,因此在影片或直播執行模式中,手掌地標工具會使用手掌地標模型在一個影格中定義的邊界框,為後續影格定位手掌區域。只有在手部標記模型不再識別手部存在,或無法在影格內追蹤手部時,手部標記器才會重新觸發手掌偵測模型。這樣可以減少 Hand Landmarker 觸發手掌偵測模型的次數。

工作基準

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

模型名稱 CPU 延遲時間 GPU 延遲時間
HandLandmarker (完整) 17.12 毫秒 12.27 毫秒