0
早在語言出現之前,人類就習慣使用肢體和手勢,這種近乎本能的溝通方式,來互相交流。
在機器被發明之后,手勢因具備鍵盤、鼠標、觸屏等交互方式所無法替代的天然優勢,仍然有諸多應用場景。
在電影《鋼鐵俠》里面,主角一揮手,憑空推拉拖拽操控虛擬物體,簡直不要太炫酷了。

做到像電影中那樣高精度、穩定性好的手勢識別,需要硬件和算法的加持,兩者缺一不可。
手勢識別都有哪些常見的硬件方案?工程師是如何用 AI 算法來優化識別效果的?常見的手勢識別應用場景都有哪些?接下來,就讓 Rokid R-Lab 算法工程師張兆輝為我們娓娓道來。
手勢識別的原理并不復雜,它通過硬件捕獲自然信號,就像相機捕獲圖片信息那樣,然后通過軟件算法計算得到手的位置、姿態、手勢等,處理成計算機可以理解的信息。
目前手勢識別主要有以下 3 種硬件方案:
常見的又分彩色攝像頭方案和深度攝像頭方案。
彩色攝像頭方案只需要一個普通攝像頭,捕捉拍攝一張彩色圖片,通過 AI 算法得到圖片中手的位置、姿態、手勢等信息。優勢是設備成本低、數據容易獲取。
目前這種基于單目 RGB 的手勢識別在學術界和工業界研究的比較多,商用的方案商有英梅吉、ManoMotion、虹軟等。
還有一些人工智能開放平臺同樣提供這種方案。比如騰訊 AI 開放平臺提供靜態手勢識別和手部關鍵點,百度 AI 開放平臺和 Face++ 提供靜態手勢檢測。以及一些開源項目比如 openpose 和 Google Mediapipe 等。
openpose的手勢關鍵點檢測
相比深度攝像頭方案,彩色攝像頭方案缺乏深度信息,受光照影響非常大,夜間無法使用,穩定性和精度都沒有深度相機方案好。
這個方案是通過深度攝像頭來獲取帶有深度信息的圖片。優勢是更容易獲取手部的 3D 信息,相對應的通過 AI 算法得到的手部 3D 關鍵點也更加準確和穩定。但缺點是需要額外的設備、硬件成本比較高。
深度相機又分三大類:ToF、結構光和雙目成像。
其中,ToF 和結構光得到的深度圖比較準,但成本比較高,多用于手勢的科研領域,商用的比較少,比如微軟 HoloLens、極魚科技 ThisVR。
雙目成像因為視場角大,幀率高,很適合用來做手勢識別,唯一缺點就是因為成像原理的限制,使得整個雙目相機模組的體積對比 ToF 和結構光來說大很多。
采用雙目成像的公司以目前最大的手勢識別公司 Leap Motion 為代表,該公司使用的是主動雙目成像方案,除了雙目攝像頭外還有三個補光單元,可捕獲雙手 26DoF、靜態手勢、動態手勢等。此外,Leap Motion 還提供了非常完整的 SDK,對各個平臺支持都不錯(除手機平臺)。
Leap Motion的演示
國內也有在做雙目手勢的公司,比如 uSens Fingo 是基于主動雙目的視覺方案, 提供雙手 26DoF、靜態手勢、動態手勢識別等功能。相比于 Leap Motion,uSens 更專注于對手機以及其他低功耗嵌入式設備的支持。此外還有微動 Vidoo Primary 也有基于雙目的手勢解決方案。
毫米波雷達方案的代表有谷歌推出的一款特殊設計的雷達傳感器—— Project Soli ,它可以追蹤亞毫米精準度的高速運動,但目前尚處在實驗室階段。

