1. 程式人生 > >為了好好看球,學霸們用深度學習重建整個比賽3D全息圖

為了好好看球,學霸們用深度學習重建整個比賽3D全息圖

計算 提取 輪廓 遊戲引擎 國足 G1 體育 分割 大屏幕

http://mp.ofweek.com/vr/a745673021206

周四晚上11點,萬眾矚目的世界杯終於開踢了,雖然意大利、荷蘭、智利、中國(手動滑稽)等強隊沒能進入本屆世界杯,但C羅梅西誰主沈浮、桑巴足球可否復仇、冰島國足能走多遠依舊看點十足。比起能在家門口看球的毛子和有閑錢閑功夫飛赴球場的球迷,大多數人還是只能囿於屏幕前。再加上顧及會遇到正面剛無敵的戰鬥民族,英國人還是坐在家中看球比較穩妥。

可若是在家吃著燒烤,喝著啤酒,換了大屏幕甚至改用投影儀,看球還不爽怎麽辦?新系統來幫你忙,給予你真·上帝視角的體驗。

技術分享圖片

想象一下,如果可以在桌子地板上觀看足球比賽的3D全息圖,還能四處走動從不同視角觀看球員,那該有多炫酷。想要獲得此種體驗的一種方法便是在球場各個方位布置多臺同步攝像機,然後利用多視圖幾何技術重建場地和球員的3D模型。然而多攝像機的布置降低了它的適用性。今天要說的另一種方法則是利用單目視頻完成對球場和球員的3D重建。在前一段時間,我們也提到過兩個單目動捕方案:Vnect和MonoPertCap,就基本原理來說,三者也有著一些異曲同工之妙。

技術分享圖片

導入YouTube視頻後,研究人員使用字段線來恢復相機參數,通過提取邊界框、姿勢和運動軌跡(跨多個幀)分割出球員輪廓。然後使用訓練有素的深層網絡在場中重建每個球員的深度圖並在3D查看器或AR設備上渲染這些深度圖。

技術分享圖片

於是識別球員的重任就落在了深度學習網絡上,而它的訓練方法又顯得十分巧妙。有別於傳統的訓練方式,此系統選擇了FIFA遊戲作為訓練素材。倘若使用普通2D足球視頻,很難從幹巴巴的平面中提取出訓練所需的深度數據信息,而本身基於大量數據編輯而成的FIFA則可以提供更加詳細的數據集。

技術分享圖片

研究人員使用RenderDoc (RenderDoc是一款功能強大的開源圖形調試器,除了可以用於圖形開發,還可以用來分析各遊戲大作的渲染流程)來攔截遊戲引擎和GPU之間的調用。與大多數遊戲類似,FIFA在遊戲過程中使用延遲著色,因此可以很方便地捕獲每幀的深度和顏色緩沖區。一旦給定幀的深度和顏色被捕獲,研究人員就將處理它以提取球員。提取的顏色緩沖區即是遊戲的RGB屏幕截圖。接下來用OpenGL相機矩陣來將緩沖區轉化為坐標系中的三維點從而得到點雲,再用DBSCAN聚類算法將球員分開,最後將每個球員的3D集群投影到圖像上,並使用度量深度重新計算深度緩沖區。簡單來說,利用FIFA,不光有圖,還有現成的數據作參考,豈不美哉。

技術分享圖片

可是球場上的激烈角逐免不了身體碰撞,再加上攝像機機位的角度問題,很容易就造成畫面內的球員相互遮擋。在有遮擋的情況下,深度學習網絡的計算是混亂的。盡管有訓練樣本帶有遮擋,但還是不足以讓網絡計算出一名球員的深度。出於這個原因,研究人員通過提供一個分割掩模來幫助深度網絡計算,其中被追蹤的球員是前景,場地、體育場和其他球員是背景。

技術分享圖片

完成了深度學習網絡的計算,接下來就是對於場景的重建了。首先自然是對於攝像機參數的把握。由於需要令重建的場景為用戶提供可旋轉拉伸的視角,因此研究者們取球場上的邊線、中線、底線等作為特征坐標以便定位。在完成了對於球員身體關鍵點(骨架)的捕捉後,就要生成網格了。

技術分享圖片

因為深度學習網絡輸出是每個像素量化的符號距離、球員的表面和虛擬平面之間的距離,所以為了獲得度量深度圖,要將球員的邊界框提升為3D,創建一個平面(假設玩家的底部像素位於地面上)。然後,我們將網絡輸出的距離偏移應用到3D平面上,以獲得所需的深度圖。然後輔以相機參數將深度圖投影到坐標中,從而以3D形式生成玩家的點雲。每個像素對應一個3D點,連接像素建立面部,再對網格進行紋理貼圖。根據應用的不同,還可以通過抽取部分網格來進一步簡化網格結構,以節省設備中的儲存空間。

當然就目前來看,該系統還有著很多不完善的地方,比如無法模擬球員跳躍、無法獲得全方位令人滿意的觀看體驗、無法實時重構、無法高效數據壓縮、足球總是閃爍不定等。

技術分享圖片

總的來說,遊戲的發展似乎為深度學習網絡提供了豐富的素材,由此也側面推動了AR VR技術的進步。這也為直男提供了一個新思路:等下次再有妹子問你什麽是越位的時候,你就可以一幀一幀得和她講解了。

為了好好看球,學霸們用深度學習重建整個比賽3D全息圖