在各類技術(shù)領(lǐng)域和平臺中,感知手部形狀與運動軌跡的能力都是非常重要的,這有助于提高用戶體驗。這個能力既可以用來作為手語理解和手勢控制的基礎(chǔ),也可以結(jié)合增強現(xiàn)實技術(shù)方便地在現(xiàn)實世界之上疊加數(shù)字內(nèi)容與信息。雖然人類生來便擁有穩(wěn)健的實時手部感知,但在計算機視覺領(lǐng)域,此任務(wù)卻頗具挑戰(zhàn)性,這是因為手經(jīng)常會遮住自己或另一只手(例如手指 / 手掌間的遮擋以及握手),并且缺乏高對比度模式供計算機識別。
今天,我們推出了一種全新的手部感知方法(我們已在 6 月的 CVPR 2019 大會上預(yù)覽了此方法),該方法基于 MediaPipe 框架而實現(xiàn),這種開源的跨平臺框架可用于構(gòu)建流水線,進而處理不同模式(如視頻和音頻)的感知數(shù)據(jù)。
此方法利用機器學(xué)習(xí) (ML) 推斷出單幀內(nèi)的 21 個 3D 手部關(guān)鍵點,從而提供手部與手指的高保真追蹤軌跡。目前,最先進的方法主要依靠功能強大的桌面環(huán)境實現(xiàn)推理,而我們的方法卻可在手機端實現(xiàn)實時性能,甚至是擴展到感知多個手部。我們希望將這種手部感知功能推向更多研究和開發(fā)社區(qū),以便涌現(xiàn)出更多富有創(chuàng)意的用例,并推動產(chǎn)生新應(yīng)用和新研究途徑。
利用 MediaPipe 在手機端實現(xiàn) 3D 實時手部感知,我們的解決方案是利用機器學(xué)習(xí)計算視頻幀內(nèi)的 21 個 3D 手部關(guān)鍵點,本圖中以灰度表示深度
用于手部追蹤和手勢識別的機器學(xué)習(xí)流水線
我們的手部追蹤解決方案采用 ML 流水線,該流水線包含下列共同工作的模型:
1.手掌檢測模型(稱為 “BlazePalm”),用于對整個圖像進行操作并返回定向的手部邊界框。
2.手部關(guān)鍵部位模型,用于對手掌檢測模型所定義的裁剪圖像區(qū)域進行操作,并返回高保真度的 3D 手部關(guān)鍵點。
3.手勢識別器,用于將先前計算出的關(guān)鍵點結(jié)構(gòu)分類為一組離散手勢。
此架構(gòu)類似于我們近期公布的面部網(wǎng)格 ML 流水線所用架構(gòu),以及其他用于姿勢估測的架構(gòu)。通過為手部關(guān)鍵部位模型提供精確裁剪的手掌圖像,我們可以大幅降低對數(shù)據(jù)增強(例如旋轉(zhuǎn)、平移和縮放)的需求,讓網(wǎng)絡(luò)將其大部分容量用于提升坐標(biāo)預(yù)測精度。
手部感知流水線概覽
BlazePalm:實時手部 / 手掌檢測
為檢測初始手部位置,我們采用一種稱為 BlazePalm 的單發(fā)檢測模型,并針對移動端的實時使用情況對其進行了優(yōu)化,優(yōu)化方式與 BlazeFace(同樣可在 MediaPipe 中 獲?。╊愃?。手部檢測是一項頗為復(fù)雜的任務(wù):我們的模型必須適應(yīng)各種手部尺寸,因此相對于圖像幀,它擁有更大的檢測范圍(約為其 20 倍),并能檢測出被遮擋和自遮擋的手部。人臉具有高對比度(例如眼睛和嘴巴區(qū)域),但手部缺少這樣的特征,因此我們很難僅憑視覺特征實現(xiàn)可靠的手部檢測。相反,提供手臂、身體或人體特征等額外背景有助于提升手部定位的精度。
我們的解決方案使用不同策略來攻克上述挑戰(zhàn)。首先,我們并未訓(xùn)練手部檢測器,而是訓(xùn)練手掌檢測器,原因是相較于檢測具有關(guān)節(jié)和手指的手部,估算手掌和拳頭等固定對象的邊界框要簡單得多。此外,由于手掌的尺寸較小,即使在雙手自遮擋的情況(如握手)下,非極大值抑制算法亦能表現(xiàn)出色。同時,我們使用方形邊界框(即 ML 術(shù)語中的錨點)來模擬手掌,并忽略其他高寬比,從而將錨點數(shù)降低 300% 至 500%。其次,即使是針對小尺寸對象,我們?nèi)匀焕镁幋a - 解碼特征提取器來感知更大場景的背景(與 RetinaNet 方法類似)。最后,我們將訓(xùn)練過程中的 焦點損失降至最低,從而支持因高縮放方差而產(chǎn)生的大量錨點。
利用上述技術(shù),我們在手掌檢測中取得 95.7% 的平均精度。如果使用常規(guī)的交叉熵損失且不使用解碼器,則得出的基線僅為 86.22%。
手部關(guān)鍵部位模型
在對整個圖像進行手掌檢測后,我們隨后使用手部關(guān)鍵點模型,在檢測到的手部區(qū)域內(nèi)通過回歸對 21 個 3D 手關(guān)節(jié)坐標(biāo)執(zhí)行精確的關(guān)鍵點定位,即直接預(yù)測坐標(biāo)。該模型學(xué)習(xí)一致的內(nèi)部手勢表征,即使對部分可見和自遮擋的手部,也能表現(xiàn)出穩(wěn)健性。
為獲取實況數(shù)據(jù),我們手動標(biāo)注了約 3 萬張包含 21 個 3D 坐標(biāo)的真實圖像,如下圖所示(如果存在對應(yīng)的坐標(biāo),則從圖像深度圖中提取 Z 值)。為涵蓋更多可能出現(xiàn)的手勢并對手部幾何性質(zhì)提供更多監(jiān)督,我們還在各種背景下渲染出手部的優(yōu)質(zhì)合成模型,并將其映射為相應(yīng)的 3D 坐標(biāo)。
然而,純合成的數(shù)據(jù)很難適用于自然場景。為解決此問題,我們采用了混合訓(xùn)練架構(gòu)。下圖展示高級模型訓(xùn)練圖。
用于手部追蹤網(wǎng)絡(luò)的混合訓(xùn)練架構(gòu)。裁剪的真實照片與渲染的合成圖像均用作預(yù)測 21 個 3D 關(guān)鍵點的輸入
下表根據(jù)訓(xùn)練數(shù)據(jù)的性質(zhì)對回歸精度進行了總結(jié)。若混用合成數(shù)據(jù)和真實數(shù)據(jù),則可以顯著提升性能。
手勢識別
預(yù)測出手部骨架后,我們使用一種簡單算法來推導(dǎo)手勢。首先,關(guān)節(jié)的彎曲角度決定每根手指的狀態(tài)(彎曲或伸直)。隨后,我們將這組手指狀態(tài)映射為一組預(yù)定義的手勢。利用這種直接而有效的方法,我們可以估算出基本的靜態(tài)手勢,同時保證檢測質(zhì)量?,F(xiàn)有流水線支持計算多種文化背景(如美國、歐洲和中國)下的手勢,以及各種手勢標(biāo)志,包括 “非常棒”、握拳、“好的”、“搖滾” 和 “蜘蛛俠”。
通過 MediaPipe 完成實現(xiàn)
借助 MediaPipe,我們可以將這種感知流水線構(gòu)建為模塊化組件的 有向圖,而這些模塊化組件也稱為 “計算單元”(Calculator)。MediaPipe 附帶一組可擴展的計算單元,可用于解決各種設(shè)備和平臺上的模型推理、媒體處理算法和數(shù)據(jù)轉(zhuǎn)換等任務(wù)。而諸如裁剪、渲染和神經(jīng)網(wǎng)絡(luò)計算等單個計算單元可基于 GPU 獨立運行。例如,我們在大多數(shù)現(xiàn)代手機上使用 TFLite GPU 推理。
用于手部追蹤的 MediaPipe 架構(gòu)如下圖所示。該圖包含兩個子圖:一個用于手部檢測,另一個用于手部關(guān)鍵點(即關(guān)鍵部位)計算。MediaPipe 提供一項重要優(yōu)化,即手掌檢測器僅在必要時(極少數(shù)情況)才運行,從而大幅減少計算時間。我們通過從當(dāng)前幀中計算得出的手部關(guān)鍵點,推斷后續(xù)視頻幀中的手部位置,從而實現(xiàn)優(yōu)化,無需在每幀上運行手掌檢測器。為獲得穩(wěn)健性,手部追蹤器模型會額外輸出一個標(biāo)量,用于捕獲手存在且與輸入裁剪圖相應(yīng)對齊的置信度。只有當(dāng)置信度低于特定閾值時,手部檢測模型才會重新應(yīng)用于整個幀。
手部關(guān)鍵部位模型的輸出 (REJECT_HAND_FLAG) 控制手部檢測模型的觸發(fā)時間。得益于 MediaPipe 強大的同步構(gòu)建塊,我們可以實現(xiàn)此行為,進而使 ML 流水線獲得高性能和最佳吞吐量
高效的 ML 解決方案可跨不同平臺和設(shè)備實時運行,并且其復(fù)雜度遠勝于上方的概述圖。為此,我們將對 MediaPipe 框架中的上述手部追蹤和手勢識別流水線進行開源,并附帶相關(guān)的端到端 使用場景和源代碼。如此一來,研究人員和開發(fā)者便可擁有完整的資料,并基于我們的模型對各種新奇想法進行實驗和原型設(shè)計。
未來研究方向
我們計劃使用更穩(wěn)健的追蹤擴展此項技術(shù),擴大能可靠檢測出的手勢數(shù)量,并支持動態(tài)手勢的及時展開。我們相信,發(fā)布這項技術(shù)能夠推動廣大研究人員和開發(fā)者社區(qū)成員提出新的創(chuàng)意和應(yīng)用。
如果您想詳細了解 MediaPipe 的相關(guān)內(nèi)容,請參閱以下文檔:
增強現(xiàn)實
https://ai.googleblog.com/search/label/Augmented%20Reality
CVPR 2019
http://cvpr2019.thecvf.com/
MediaPipe
http://mediapipe.dev/
手部感知功能
https://hand.mediapipe.dev/
面部網(wǎng)格 ML 流水線
https://sites.google.com/corp/view/perception-cv4arvr/facemesh
姿勢估測
https://arxiv.org/abs/1701.01779
單發(fā)檢測模型
https://arxiv.org/abs/1512.02325
BlazeFace
https://arxiv.org/abs/1907.05047
非極大值抑制算法
https://www.coursera.org/lecture/convolutional-neural-networks/non-max-suppression-dvrjH
錨點
https://www.coursera.org/lecture/convolutional-neural-networks/anchor-boxes-yNwO0
RetinaNet
https://arxiv.org/abs/1612.03144
焦點損失
https://arxiv.org/abs/1708.02002
平均精度
http://cocodataset.org/#detection-eval
各種設(shè)備和平臺
https://github.com/google/mediapipe/blob/master/mediapipe/docs/examples.md
TFLite GPU 推理
https://tensorflow.google.cn/lite/performance/gpu_advanced
投稿/爆料:tougao@youxituoluo.com
稿件/商務(wù)合作: 六六(微信 13138755620)
加入行業(yè)交流群:六六(微信 13138755620)
元宇宙數(shù)字產(chǎn)業(yè)服務(wù)平臺
下載「陀螺科技」APP,獲取前沿深度元宇宙訊息