從其公布的演示來看,目前可以識別個別指定的手勢,并在小范圍內識別微小精確的手勢操作,很適合發揮人類精準的小肌肉運動技能(fine motor skills)。但缺點是有效范圍太小,無法得到手的所有自由度。
Project Soli的演示
數據手套是指在手上帶一個內置傳感器的特制手套,通過傳感器檢測手指的屈伸角度或位置,再根據 Inverse kinematics(逆運動學)來計算出手的位置。
一般用到的傳感器有彎曲傳感器、角度傳感器、磁力傳感器等。
彎曲傳感器和角度傳感器類似都是可檢測手指的彎曲程度,我們以 DEXMO 力反饋手套為例,該手套使用旋轉傳感器捕捉 11 個自由度的手部運動,包括每根手指的伸展和彎曲,以及大拇指一個額外的旋轉自由度。

此方案對手的局部動作檢測很準,而且不受視覺方案中視野范圍的限制。但缺點是手上必須戴手套不方便,且只能檢測局部的手指動作,不能定位手部整體的位置角度。若想要檢測手的位置角度, DEXMO 需配合其他 6 自由度追蹤器使用。
當然 DEXMO 的最大賣點其實不是手勢識別,而是逼真的觸覺反饋(haptics)+手勢識別。手勢識別+觸覺反饋的方案肯定會是以后人機交互的重要一環。最近收購 Leap Motion 的 UltraHaptics 就是一家做觸覺反饋的公司。
還有一種用磁力傳感器的——trakSTAR 電磁式空間位置追蹤系統。通過在手上貼的磁力傳感器的磁場變化,來確定傳感器的位置角度,再根據反運動學確定手的具體位置。

trakSTAR使用示意圖
此方案需在手部貼 6 個磁力傳感器(5個指尖+1個手背),并在面前放一個磁力發射器。磁力發射器會在一定范圍內形成一個特殊的電磁場,然后根據傳感器在電磁場中不同位置角度檢測到的電磁場強度的不同,來推斷出指尖及手掌的位置角度。再通過反運動學,確定所有手部關節點的位置。
此方案的缺點是有效使用范圍太小,價格太貴,適用場景太少。優點是精度很高,穩定性很好,并且可獲得手部所有自由度。
目前此方案還只有純科研在用,最近幾個學術界公開的手勢數據集 FHAB、 BigHand 都是用此設備采集的。
FHAB 數據集中的示意圖
通過以上科普,相信大家對手勢識別的硬件方案有了初步的了解。但要想做好手勢交互,僅硬件方案是不夠的,還需要專業算法的支持。
當我們通過攝像頭得到深度圖后,下一步就是把深度圖輸入給算法,算法可以輸出我們手部所有關鍵點的 3D 位置。
手部關鍵點也可以理解為手部骨架的關節點,通常用 21 個 3D 關鍵點來描述。每個 3D 關鍵點有 3 個自由度,那么輸出維度就是 21*3。所以我們常常用一個 21*3 維的矢量來描述,如下圖:

可視化后的21個手部3D關鍵點
目前學術界已經提出各種算法用于解決“基于深度的手勢姿態估計問題“,這些算法大體可以分成模型驅動(model-driven)和數據驅動(data-driven)兩種方式。
此類算法通常是預先用手部 pose(pose 指位姿參數或節點位置,后文將統稱為 pose)生成一系列手的幾何模型,并建立一個搜索空間(所有可能的手勢幾何模型的集合),然后在搜索空間內找到與輸入深度圖最匹配的模型。
此時,模型對應的參數就是所求的 pose。此類算法屬于生成式方法(Generative Approaches),我們以下圖中的論文為例:

模型驅動類算法通常需要設計一種方式把 pose 轉換成對應的幾何模型。
此論文用了 linear blend skinning(一種骨骼蒙皮動畫算法):意思就是給骨架蒙上一層皮膚,并讓皮膚跟隨骨骼運動一起變化,多用于動畫領域。
先把 pose 轉換成對應的 mesh(下圖左側),在進一步轉換成光滑曲面模型(下圖右側)。我們可以理解為 pose 是自變量,幾何模型可由 pose 算出,且幾何模型與 pose 一一對應。
手部幾何模型
輸入的手部深度圖可轉化為點云, 此點云就相當于在真實的手表面上采集到的一些 3D 點,如下圖中的紅點和藍點:

