單運動鏡頭估算運動物體深度,Google 挑戰新難題

作者 | 發布日期 2019 年 06 月 10 日 8:00 | 分類 Google , 鏡頭 line share follow us in feedly line share
單運動鏡頭估算運動物體深度,Google 挑戰新難題


人類視覺系統有個我們習以為然但極其強大的功能,就是可從平面圖像推出其在三度空間的樣子。即便是多個物體同時移動的複雜環境,人類也能合理推測物體的幾何形狀、深度關係。

然而類似的事對電腦視覺來說有相當大的挑戰性,攝影鏡頭和被拍攝物品都靜止的情況下,電腦尚不能穩定解決所有情況,若都是自由運動的情況就更難以得到正確的結果。原因是,傳統的三維重建算法依賴三角計算,需要假設同一物體可從至少兩個不同角度同時觀察,透過拍攝的圖像之間的區別(視差)解算三維模型。想滿足這前提,要麼需要一個多鏡頭陣列,要麼保持被拍攝物體完全靜止不動,允許單個攝影鏡頭移動觀察。那麼,只有單個攝影鏡頭的情況下,深度計算要麼忽略移動物體,要麼無法算出正確結果。

Google 的新研究《Learning the Depths of Moving People by Watching Frozen People》,提出一種新的基於深度學習的方法解決單個攝影鏡頭+攝影鏡頭和物體都在移動時的深度預測,在任意影片都有很好的效果。這個方法用人類姿態、常見物體形態的先驗學習,替代直接三角計算圖像。

值得指出的是,用機器學習的方法「學習」三維重建/深度預測並不是什麼新鮮事,不過 Google 這項研究專門針對攝影鏡頭和被攝物體都在移動的場景,且重點關注的被攝物體是人物,畢竟人物的深度估計可在 AR、三維影片特效都派得上用場。

巧妙尋找訓練數據

正如大多數此類方法,Google 選擇有監督方法訓練模型,就需要找到移動的攝影鏡頭拍攝的自然場景影片,同時還帶有準確的深度圖。找到大量這類影片並不容易。如果選擇生成影片的方法,需要非常逼真的建模,且在多種場景、光照、複雜度的組合下呈現自然的人物動作,不僅有很高難度,且想泛化到真實場景仍有一定難度。另一方法是在真實世界拍攝這類影片,需要攝影鏡頭支援 RGBD (彩色圖像+深度圖),微軟 Kinect 就是常用的低價方案;但問題是這類攝影鏡頭通常只適用室內,且在三維重建過程中也常有各自問題,難以得到理想的精確度。

機智的研究人員想到利用 YouTube 影片。YouTube 的大量影片中,各種題材、場景、拍攝手法都有,有一類影片對這任務極其有幫助:影片中的人假裝時間靜止,保持位置和姿態不動,然後一個攝影機在移動,拍下整個場景。由於整個場景的物體都是固定的,就可用傳統的基於三角計算的方法,精確還原整個三維場景,也就得到高精準度的深度圖。Google 研究人員蒐集了大概 2,000 支影片,包括不同數量的人們在各種真實場景擺出各種姿勢。

為正在移動的人估算距離

上面說到的「時間靜止」影片提供移動的攝影鏡頭+靜止的物體的訓練數據,但是研究的最終目標是解決攝影鏡頭和物體同時運動的情況。為了應付差別,Google 研究人員需要把網路輸入結構化。

一種簡單的解決方案是為影片每一幀分別推理出深度圖(也就是說模型輸入是單幀畫面)。雖然用「時間靜止」影片訓練的模型,可在單幀圖像的深度預測取得頂尖表現,但 Google 研究人員認為,還可以利用多幀資訊提升模型的表現。比如,對同樣的固定物體,攝影鏡頭的移動形成不同視角的兩幀畫面,就可以為深度估計提供非常有用的線索(視差)。為了利用這種資訊,研究人員計算每個輸入幀和另一幀之間的二維光流(兩幀之間的像素位移)。光流同時取決於場景的深度和攝影鏡頭的相對位置,不過由於攝影鏡頭的位置未知,就可從光流場中消去兩者間的依賴,進而得到初始深度圖。這深度圖只對靜態部分有效,為了還能處理移動的人,研究人員增加人物分割網路,把人從初始深度圖遮蔽掉。那麼,網路輸入就由這三部分組成:RGB 彩色圖像、人物遮蔽,以及透過視差計算的帶有遮蔽的深度圖。

這類輸入,網路的任務就是補上有人區域的深度圖,以及完善整幅畫面的深度圖。由於人體有較固定的形狀和尺寸,網路可容易地從訓練數據學到這些先驗,並給予較準確的深度估計。訓練完畢後,模型就可處理攝影鏡頭和人物動作都任意變化的自然拍攝影片了。

與目前其他優秀方法的對比如下圖。

透過深度圖實現三維視頻效果

得到準確的深度圖之後,簡單常見的使用方法就是實現景深和虛焦效果,如下圖。

其他的用法還比如可用原圖結合深度圖進行小幅視角變換,合成「三維畫面」,如下圖;甚至在畫面增加有準確深度和尺寸的三維元素也不難。

(本文由 雷鋒網 授權轉載;圖片來源:Google