手勢辨識工作指南

MediaPipe 手勢辨識器工作可讓你即時辨識手勢,以及 可提供系統辨識的手勢結果,以及 一隻手。您可以使用這項工作,辨識 以及叫用與這些手勢對應的應用程式功能。

這項工作會透過機器學習 (ML) 模型對圖片資料執行,並且接受 靜態資料或連續串流這項工作會在 圖片座標, 世界座標中的手部地標, 慣用手 (左/右手) 以及多隻手的手勢手勢類別。

試試看吧!

開始使用

按照下列任一實作指南,開始使用這項工作: 目標廣告平台這些平台專屬指南將逐步說明 使用建議模型實作這項工作,並提供程式碼範例 設定為建議的設定選項:

,瞭解如何調查及移除這項存取權。

任務詳細資料

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

功能

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

設定選項

這項工作包含下列設定選項:

選項名稱 說明 值範圍 預設值
running_mode 設定任務的執行模式。在架構中 模式:

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

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

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 不適用 不適用

    模型

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

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

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

    手部地標模型套裝組合

    手部地標模型組合偵測出 21 個手指的銷售關鍵點本地化 偵測到手部區的座標用來訓練模型 大約 3 萬張真實圖像,以及多個合成的手部 疊加在不同背景上的模型定義如下:

    這個手勢的模型組合包含手掌偵測模型 手勢偵測模型手掌偵測模型會將 取得完整輸入圖片的雙手之後,手部地標偵測模型 裁剪的手部圖片上的地標 (由手掌偵測模型定義)。

    由於手掌偵測模型花費更多時間,因此在影片模式或即時模式下 串流模式,手勢辨識器會使用偵測到的手定義的定界框 目前畫面的地標,可用於本地化下一個畫面的地標。 相框。這可減少手勢辨識器觸發手掌偵測模型的次數。 只有當手部地標模型無法辨別出足夠的需求時 手部數量或手部追蹤失敗,手掌偵測模型 來重新本地化。

    手勢分類模型套裝組合

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

    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 修改此工作提供的模型 再自行建構

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