很高興給大家介紹我們 CVPR 2018 的專案 Gibson Environment。這是一個主要適用於機器人導航任務的模擬平臺。我們在傳統的圖形學渲染 pipeline 基礎上進行了創新,使用神經網路作為渲染引擎 (neural network rendering engine),達到了近乎真實環境的渲染效果。透過和物理引擎的融合,我們可以做到在計算機裡 1:1 地模擬真實環境:
效果圖:我們動態地模擬了史丹佛計算機系 (Gates Building) 一樓的真實場景,讓虛擬機器人可以在其中進行探索,學習真實世界。我們在 Gibson Environment 裡可以同時「啟用」大量類似的機器人。喜歡電影駭客帝國的讀者可能對這個概念並不陌生。
透過 Gibson Environment,我們可以把真實的場景 (例如家庭住宅,學校,辦公室) 虛擬化,以節約大量在真實環境訓練機器人的資源。另一方面,我們可以把虛擬環境中訓練出來的機器人部署到真實環境。這為實現真實的強化學習提供了有力的基礎。
使用我們的開源平臺來探索啟用的和真實世界的感知。上圖展示了 Gibson 中的兩個智慧體。這兩個智慧體是啟用的、嵌入式的,並服從物理定律和空間(a,b)的約束。它們源源不斷地接收視覺觀察,就好像佩戴了攝像頭,並以第一人稱視角來觀察環境(c)。除了(c)中的 RGB 通道模態,它們還能接收其它模態的觀察,如(d)深度、(e)語義標籤、(f)表面法線。該虛擬環境是透過掃描真實建築得到的。
專案網址:http://gibson.vision
3D 資料集地址:http://gibson.vision/database
論文地址:http://gibson.vision/Gibson_CVPR2018.pdf
Github 地址:https://github.com/StanfordVL/GibsonEnv
背景
2016 年起,伴隨深度強化學習的興起,計算機視覺領域的研究重心從靜態影像處理開始轉向動態視覺控制。大量的模擬模擬平臺湧現而出 (例如虛擬駕駛平臺 Carla, 虛擬無人機平臺 Airsim)。
傳統機器人領域傾向於將一個複雜的任務分成感知 (perception) 模組和決策 (planning) 模組,而強化學習讓我們可以端到端地學習到更復雜的控制 (end to end control/sensorimotor control),即輸入感測器資訊,然後直接輸出控制訊號。
目前最前沿的強化學習演算法已經在很多端到端任務上獲得了的成功,例如在遊戲中學會解迷宮,在不平的路面上學會行走。在自動駕駛中,從攝像頭拍到的畫面,我們可以直接預測方向盤的轉角和油門剎車。
這樣的任務無法在靜態的資料集(例如 ImageNet)中學習。我們需要在一個可互動式的動態環境中訓練智慧體。
上圖涵蓋了目前主流的模擬環境,包括遊戲類的毀滅戰士(VIZdoom)、俠盜獵車(GTA)、駕駛類的 CARLA,物理類的 Roboschool 等。之前提到的解迷宮、行走智慧體就出自這些環境。有了這些成果,我們能不能將智慧體應用於實際生活中,解決駕駛、機器人行走的問題呢?
事實告訴我們,部署到實際中的智慧體往往會因為觀測到的畫素不同而導致結果不理想,甚至失靈。例如在 GTA 中訓練的自動駕駛汽車到了真實世界中,看到從沒有見過的場景,會不幸成為馬路殺手。
可遷移已訓練智慧體的學習環境需要具備三個主要特性:(1)來自真實世界並反映其語義複雜性;(2)具有確保在實際部署結果之前不需要進一步的域適應的機制;(3)智慧體可在環境中具象化,並服從空間和物理定律的約束。
針對這個問題,我們設計了 Gibson Environment,以解決模擬平臺的環境不夠真實 (photorealisitic) 的問題。目前大部分的模擬平臺都是基於計算機圖形學的方法 (例如 THOR, House3D, Carla),而使用這種方法通常很難遷移到真實環境。在我們的工作中,我們使用基於圖片的渲染 (IBR) 方法,結合神經網路,達到了高效和真實的渲染。
Gibson Environment 的名字來源於美國認知心理學之父 James J. Gibson。他提出認知 (perception) 和 行動 (action) 具有非常緊密的聯絡,嬰兒需要透過主動玩耍才能學會識別各種物體。這對於人工智慧也是一樣的。Gibson Environment 的科研價值在於它正是這樣一個環境,讓智慧體可以同時學習認知和行動。
方法
為了渲染出看起來更加真實的畫面,計算機圖形學領域主要有兩條主要的技術線路,一種是透過更仔細的建模和更好的光線追蹤演算法來實現渲染。這種方法在電影製作中十分常見,通常需要消耗大量的計算資源和資金,不適合用於實時渲染的模擬環境。
另一種方法是直接從真實環境中採集圖片,把渲染的問題定義為「視角合成」問題,即給定幾個從已有的視角採集的圖片,合成一個新的視角。我們採用了這種方法作為渲染方法,示意圖如下:
該方法的輸入是環境的 3D 模型(比較粗糙)和從一系列視角採集到的圖片。對於要渲染的任意一個視點,我們選取周圍的 k 個視點,將每個視點的每個畫素投射到 3D 模型上,得到一個三維點雲。之後,我們對 3D 點雲進行簡單的雙線性插值,得到一個初步的渲染結果。
不同於常見 3D 模型材質渲染的方法,我們對於不同的視點選取材質的方法是自適應的(更近的視點取樣更多)。受掃描位置稀疏性、裝置、重建演算法、偽像等因素的限制,植被和小物體等細節大多數時候都無法正確重建。反射表面,例如窗戶和檯面,將在重建的網格上留下孔。這些都導致了渲染輸出的不完整。
為此,我們使用一個卷積神經網路對渲染進行後處理。我們採用兩階段方法,第一階段是點雲的純幾何渲染。我們的 CUDA 點雲渲染器可以以 80fps 渲染 10M 個點的 1024x2048 影片流。
我們專案的另一個創新是把畫素級域適應 (pixel level domain adaptation) 的機制嵌入到渲染引擎當中。對於渲染影像 I_s 和真實影像 I_t,我們的後處理網路 f 可以讓渲染影像看起來像真實世界中的照片,即 f(I_s)≈I_t。與此同時,我們還訓練了另外一個網路 u,讓真實世界中的照片看上去像我們的渲染影像,即 u(I_t)≈f(I_s)(此處「≈」僅非嚴謹地代表「相似」)。
在深度估計任務上的 Gibson 到真實環境的遷移實驗結果表明,f(I_s) 域和 u(I_t) 域能很好地對齊。
這樣做簡化了機器人在真實世界的部署:只需要在機器人的感測器上接入我們的網路,就能給機器人戴上了一副虛擬的「眼鏡」(goggles),令其在真實環境中感知和 Gibson Environment 一樣的環境。
特性
物理具象化
下圖展示了火柴人從樓梯跌落時的場景,上行的火柴人動作軌跡看上去很符合物理定律,下行是對應的火柴人視角的觀察。
為了使智慧體受到物理和空間的約束,我們將 Gibson 環境與物理引擎相結合。這使我們能夠將智慧體暴露於物理現象,如碰撞、重力、摩擦等。我們的物理模擬器支援剛體和軟體模擬,具有離散和連續的碰撞檢測。使用 GPU 和 OpenGL 最佳化,我們的環境支援以 100 倍實時速度學習物理相互作用。由於掃描模型預設情況下不具備材料屬性,因此我們的空間不提供真實的物理屬性,例如材料摩擦。我們在物理引擎中預設使用庫侖摩擦模型來模擬它。為了降低計算複雜度,除非使用者啟用,否則我們也不會在物理引擎中對氣流進行建模。相對地,我們為剛體運動提供線性阻尼函式。
最佳化速度
渲染幀數對於強化學習很關鍵,我們希望能實現更快於實時的模擬幀數。為此,我們實現了 CUDA-最佳化的渲染 pipeline。在最消耗計算資源的後處理網路執行中,我們在 RGBD 資料上取得了幾十到上百幀數的渲染效能。
強化學習任務
該影片展示了在 Gibson Environment 中訓練的強化學習策略的一些結果。智慧體執行的是視覺區域性規劃和避障的任務。
資料集
近年來隨著實景掃描技術的進步,有大量的樓房、住宅、真實場所被掃描並儲存成了虛擬檔案。最初,這樣的檔案主要被應用於房地產網路銷售。
史丹佛視覺實驗室(Stanford Vision Lab)是最早將這樣的資料應用於科研的實驗室。在 Stanford 2D3DS 專案中,研究院將史丹佛大學 6 棟主要建築進行了掃描,並取得了一系列突破。在此之後,被應用於科研的實景掃描資料量呈指數式增長。
Stanford 2D3DS:http://buildingparser.stanford.edu/dataset.html
Gibson Environment 可以模擬任何被掃描過的真實環境,這是它的一個巨大優點。你完全可以掃描自己的房子,然後用 Gibson Environment 為之生成一個虛擬的環境,訓練你的掃地機器人。
在我們這次的 release 中,我們收集並開源了 572 個建築物(1440 層)的掃描。作為現有最大的資料集,我們比同類資料集(例如 matterport3D)大一個數量級。
其中每個建築物的虛擬環境資料包含了完整的 3D 網格,如下圖所示:
當智慧體在環境中探索時,可以隨自身的探索觀察到不同型別的動態檢視:
從左到右依次是 RGB 檢視、深度檢視和表面法線檢視。
下圖是該環境的全景展示:
目前我們已經在 GitHub 專案中釋出了一小部分資料集作為環境 Beta 測試的一部分,主要的資料集將會在近期釋出。
討論
在文中,我們對渲染方法做了各種測試,包括速度、和真實影像的差距、以及域適應能否成功實現等,有興趣的讀者可以參考我們的文章。不過由於時間的限制,在 CVPR 的文章裡我們並沒有在機器人上做實驗,近期我們正在進行這些實驗,包括語義導航、語義建圖、目標驅動的三維重建等任務。
ROS Demo
由於面向的是機器人的應用,我們整合了 Gibson 模擬環境和機器人作業系統,ROS 的使用者可以方便地使用 Gibson Env 作為模擬器,來模擬攝像頭或者 kinect 輸入。下圖是用 Gibson 模擬器模擬機器人建圖 (mapping) 的一個簡單 demo: