0. 筆者個人體會
NeRF確實很火,但現有工作主要還是面向室內場景。因為室外環境是一個典型的無邊界問題,這樣NeRF射線就沒辦法采樣,而且室外環境的計算量也是很大的問題。
今天,筆者將為大家分享一篇NeurlPS 2023開源的最新工作UE4-NeRF,是一種大規模室外場景的實時NeRF框架,還支持交互式的編輯渲染。希望能對NeRF領域的小伙伴有所幫助~
1. 效果展示
先介紹一下UE4-NeRF的輸入輸出,輸入是無人機采集的大規模場景,輸出是在UE4中進行的實時渲染,還有場景編輯功能。
然后看看具體的重建效果對比,UE4-NeRF渲染的清晰度很高,但之前的Mobile-NeRF和Mega-NeRF就比較模糊模糊。
即使是對玻璃這種半透明物體,也可以渲染的很好。
代碼已經開源了,目前支持Windows和20/30系列顯卡,感興趣的小伙伴可以測試一下效果。下面我們來看具體的論文信息。
2. 摘要
神經輻射場 (NeRF)是一種新穎的隱式三維重建方法,顯示出巨大的潛力,受到越來越多的關注。它能夠僅從一組照片中重建3D場景。然而,它的實時渲染能力,尤其是對于大規模場景的交互式實時渲染,仍然具有顯著的局限性。為了應對這些挑戰,本文提出了一種新的神經渲染系統UE4-NeRF,專門用于大規模場景的實時渲染。我們把每個大場景分成不同的子場景。為了表示分割后的獨立場景,我們通過在場景中構造多個正八面體來初始化多邊形網格,并在訓練過程中不斷優化多邊形面的頂點。從細節層次(LOD)技術中汲取靈感,我們為不同的觀察層次訓練了不同細節層次的網格。我們的方法與Unreal Engine4 (UE4)中的光柵化管道相結合,實現了4K分辨率的大規模場景的實時渲染,幀率高達43 FPS。UE4中的渲染也有助于后續階段的場景編輯。此外,通過實驗,我們證明了我們的方法實現了可與最先進的方法相媲美的渲染質量。
3. 算法解析
UE4-NeRF的核心思想是將大場景分塊為多個小場景,將小場景表征為多面體,然后再不斷優化網格頂點位置。
具體的Pipeline包含三個模塊:
(1) 訓練模塊,劃分子NeRF并初始化每個小場景的網格。整個訓練過程不斷優化編碼器-解碼器網絡的參數和網格頂點位置;
(2) 預渲染,提取不同細節層次的多邊形網格,為最終渲染做準備;
(3) 渲染模塊,由推理子模塊和UE4子模塊組成,通過通信來實現最終的實時渲染。
Pipeline里有幾個trick:
1、分割block時,實際訓練區域要比提取區域稍大一些,這樣來保證不同block邊界的平滑過渡;
2、初始化是先建立一個128×128×128的網格,然后選擇每個網格的中心點及其六個相鄰的網格(前、后、左、右、上、下)來創建多邊形網格。
3、為了解決Mobile-NeRF在處理傾斜表面時遇到的收斂速度慢且不穩定的問題,使用具有20個面的正八面體,包括8個外部面和12個內部面。
然后說一下具體的訓練過程:
對于從相機原點發射到像素的每條射線,計算與多邊形網格的交點作為采樣點。對于每個模塊,編碼器以位置信息pi作為輸入,輸出包含不透明度的8D特征向量Mi,解碼器以Mi和射線方向作為輸入,輸出采樣點的顏色。射線方向編碼用的球諧系數。
渲染就和傳統NeRF很相似了,包括光度損失和深度損失兩部分。不同點一個是把體密度換成了不透明度,另一個是光度損失分成了兩個級別。第一級就是傳統的光度損失,Vp是頂點位置:
為了提高三角形網格與物體表面的接近度,設計了光度損失的第二個分量:
這個損失的原理是,僅選擇不透明度大于閾值的采樣點。并且當累積的不透明度超過0.8時,直接停止渲染過程。剛開始訓練時其實第二個損失沒有什么影響,隨著訓練進行,第二個成分的權重逐漸增加,將不透明度集中在有限數量的特定網格上,并將其向目標壓縮,從而改善渲染結果。
下面再說這個預渲染是啥?
先一句話總結一下:利用來自加速網格的預測值來識別和移除不具有顯著幾何表面的網格。目的是提高網格利用率、渲染推理速度,降低存儲成本。
具體流程是:
1、對每個block,除了用于訓練的相機視角外,引入上方各個角度的平行射線。計算每條射線與多邊形網格的交點,當累積不透明度超過0.8時,光線的遍歷停止。如果一個三角形面上所有交點的不透明度都低于0.3,那就直接裁掉這個面。
2、進行坐標變換,對齊獲得的網格和現實世界的尺度。
3、將三角形的頂點坐標映射到它們在UV坐標中的相應位置。
最后,就可以將預渲染的多邊形網格與Unreal Engine 4 (UE4)中可用的光柵化pipeline相結合。隨后,應用解碼器網絡將每個像素的17D特征(8個通道和9D觀察方向)轉換為RGB顏色。
4. 實驗
訓練在3090上進行,每個block大約需要訓練40分鐘。UE4-NeRF是面向室外大場景,具體的實驗環境包括無人機采集的農村(FL)、建筑工地(CS)、工業園區(IP)。采集的圖像分辨率為6000×4000像素并且包含GPS信息(用來轉換尺度)。使用4k分辨率實時重建的速度為43 FPS(論文中提到提升續航后可以更快)。
重建精度的定量對比,UE4-NeRF的重建速度和精度都非常好,并且對GPU要求很低。這也是實時性的一個體現,畢竟無人機不能真頂一個4090去飛。
UE4-NeRF和其他3個NeRF重建效果的定性對比,NeRFacto和Instant-NGP(NVIDIA提出的5s訓練)也是實時方案。結果顯示UE4-NeRF特別擅長渲染小、密集、半透明的物體。
訓練時間和FPS的對比,Mobile-NeRF訓練一個塊就需要2天時間,并且需要4塊3090ti。而且Mega-NeRF在訓練過程中會生成幾百G的臨時文件。
低紋理區域的渲染質量也很不錯。
最后是一個交互性的編輯實驗,UE4-NeRF允許導入和編輯渲染的場景,還能自動處理遮擋場景(因為使用了Unreal Engine4)。而且當目標遮擋NeRF渲染的場景時,由于NeRF計算量減少,渲染幀率略有提高。這里也推薦「3D視覺工坊」新課程《基于深度學習的三維重建MVSNet系列 [論文+源碼+應用+科研]》。
5. 總結
UE4-NeRF提出了一個面向室外大場景的實時NeRF渲染系統,主要思想是將場景劃分為多個block,并為每個block訓練單獨的NeRF。感覺這項工作還是挺有意思的,但是模型設計上用了特別多的trick。此外,作者也提到了一些他們工作的問題:
1、依賴GPU,渲染幾平方公里的大場景時內存開銷太大(這好像不是問題吧?);
2、在預渲染過程中,很難捕捉到任何視角的射線,導致最終的渲染場景存在空洞。
-
模型
+關注
關注
1文章
3452瀏覽量
49733 -
無人機
+關注
關注
230文章
10641瀏覽量
184632 -
渲染系統
+關注
關注
0文章
2瀏覽量
5698
原文標題:NeurlPS'23開源 | 大規模室外NeRF也可以實時渲染
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
大規模特征構建實踐總結
大規模天線技術商用測試
大規模MIMO的利弊
大規模MIMO的性能
基于三角形二叉樹的實時大規模地形渲染算法
NeRF的基本概念及工作原理
從多視角圖像做三維場景重建 (CVPR'22 Oral)
聯合NeRF與特征網格,實現超大規模城市渲染

了解NeRF 神經輻射場

華南理工賈奎團隊ICCV&apos;23新作:支持重新照明、編輯和物理仿真

利用PyTorch實現NeRF代碼詳解
NeurlPS&apos;23開源 | 首個!開放詞匯3D實例分割!

評論