【VR】详解 Facebook Oculus团队的手势追踪系统——MegaTrack
- 一、前言
- 二、論文分析
- 1、這篇論文講的啥?
- 2、MegaTrack和谷歌同類產品的對比:
- 3、實現過程(共3部分)
- 3.1、DetNet——檢測手部圖像
- 3.2、KeyNet——生成手部關鍵點(2.5D)
- 3.3、Hand Kinematic Model——手部運動模型
- 4、MegaTrack實際運行流程
- 5、本論文中,MegaTrack的缺點
- 遺留的問題
一、前言
SIGGRAPH是什么?
-
Special Interest Group for Computer GRAPHICS,計算機圖形圖像特別興趣小組,成立于1967年,可以看作一個論壇或者是會議,內容主打電腦繪圖和動畫制作。
-
絕大部分圖像相關廠商和游戲制作者都會每年在這個會議上發布自己的作品和科研成果。因此,SIGGRAPH在圖形圖像技術,計算機軟硬件以及CG等方面都有著相當的影響力。
論文地址:https://research.fb.com/publications/megatrack-monochrome-egocentric-articulated-hand-tracking-for-virtual-reality/
二、論文分析
1、這篇論文講的啥?
現在市面上的VR游戲機,都需要手柄一類的操作桿來獲取玩家手部動作和實時坐標,如下圖:
而本篇論文中所提到的手勢追蹤,則不要手柄操縱桿之類的外設:
他這篇論文講的就是——手勢追蹤。而他這個手勢追蹤系統的名稱,叫做MegaTrack。
2、MegaTrack和谷歌同類產品的對比:
谷歌也有一個類似的手勢追蹤系統——MediaPipe Hand。
- MediaPipe Hand采用的是一個攝像頭(非3D攝像頭/深度攝像頭),雖然一個攝像頭無法展示場景的深度,但是谷歌采用了2.5D技術去近似模擬3D。
- 2.5D是啥什么?在攝像頭輸入圖像中,在大部分的情況下將手腕處或是手掌中心會被設為相對深度的基準點,也就是這個位置的深度視為零。這種表示相對深度的方法被統稱為2.5D表示法。
- 當然,只有一個固定的攝像頭是肯定無法提取深度信息的,所以團隊使用神經網絡來進行訓練,他們是用深度相機為每一幀圖像打標簽(深度信息),之后測試集使用的是普通相機。
有了深度的基準點,接下來的問題變成2.5D表示法要怎么近似真實3D位置?,F在我們有:
2.5D 映射為 3D 過程如下圖:
再說本文的主角MegaTrack:
- MegaTrack采用了四個攝像頭用來感知手部姿態:
- 使用者的手至少會落在兩顆相機的視野中:
由于MegaTrack使用了4個攝像頭,所以相比于谷歌的解決方案,具有以下優勢:
3、實現過程(共3部分)
MegaTrack的實現步驟,可以分為三大步:
系統的實現思路:
- 使用普通攝像頭+神經網絡來達到深度攝像頭的效果,獲取三維坐標,再進行手部建模。
3.1、DetNet——檢測手部圖像
- 團隊使用了260萬張照片來訓練DetNet時別取手部圖像,學習率為0.001。
DetNet層的輸入:
- 四個相機的原始視頻圖像;
- 之后,在原始視頻中識別出手和附近的圖像,之后將圖像裁剪成正方形(方便網絡計算);
最終DetNet層輸出:
- 只包含手的正方形視頻。
3.2、KeyNet——生成手部關鍵點(2.5D)
KeyNet使用了200萬張圖片來訓練網絡,學習率為0.025,來預測手部關鍵點的2.5D坐標。
- 注意,他之所以只生成2.5D坐標,是因為普通魚眼相機只能生成2D坐標,即使團隊使用神經網絡為每個像素點附加該點的深度信息(增加了一維熱圖)并最終能做到手部模型的最終生成,但是這種方式并沒有真正獲取像素點的3D坐標,而這種2D坐標+相對深度坐標的方法,叫做2.5D近似法。
- 換句話說,如果現在深度相機和普通相機一樣又便宜又耐用有靈巧,那么,也就沒有KeyNet的存在意義了。
KeyNet層的輸入:
- 輸入:1、經過初步處理的手部影像;2、21個用于參考的3D手勢點;
- 注意:這21個點來源自上一輪的第三步驟——Hand Kinematic Model,使用上一輪生成的手部模型,來輔助下一輪的輸入。
KeyNet層的輸出:
- 輸出21個我們剛剛預測出來的2.5D 手部關鍵點坐標,具體表現形式為1、2D熱圖和2、對應的一維深度熱圖:
補充,21個參考點的輸入是KeyNet一大特色:
- MegaTrack KeyNet輸入的這組21個3D 點最大的效果在于穩定模型的預測,主要解決以下擾動:
- 當手在重疊的相機視圖之間移動時,預測的質量會降低;
- 手指交叉咬合時;
- 在手部或者VR眼鏡出現強烈抖動;
- 個人理解,把我上一輪生成的關鍵點用來輔助下一輪關鍵點的預測。畢竟有上一輪的參考點,就可以重點觀察新關鍵點的特點和分布。
- 對于KeyNet來說,他最終輸出的21個點,其中90%其實還是來自于上一步輸入的3D點,只有剩下的10%的關鍵點的預測才是由KeyNet新生成的,系通過這種方法來優化計算速度,不至于每幀都產生大量的計算。
3.3、Hand Kinematic Model——手部運動模型
Hand Kinematic Model的輸入:
- Hand Kinematic Model使用前兩幀KeyNet輸出的21個2.5D 的手部關鍵點,來生成本幀的手部3D模型;
- 對于輸入的兩幀數據,將計算兩幀之間的殘差,來優化第三幀的生成。
具體優化了三個殘差項:
1、將前兩幀的21個3D點的前2D數據投影回相機空間,與這一幀KeyNet預測的2D 位置坐標越接近越好;
2、計算前兩幀21個3D點的相對深度,與這一幀KeyNet預測的depth distance越接近越好;
3、預測這一幀與上一幀的點越接近越好,即smooth term。(注意,這里可不是這一幀和前兩幀做對比了,而是只和上一幀做對比)
Hand Kinematic Model的輸出:
- 最終生成由26個自由度組成的3D的手部模型(這一層最終成像);
- 并且保存這個手模的scale,保存使用者的信息。
另外,每當一個新的使用者使用該設備,整個系統會先進入kinematic model scale模塊,在預存的手模庫里查看是否是該設備的老用戶,并進行手部姿態的校正。
4、MegaTrack實際運行流程
以下流程是根據論文中提到的內容和我自己的理解結合而來:
5、本論文中,MegaTrack的缺點
遺留的問題
1、至于為什么不直接用VR眼鏡上的四個攝像頭生成3D坐標?
具體原因論文里沒說,我也沒查到。個人猜測是這樣生成的3D坐標效果不好?所以最終還是要考先模擬出2.5D坐標,之后再往3D上面靠。3、什么非要使用魚眼攝像頭?因為更精確么?
因為魚眼攝像頭的視野足夠大,如果不用魚眼手很容易超出視野范圍8、如何完成的手部追蹤???
總結
以上是生活随笔為你收集整理的【VR】详解 Facebook Oculus团队的手势追踪系统——MegaTrack的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity超链接:支持点击事件,下划线以
- 下一篇: 【操作系统】概念、功能、特征、分类、运行