當前位置:
首頁 > 知識 > 谷歌開源基於 ML 的手部跟蹤演算法:手機端實時檢測,多個手勢同時捕捉

谷歌開源基於 ML 的手部跟蹤演算法:手機端實時檢測,多個手勢同時捕捉

就在不久前,Google 人工智慧實驗室宣布,他們在「實時手部跟蹤」方面取得了新的進展,並將這項新技術運用在了 MediaPipe 中,這也是 AI 計算機視覺任務的一大突破。這一技術不光可以在手機上實現實時捕捉性能,甚至可以同時對多個手的動作進行跟蹤。目前,Google 已經將該項目開源,並且發布了相關博客介紹了這項技術,AI 開發者將其內容整理編譯如下。

概述

能夠對手的形狀和運動軌跡進行感知是改善用戶在不同的技術領域和平台上的體驗的一個重要組成部分。例如,它可以實現手語理解和手勢控制,還可以使數字內容和信息疊加在增強現實(AR,https://ai.googleblog.com/search/label/Augmented Reality )的物理世界之上。雖然對我們來說這個能力是天生的,但強大的實時手部感知是一項極具挑戰性的計算機視覺任務,因為手往往會自我遮蓋或相互遮擋(例如手指/手掌之間的遮蔽或者握手),而且手部之間也缺乏高對比度。

我們現在發布了一種新的手部感知方法,並且在 6 月的 CVPR 2019 大會上,我們已經對該方法開放了預覽。在這個方法展示過程中,我們通過 MediaPipe——一個開放源碼的跨平台框架,來構建了處理視頻和音頻等類型的不同模式感知數據的框架。

該方法通過機器學習(ML)從單個幀中推斷出一隻手的 21 個 3D 關鍵點,從而提供了高保真的手部和手指跟蹤。目前最先進的方法主要依靠強大的桌面環境進行推理,而我們的方法可以在手機端實現這個實時性能,甚至還可以擴展到對多個手的同步跟蹤。

我們希望通過提供該手部感知功能給廣泛的研究和開發社區,能夠有利於大家創造出更多全新的用例,同時激勵更多新應用程序和新研究途徑的出現。

圖 1 通過 MediaPipe 在手機上進行實時 3D 手部感知。我們的解決方案是使用機器學習從一個視頻幀計算手的 21 個三維關鍵點。圖中深度通過顏色灰色程度表示。

用於手跟蹤和手勢識別的機器學習架構

我們的手部跟蹤解決方案使用了一個機器學習架構,該架構由幾個模型共同組成:

掌上檢測器模型(稱為 BlazePalm)。它對整個圖像進行操作,並返回一個定向的手部邊界框;

手部標誌模型。它在掌上探測器定義的裁剪圖像區域上操作,並返回高保真的 3D 手部關鍵點;

手勢識別器,它將先前計算的關鍵點配置分類為一組離散的手勢。

這種架構類似於我們最近發布的 face mesh ML 模型(https://sites.google.com/view/perception-cv4arvr/facemesh),這個模型也被其他人用於的姿態估計中。將精確裁剪的手掌圖像提供到手部標誌模型中,可以大大減少更多數據(例如旋轉、平移和縮放)的需求,從而使網路能夠將其大部分性能用於協調預測精度。

圖 2 手部感知模型整體架構

BlazePalm:實時手部/手掌檢測

為了檢測手的初始位置,我們使用了一個名為 BlazePalm 的單鏡頭檢測器模型(https://arxiv.org/abs/1512.02325)。該模型可用於移動實時檢測,其方式類似於 BlazeFace(https://arxiv.org/abs/1907.05047),這個模型也可以在 MediaPipe 中使用。

手部檢測是一項非常複雜的任務:我們的模型必須要適應不同的手部尺寸,因此它具有相對於圖像幀更大的範圍 (~20x),並且它能夠檢測被遮擋以及自遮擋的手部狀態。

人臉通常具有很高的對比度,例如在眼睛和嘴部區域都有明顯的區別。但由於手部缺乏這樣的特徵,因此我們很難僅從其視覺特徵中可靠地檢測到這些特徵。不過通過提供額外的信息,如手臂、身體或人的特徵,倒是有助於精確的手定位。因此,我們的解決方案使用了不同的策略來解決上述挑戰。

首先,我們訓練了一個手掌檢測器來代替手部探測器,因為推測例如手掌和拳頭這樣剛性物體的邊界框比檢測手指的關節要簡單得多。此外,由於手掌是較小的物體,我們採用了非最大抑制演算法(https://www.coursera.org/lecture/convolutional-neural-networks/non-max-suppression-dvrjH ),該演算法可以在即使雙手自遮擋的情況(如握手)下,也能夠達到很好的工作效果。

同時,手掌還可以使用方形邊界框(在 ML 術語中的錨)來模擬,忽略其他高寬比,從而將錨的數量減少 3-5 倍。其次,我們將適用於更大場景上下文感知中的編碼器—解碼器特徵提取器用於手部感知這樣的小對象中(類似於 RetinaNet 辦法,https://arxiv.org/abs/1612.03144)。最後,我們將訓練期間的焦損降至最低,從而支持由於高度變化而產生的大量錨點。

利用上述技術,我們實現了對手掌的平均檢測精度為 95.7%;而使用常規的交叉熵損失並且在沒有解碼器的情況下,檢測精度基準僅為 86.22%。

手部標誌模型

在對整個圖像進行手掌檢測後,我們隨後的手部標誌模型通過回歸對檢測到的手部區域內的 21 個 3D 手關節坐標進行精確的關鍵點定位,即直接對坐標進行預測。該模型將學習一致的內部手勢表示,甚至對部分可見的手和自遮擋都表現出了魯棒性。

為了獲得實時數據,我們手工標註了 30K 張具有 21 個 3D 坐標的真實手勢圖像,如下圖所示(如果存在對應的坐標,則從圖像深度圖中獲取 Z 值)。為了更好地覆蓋可能的手勢,並提供對手勢的幾何形狀的附加監督,我們還在不同的背景上渲染了一個高質量的合成手部模型,並將其映射到相應的三維坐標中。

圖 3 第一行圖片為對齊的手部通過實時標註傳遞到跟蹤網路;第二行圖片為使用實時標註渲染合成手部圖像。

然而,單純的合成數據很難推廣到更廣泛的領域。為了克服這個問題,我們使用了一個混合訓練模式,下面的圖顯示了一個高級模型訓練圖。

圖 4 手部跟蹤網路的混合訓練模式。裁剪的真實照片和渲染的合成圖像用作輸入,以預測 21 個 3D 關鍵點。

下圖展示了根據訓練數據的性質總結了回歸的準確性。使用合成數據和真實數據都可以顯著提高模型的性能。

圖 5 使用合成數據和真實數據對模型性能的影響結果

手勢識別器

在預測的手部骨架之上,我們應用一種簡單的演算法來推導手勢。首先,每個手指的狀態,例如彎曲或豎直,是由關節的累積角度決定的。於是,我們將一組手指狀態映射到一組預定義的手勢上。這種簡單但有效的技術可以使我們在保證檢測質量的情況下來估計基本的靜態手勢。現有的架構支持多種文化的手勢計數,如美國、歐洲和中國,以及各種手勢標誌,包括「拇指向上」、緊握拳頭、「OK」、「搖滾」和「蜘蛛俠」。

圖 6 不同手勢識別結果

通過 MediaPipe 實現

通過使用 MediaPipe,我們可以將該感知架構建模稱模塊化組件的有向圖(https://en.wikipedia.org/wiki/Directed_graph),稱為 Calculators(計算器)。Mediapipe 附帶了一組可擴展的計算器,可用於解決各種設備和平台的模型推理、媒體處理演算法以及數據轉換等任務。而像裁剪、渲染和神經網路計算這樣的單個計算器,可以獨立在 GPU 上執行。例如,我們在大多數現代手機上採用 TFLite GPU 推理。

我們用於手部跟蹤的 MediaPipe 架構圖如下所示。該圖由兩個子圖組成——一個用於手檢測,另一個用於手部關鍵點(即標誌性)計算。MediaPipe 提供的一個關鍵優化是只在必要時運行掌上檢測器(因此該檢測器的運行頻率很低),從而節省了大量的計算時間。

我們通過從當前幀中計算所得的手部關鍵點來推斷後續視頻幀中的手部位置實現手部跟蹤,從而無需在每個幀上運行掌上檢測器。為了獲得魯棒性,手部跟蹤器模型輸出一個額外的標量,以獲取一隻手在輸入裁剪中存在併合理對齊的置信度。只有當置信度低於一定的閾值時,才能將手部檢測模型重新應用到整個幀中。

圖 7 手部標誌模型的輸出(REJECT_HAND_FLAG)控制何時觸發手部檢測模型。這種行為是通過 MediaPipe 強大的同步構建塊實現的,從而實現機器學習架構的高性能和最佳吞吐量。

該高效的機器學習解決方案可以實時運行,並且跨越各種不同的平台和形式因素。它所包含的複雜性要比上面的簡化描述要複雜得多。為此,我們將在 MediaPipe 框架中開源上述手部跟蹤與手勢識別方法,並附帶相關的端到端使用場景和源代碼(https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md),這為研究人員和開發人員提供了一個完整的堆棧,基於我們的模型可以對新思想進行實驗和原型設計。

未來方向

我們計劃通過更強大和穩定的跟蹤來擴展這項技術,擴大我們能夠可靠檢測的手勢數量,並支持動態手勢的及時展開。我們相信,發布這項技術可以激發廣大研究和開發人員的新創意和應用。我們很期待看到你的創新!

*MediaPipe

MediaPipe 是一個跨平台框架,用於構建應用於機器學習流程中的多模態(例如,視頻,音頻,任何時間序列數據)框架。通過使用 MediaPipe,我們可以將感知流程構建為模塊化組件的圖形,包括:推理模型(例如,TensorFlow,TFLite)和媒體處理功能。

MediaPipe 開源地址:https://github.com/google/mediapipe/

https://ai.googleblog.com/2019/08/on-device-real-time-hand-tracking-with.html

手勢識別開源地址:

https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

利用事件相機將模糊視頻還原成高速清晰視頻
阿里開源新一代人機對話模型 ESIM:準確率打破世界紀錄,提升至 94.1%!

TAG:AI研習社 |