這樣就可以定義損失函數為點云中的點到模型表面的距離(上圖中的紅線),以此描述深度圖和pose的相似度。損失函數的輸入是深度圖和 pose,輸出是差異度。損失函數的輸出值越小,說明輸入的深度圖和pose越相似。
因此,只要在搜索空間中找到令損失函數最小的 pose 即為所求的pose。但因搜索空間不能寫成解析形式,沒法一次性求出損失函數的最小值,通常只能用數值計算方法,如PSO,ICP等,不斷迭代計算得到最優解。
上圖從左到右展示了迭代初期到迭代結束時的 pose,這種迭代的數值解法通常對初始化要求較高,若初始化的不好,則需要很長時間才能迭代收斂,還有可能無法收斂到全局最小值(因為損失函數是非凸函數),所以算法實現時,通常利用上一幀的pose來初始化當前幀的計算。
這種模型驅動類方法需要手工設計幾何模型和損失函數。簡單的幾何模型計算量小,復雜的幾何模型準確度高。通常設計模型時需要在準確度和性能之間做權衡。

不同的手部幾何模型
模型驅動類的算法優勢是不需要任何訓練數據,只要設計的好,寫完就可以直接用。 缺點是需要手工設計模型,計算量較大,容易誤差累計導致漂移,對初始化要求高,通常只能用在手勢追蹤領域。
此類算法是指利用收集數據中訓練樣本與其對應的標簽關系,讓機器學習一個從樣本到標簽的映射。 此類算法屬于判別式方法(Discriminative Approaches)。

這樣的機器學習算法有很多,可以是早期使用的隨機森林,SVM 或是最近研究的火熱的神經網絡等。此類方法的優點是不需要設計復雜的模型,缺點是需要大數據。但現在大數據時代數據量已經不是問題,這種數據驅動的方式已經成為目前的主流研究方向。
早期學術界研究手勢關鍵點回歸的經典方法有 Cascade regression, Latent Regression Forest 等。近些年研究主要集中在各類神經網絡如:DeepPrior 系列、REN、pose guided、3D-CNN、Multi-View CNNs、HandPointNet、Feedback Loop 等。
由于此處討論的用于手勢的神經網絡與普通的圖的神經網絡并無本質差異,而神經網絡的科普文章已經很多,這里就不做科普了,我們僅挑幾個有代表性的網絡結構介紹一下:
DeepPrior:網絡結構大體如下圖,通過初始網絡得到粗略的 pose,再用 refine 網絡不斷優化, 并且在最后的全連接層前加了一個低維嵌入,迫使網絡學習把特征空間壓縮到更低維度。 此網絡后續有更優化的版本 DeepPrior++。

Feedback Loop:網絡結構如下圖,此網絡在預測 pose 之后,反過來用 pose 生成深度圖,并與輸入的深度圖一起預測更優的 pose,此 pose 又可用來生成更優的深度圖,以此迭代循環優化pose。

3D CNN:網絡結構如下圖,此網絡把2D深度圖上用像素的描述的深度信息,以TSDF的方式轉化為體素(3D的像素),并用3D 卷積代替了普通的2D卷積。
此處最大的貢獻就是在網絡結構上從2D走到了3D,因為傳統2D卷積網絡是為2D圖像設計的,并不一定適合3D信息的提取,而用3D卷積網絡則更容易獲取3D特征,也就更適用于3D手部關鍵點回歸的問題。

HandPointNet:網絡結構如下圖,此網絡輸入時把深度圖轉成點云,然后用 PointNet 做手部 3D 關鍵點回歸。
HandPointNet的主要貢獻是首次把PointNet用在了手勢關鍵點回歸上,其中的PointNet是很有代表性的網絡。PointNet 首次用 3D 點云來作為網絡輸入而不是 2D 圖片。
PointNet 比上一個介紹的 3DCNN 更進一步探索了在 3D 空間中的神經網絡架構,以及如何更有效的提取 3D 特征,PointNet后續有更優化的版本PointNet++。

