為了自動駕駛,谷歌用NeRF在虛擬世界中重建了舊金山市
訓練自動駕駛系統需要高精地圖,海量的數據和虛擬環境,每家致力於此方向的科技公司都有自己的方法,Waymo 有自己的自動駕駛出租車隊,英偉達創建了用於大規模訓練的虛擬環境NVIDIA DRIVE Sim 平台。近日,來自Google AI 和谷歌自家自動駕駛公司Waymo 的研究人員實踐了一個新思路,他們嘗試用280 萬張街景照片重建出整片舊金山市區的3D 環境。
通過大量街景圖片,谷歌的研究人員們構建了一個Block-NeRF 網格,完成了迄今為止最大的神經網絡場景表徵,渲染了舊金山的街景。
該研究提交到arXiv 上之後,Jeff Dean 立即轉推介紹:
Block-NeRF 是一種神經輻射場的變體,可以表徵大規模環境。具體來說,該研究表明,當擴展NeRF 以渲染跨越多個街區的城市場景時,將場景分解為多個單獨訓練的NeRF 至關重要。這種分解將渲染時間與場景大小分離,使渲染能夠擴展到任意大的環境,並允許對環境進行逐塊更新。
該研究採用幾項架構更改,使得NeRF 對數月內不同環境條件下捕獲的數據具有魯棒性,為每個單獨的NeRF 添加了外觀嵌入、學習姿態細化和可控曝光,並提出了一種用於對齊相鄰NeRF 之間外觀的程序,以便無縫組合。
《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》是UC Berkeley 研究人員在ECCV 2020 上的一篇論文,獲得了最佳論文提名。其提出一種隱式3D 場景表徵,不同於顯示場景表徵(如點雲、網格mesh),其原理是求解穿過場景的任何光線的顏色,從而渲染合成新視角的2D 場景圖片。
NeRF 在給定一組姿態相機圖像的情況下,實現了照片般逼真的重建和新型視圖合成。NeRF 早期的工作往往側重於小規模和以對象為中心的重建。儘管現在有些方法可以重建單個房間或建築物大小的場景,但這些方法仍然範圍有限,不能擴展到城市規模的環境。由於模型容量有限,將這些方法應用於大型環境通常會導致明顯的偽影和低視覺保真度。
重建大規模環境在自動駕駛、航空測量等領域具有廣泛應用前景。例如創建大範圍的高保真地圖,為機器人定位、導航等應用提供先驗知識。此外,自動駕駛系統通常通過重新模擬以前遇到的場景來進行評估,然而任何與記錄存在的偏差都可能改變車輛的軌跡,因此需要沿著路徑進行高保真的視圖渲染。除了基本的視圖合成,以場景為條件的NeRF 還能夠改變環境照明條件,例如相機曝光、天氣或一天中不同的時間,這可用於進一步增強模擬場景。
論文鏈接:https://arxiv.org/abs/2202.05263
項目鏈接:https://waymo.com/intl/zh-cn/research/block-nerf/
如上圖所示,谷歌此次提出的Block-NeRF 是一種通過使用多個緊湊的NeRF 表徵環境來實現大規模場景重建的方法。在推理時,Block-NeRF 無縫結合給定區域的相關NeRF 的渲染。上圖的示例使用3 個月內收集的數據重建了舊金山的阿拉莫廣場社區。Block-NeRF 可以更新環境的各個塊,而無需對整個場景進行重新訓練。
重建如此大規模的環境會帶來額外的挑戰,包括瞬態物體(汽車和行人)的存在、模型容量的限制以及內存和計算限制。此外,在一致的條件下,極不可能在一次捕獲中收集如此大環境的訓練數據。相反,環境不同部分的數據可能需要來自不同的數據收集工作,這會在場景幾何(例如,建築工作和停放的汽車)以及外觀(例如,天氣條件和一天中不同的時間)中引入差異。
方法
該研究通過外觀嵌入和學習姿態細化來擴展NeRF,以應對收集到的數據中的環境變化和姿態錯誤,同時還為NeRF 添加了曝光條件,以提供在推理過程中修改曝光的能力。添加這些變化之後的模型被研究者稱為Block-NeRF。擴大Block-NeRF 的網絡容量將能夠表徵越來越大的場景。然而,這種方法本身有許多限制:渲染時間隨著網絡的大小而變化,網絡不再適合單個計算設備,更新或擴展環境需要重新訓練整個網絡。
為了應對這些挑戰,研究者提出將大型環境劃分為多個單獨訓練的Block-NeRF,然後在推理時動態渲染和組合。單獨建模這些Block-NeRF 可以實現最大的靈活性,擴展到任意大的環境,並提供以分段方式更新或引入新區域的能力,而無需重新訓練整個環境。要計算目標視圖,只需渲染Block-NeRF 的子集,然後根據它們相對於相機的地理位置進行合成。為了實現更無縫的合成,谷歌提出了一種外觀匹配技術,通過優化它們的外觀嵌入,將不同的Block-NeRF 進行視覺對齊。
圖2:重建場景被分成了多個Block-NeRF,每個Block-NeRF 都在特定Block-NeRF 原點坐標(橙色點)的某個原型區域(橙色虛線)內的數據上進行訓練。
該研究在mipNeRF 的基礎上構建了Block-NeRF 實現,改善了因輸入圖像從許多不同距離觀察場景造成的損害NeRF 性能的混疊問題。研究人員結合了來自NeRF in the Wild (NeRF-W) 的技術,該技術在將NeRF 應用於Photo Tourism 數據集中的地標時,為每個訓練圖像添加一個潛在代碼以處理不一致的場景外觀。NeRF-W 從數千張圖像中為每個地標創建一個單獨的NeRF,而谷歌的新方法結合了許多NeRF,從數百萬張圖像中重建一個連貫的大環境,並結合了學習相機姿態細化。
圖3. 新模型是mip-NeRF 中提出的模型的擴展。
一些基於NeRF 的方法使用分割數據來隔離和重建視頻序列中的靜態和動態對象(如人或汽車)。由於該研究主要關注重建環境本身,所以在訓練期間簡單地選擇屏蔽掉動態對象。
為了動態選擇相關的Block-NeRF 進行渲染,並在遍歷場景時以平滑的方式進行合成,谷歌優化了外觀代碼以匹配光照條件,並使用基於每個Block-NeRF 到新視圖的距離計算的插值權重。
重建效果
鑑於數據的不同部分可能在不同的環境條件下被捕獲,算法遵循NeRF-W 並使用生成式潛在優化(Generative Latent Optimization,GLO)來優化perimage 外觀嵌入向量。這使得NeRF 可以解釋幾個外觀變化的條件,例如變化的天氣和照明。同時還可以操縱這些外觀嵌入,以在訓練數據中觀察到的不同條件之間進行插值(例如多雲與晴朗的天空,或白天和黑夜)。
圖4. 外觀代碼允許模型展示出不同的照明和天氣條件。
整個環境可以由任意數量的Block-NeRF 組成。為了提高效率,研究人員利用兩種過濾機制僅渲染給定目標視點的相關區塊,這裡只考慮目標視點設定半徑內的Block-NeRF。此外,系統對於每個候選者都會計算相關的可見性。如果平均可見度低於閾值,則丟棄Block-NeRF。圖2 提供了一個可見性過濾的示例。可見性可以快速計算,因為它的網絡獨立於顏色網絡,並且不需要以目標圖像分辨率進行渲染。過濾後,通常有1 到3 個Block-NeRF 需要合併。
圖5. 谷歌的模型包含曝光條件,這有助於解釋訓練數據中存在的曝光量變化,允許用戶在推理過程中以人類可解釋的方式更改輸出圖像的外觀。
為了重建整個城市場景,研究人員在錄製街景時捕獲長期序列數據(超過100 秒),並在幾個月內在特定目標區域重複捕獲不同序列。谷歌使用從12 個攝像頭捕獲的圖像數據,這些攝像頭共同提供360° 視圖。其中8 個攝像頭從車頂提供完整的環視圖,另外4 個攝像頭位於車輛前部,指向前方和側面。每個相機以10 Hz 的頻率捕獲圖像並存儲一個標量曝光值。車輛姿態是已知的,並且所有攝像機都經過校準。
借助這些信息,該研究在一個共同的坐標系中計算相應的相機光線原點和方向,同時將相機的滾動快門考慮在內。
圖6. 當渲染基於多個Block-NeRF 的場景時,該算法使用外觀匹配來獲得整個場景的一致樣貌。給定一個Block-NeRF(圖左)的固定目標外觀,算法會優化相鄰Block-NeRF 的外觀以匹配。在此示例中,外觀匹配了在Block-NeRF 中產生一致的夜間外觀。
圖7. 多段數據的模型消融結果。外觀嵌入有助於神經網絡避免添加雲霧幾何體來解釋天氣和光照等環境變化。移除曝光會略微降低了準確度。姿態優化有助於銳化結果並消除重複對象的重影,如在第一行的電線桿上觀察到的那樣。
未來展望
谷歌研究人員表示,新方法仍然有一些問題有待解決,比如部分車輛和陰影沒有被正確移除,植被因為外觀隨季節變化而在虛擬環境中變得模糊。同時,訓練數據中的時間不一致(例如施工工作)無法被AI 自動處理,需要手動重新訓練受影響的區域。
此外,目前無法渲染包含動態對象的場景限制了Block-NeRF 對機器人閉環模擬任務的適用性。將來,這些問題或許可以通過在優化過程中學習瞬態對象來解決,或者直接對動態對象進行建模。