手勢辨識工作指南

MediaPipe 手勢辨識工作可讓您即時辨識手勢、提供已辨識的手勢結果,以及偵測到的手部地標。您可以使用這項工作來辨識使用者的特定手勢,並叫用與這些手勢對應的應用程式功能。

這項工作會使用機器學習 (ML) 模型處理圖片資料,並接受靜態資料或連續串流。這項工作會輸出圖片座標中的手繪地標、世界座標的手繪地標、慣用手 (左/右手),以及多隻手的手勢類別。

試試看!

開始使用

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

任務詳細資料

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

功能

  • 輸入圖片處理 - 處理包括圖片旋轉、大小調整、正規化和色域轉換。
  • 分數門檻:根據預測分數篩選結果。
  • 標籤許可清單和拒絕清單 - 指定模型識別的手勢類別。
工作輸入內容 工作輸出內容
手勢辨識工具接受下列任一種資料類型:
  • 靜態圖片
  • 經解碼的影格數
  • 直播影片動態饋給
手勢辨識工具會輸出下列結果:
  • 手勢類別
  • 偵測到的手掌
  • 圖像座標中偵測到的手部地標
  • 以世界座標偵測的手掌地標

設定選項

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

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

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

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

LIVE_STREAM:輸入資料串流 (例如攝影機) 的直播模式。在這個模式下,必須呼叫 resultListener 才能設定事件監聽器,以非同步方式接收結果。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands GestureRecognizer 可以偵測出手的數量上限。 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 系統判定手機追蹤成功時的最低可信度分數。這是目前影格和最後一個影格之間的定界框 IoU 門檻。在影片模式和手勢辨識的串流模式下,如果追蹤失敗,手勢辨識工具會觸發手部偵測。否則系統會略過手部偵測。 0.0 - 1.0 0.5
canned_gestures_classifier_options 設定罐頭手勢分類器行為的選項。罐頭手勢為 ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
  • 顯示名稱語言代碼:透過 TFLite 模型中繼資料指定的顯示名稱 (如有)。
  • 結果數量上限:要傳回的最高分數分類結果數量上限。如果小於 0,系統會傳回所有可用的結果。
  • 分數門檻:分數遭到拒絕的分數,如果設為 0,系統會傳回所有可用的結果。
  • 類別許可清單:類別名稱的許可清單。如果不是空白,系統會篩除不屬於這個組合的分類結果。與拒絕清單互斥。
  • 類別拒絕清單:類別名稱的拒絕清單。如果不是空白,系統會篩除此組合中類別所屬的分類結果。允許與許可清單互斥。
    • 顯示名稱語言代碼:any string
    • 結果數量上限:any integer
    • 分數門檻:0.0-1.0
    • 類別許可清單:vector of strings
    • 類別拒絕清單:vector of strings
    • 顯示名稱語言代碼:"en"
    • 結果數量上限:-1
    • 分數門檻:0
    • 類別許可清單:空白
    • 類別拒絕清單:空白
    custom_gestures_classifier_options 設定自訂手勢分類器行為的選項。
  • 顯示名稱語言代碼:透過 TFLite 模型中繼資料指定的顯示名稱 (如有)。
  • 結果數量上限:要傳回的最高分數分類結果數量上限。如果小於 0,系統會傳回所有可用的結果。
  • 分數門檻:分數遭到拒絕的分數,如果設為 0,系統會傳回所有可用的結果。
  • 類別許可清單:類別名稱的許可清單。如果不是空白,系統會篩除不屬於這個組合的分類結果。與拒絕清單互斥。
  • 類別拒絕清單:類別名稱的拒絕清單。如果不是空白,系統會篩除此組合中類別所屬的分類結果。允許與許可清單互斥。
    • 顯示名稱語言代碼:any string
    • 結果數量上限:any integer
    • 分數門檻:0.0-1.0
    • 類別許可清單:vector of strings
    • 類別拒絕清單:vector of strings
    • 顯示名稱語言代碼:"en"
    • 結果數量上限:-1
    • 分數門檻:0
    • 類別許可清單:空白
    • 類別拒絕清單:空白
    result_callback 設定結果事件監聽器,在手勢辨識工具處於直播模式時,以非同步方式接收分類結果。只能在執行模式設為 LIVE_STREAM 時使用 ResultListener 不適用 不適用

    模型

    手勢辨識工具使用包含兩個預先封裝模型套裝組合的模型套裝組合:手持地標模型組合和手勢分類模型組合。地標模型會偵測手部和手幾何圖形是否存在,而手勢辨識模型則會根據手幾何辨識手勢。

    模型名稱 輸入形狀 量化類型 Model Card 版本
    handGestureClassifier192 x 192、224 x 224 浮點值 16 資訊 最新

    這項工作也支援使用 Model Maker 修改模型套件。如要進一步瞭解如何使用 Model Maker 自訂這項工作的模型,請參閱「自訂手勢辨識工具的模型」頁面。

    手部地標模型套裝組合

    手部地標模型組合會偵測偵測到的手部區域內 21 個手腳座標的本地化關鍵點。訓練時,我們使用約 3 萬張真實世界圖像,以及數個在不同背景上的算繪合成手模型訓練而成。請參閱以下 21 個位置的定義:

    手部地標模型套件包含手掌偵測模型和手持地標偵測模型。手掌偵測模型會將整個輸入圖片的手部區域本地化,而手地標偵測模型則會在手掌偵測模型定義的裁剪手圖片上尋找地標。

    由於手掌偵測模型耗費的時間較多,在影片模式或直播模式下,手勢辨識工具會使用在目前影格中偵測到的手地標定義的定界框,將下一個影格中的手部區域本地化。這麼做可減少手勢辨識工具觸發手掌偵測模型的次數。 只有在手部位置模型無法辨識所需的手部數量不足的情況下,或是手部追蹤失敗時,系統才會叫用手掌偵測模型將手重新本地化。

    手勢分類模型套件

    手勢分類模型組合可辨識下列常見的手勢:

    0 - Unrecognized gesture, label: Unknown
    1 - Closed fist, label: Closed_Fist
    2 - Open palm, label: Open_Palm
    3 - Pointing up, label: Pointing_Up
    4 - Thumbs down, label: Thumb_Down
    5 - Thumbs up, label: Thumb_Up
    6 - Victory, label: Victory
    7 - Love, label: ILoveYou
    

    如果模型偵測到手勢,但無法辨識手勢,手勢辨識工具會傳回「None」的結果。如果模型沒有偵測到手部,手勢辨識工具會傳回空白。

    手勢分類模型組合包含兩個步驟的類神經網路管道,其次是手勢嵌入模型,接著是手勢分類模型。詳情請參閱手勢分類模型資訊卡

    手勢嵌入模型會將圖片特徵編碼成特徵向量,分類模型則是輕量的手勢分類器,將特徵向量做為輸入內容。提供的手勢分類模型組合包含罐頭手勢分類,可偵測上述引入的 7 個常用手勢。您可以訓練自己的自訂手勢分類器,擴充模型套件以辨識更多手勢。詳情請參閱下方的自訂模型一節。

    如果手勢辨識工具同時設有罐頭手勢分類器和自訂手勢分類器,則會優先採用自訂手勢,但假如兩個分類器在所屬類別中辨識出相同的手勢,就會優先選擇自訂手勢。如果只有一個手勢分類能辨識該手勢,手勢辨識工具會直接輸出已辨識的手勢。

    工作基準

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

    模型名稱 CPU 延遲時間 GPU 延遲時間
    GestureRecognizer 16.76 毫秒 20.87 毫秒

    自訂模型

    如要改善或變更在這項工作中提供的模型功能,您可以使用 Model Maker 修改現有模型。與 MediaPipe 搭配使用的自訂模型必須採用 .task 格式,也就是模型套件檔案。建議您先使用 Model Maker 修改這項工作提供的模型,然後再建構自己的模型。

    如要進一步瞭解如何為這項工作自訂模型,請參閱「自訂手勢辨識工具的模型」。