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