手勢識別的四大應用場景
上述我們介紹了常見的手勢識別硬件方案與算法模型,那么手勢識別真正落地的應用場景都有哪些呢?
很多人或許認為手勢交互還只是停留在科幻電影的概念而已,接下來,我們以產品應用為例,來介紹一些已經商業落地或潛在的落地場景。
以 Leap Motion 為代表的很多公司都在做 VR+ 手勢。 VR 強調沉浸感,而手勢交互可以極大的提升 VR 使用中的沉浸感。所以 VR+ 手勢這個落地方向很靠譜,等 VR 得到普及后,定會改變人類的娛樂方式。
此類代表產品:LeapMotion、uSens、極魚科技等。

以 HoloLens 為代表的很多公司都在做 AR 眼鏡。AR 眼鏡可能會脫離實體的觸屏和鼠標鍵盤這些輸入工具,取而代之的輸入是圖像和語音等。此時手勢交互便必不可少,不過 AR 還處在比 VR 市場更早期的階段,需繼續積累技術,等待市場成熟。
此類代表產品有:HoloLens、Magic Leap、Rokid Glass、Nreal、Project North Star、亮風臺等。
Leap Motion Project North Star 的演示片段
以 Sony Xperia Touch 為代表的投影儀+手勢識別,將屏幕投影到任何平面上,再通過手勢識別模擬觸屏操作。
這里用到的手勢識別比較簡單,基本只要識別單點多點。但使用中手很容易擋住投影儀顯示的屏幕,而且還有顯示清晰度的問題。此場景可能更多的是一種探索,落地的可能性較小。

不過可以開個腦洞:如果把這里的平面手勢識別改成空中手勢識別,平面投影改成全息 3D 投影,那就可以實現文章開頭提到《鋼鐵俠》里的全息控制臺了。
空中手勢識別已經能做到了,但目前還沒有真正的全息投影的技術,只有一些偽全息投影。如反射式和風扇式的偽全息投影。
反射式偽全息投影只是把物體的影像反射到反射面板(塑料板)后成一個虛像。因板子透明,所以看起來似乎是在空中直接成像。風扇式偽全息投影是利用人眼的視覺暫留現象,讓畫面看起來像是直接在空中成像。
反射式偽全息投影
風扇式偽全息投影
這些偽全息投影的最大問題就是沒法用手和虛擬影像交互。想要實現《鋼鐵俠》里面的全息工作臺,最有可能的方式是在 AR 眼鏡里面實現,只要把計算得到的手勢位姿和顯示設備聯合標定對齊,就可以實現手和虛擬影像的交互了。
此類代表產品有:Xperia Touch、光影魔屏等。
車載手勢指的是在開車時用手勢交互控制中控臺的一些選項按鍵等。相比于傳統方式,手勢的優勢是不用每次都去按按鈕或戳屏幕,更智能方便。
在使用觸屏時,司機需要看著屏幕才知道按鈕在哪,看屏幕這一動作,有極大的安全隱患。 而手勢可以配合語音反饋直接操作,不需要盯著屏幕。
車載手勢可以一定程度提高駕駛安全性,但它也有一些缺點,在空中做手勢容易手累, 再加上手勢識別的準確性和延遲問題,遠不如直接用手過去轉轉按鈕、點點屏幕來的方便。所以目前業內基本都采用的都是傳統方式+手勢操作輔助的方式。
此類代表產品有:寶馬7系、拜騰汽車、君馬SEEK 5等。

AI 時代,語音識別和手勢識別等交互方式的加入,讓我們與機器有了更多互動的可能。語音交互在人工智能時代已經有了先發優勢,正在被逐漸落地并且有望大規模應用。而從手勢識別的落地場景來看,這種交互方式還處在行業早期階段。
但可以預見的是,手勢交互是未來人機交互必不可少的一部分,Rokid 一直致力于 AI 人機交互的研究與探索,代表產品有智能音箱以及 AR 眼鏡,期望能在 AI 時代為用戶帶來自然友好的交互體驗。
在你的想象中,還有哪些場景能用到手勢交互呢?歡迎大家留言討論。雷鋒網
作者介紹:張兆輝,浙江大學竺可楨學院求是科學(物理)本科畢業,主要研究方向包括手勢識別,姿態估計,立體視覺,深度學習等,現就職于 Rokid R-Lab 圖像算法工程師,負責手勢算法研發等相關工作。
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。