NeurlPS'23開源 | 大規(guī)模室外NeRF也可以實(shí)時渲染
作者:泡椒味的口香糖 ?| 來源:3D視覺工坊
在公眾號「3D視覺工坊」后臺,回復(fù)「原論文」可獲取論文pdf和代碼鏈接。
添加微信:dddvisiona,備注:三維重建,拉你入群。文末附行業(yè)細(xì)分群。
NeRF確實(shí)很火,但現(xiàn)有工作主要還是面向室內(nèi)場景。因?yàn)槭彝猸h(huán)境是一個典型的無邊界問題,這樣NeRF射線就沒辦法采樣,而且室外環(huán)境的計(jì)算量也是很大的問題。
今天,筆者將為大家分享一篇NeurlPS 2023開源的最新工作UE4-NeRF,是一種大規(guī)模室外場景的實(shí)時NeRF框架,還支持交互式的編輯渲染。希望能對NeRF領(lǐng)域的小伙伴有所幫助~這里也推薦「3D視覺工坊」新課程《基于深度學(xué)習(xí)的三維重建MVSNet系列 [論文+源碼+應(yīng)用+科研]》。
先介紹一下UE4-NeRF的輸入輸出,輸入是無人機(jī)采集的大規(guī)模場景,輸出是在UE4中進(jìn)行的實(shí)時渲染,還有場景編輯功能。
然后看看具體的重建效果對比,UE4-NeRF渲染的清晰度很高,但之前的Mobile-NeRF和Mega-NeRF就比較模糊模糊。
即使是對玻璃這種半透明物體,也可以渲染的很好。
代碼已經(jīng)開源了,目前支持Windows和20/30系列顯卡,感興趣的小伙伴可以測試一下效果。下面我們來看具體的論文信息。
神經(jīng)輻射場 (NeRF)是一種新穎的隱式三維重建方法,顯示出巨大的潛力,受到越來越多的關(guān)注。它能夠僅從一組照片中重建3D場景。然而,它的實(shí)時渲染能力,尤其是對于大規(guī)模場景的交互式實(shí)時渲染,仍然具有顯著的局限性。為了應(yīng)對這些挑戰(zhàn),本文提出了一種新的神經(jīng)渲染系統(tǒng)UE4-NeRF,專門用于大規(guī)模場景的實(shí)時渲染。我們把每個大場景分成不同的子場景。為了表示分割后的獨(dú)立場景,我們通過在場景中構(gòu)造多個正八面體來初始化多邊形網(wǎng)格,并在訓(xùn)練過程中不斷優(yōu)化多邊形面的頂點(diǎn)。從細(xì)節(jié)層次(LOD)技術(shù)中汲取靈感,我們?yōu)椴煌挠^察層次訓(xùn)練了不同細(xì)節(jié)層次的網(wǎng)格。我們的方法與Unreal Engine4 (UE4)中的光柵化管道相結(jié)合,實(shí)現(xiàn)了4K分辨率的大規(guī)模場景的實(shí)時渲染,幀率高達(dá)43 FPS。UE4中的渲染也有助于后續(xù)階段的場景編輯。此外,通過實(shí)驗(yàn),我們證明了我們的方法實(shí)現(xiàn)了可與最先進(jìn)的方法相媲美的渲染質(zhì)量。
UE4-NeRF的核心思想是將大場景分塊為多個小場景,將小場景表征為多面體,然后再不斷優(yōu)化網(wǎng)格頂點(diǎn)位置。
具體的Pipeline包含三個模塊:
(1) 訓(xùn)練模塊,劃分子NeRF并初始化每個小場景的網(wǎng)格。整個訓(xùn)練過程不斷優(yōu)化編碼器-解碼器網(wǎng)絡(luò)的參數(shù)和網(wǎng)格頂點(diǎn)位置;
(2) 預(yù)渲染,提取不同細(xì)節(jié)層次的多邊形網(wǎng)格,為最終渲染做準(zhǔn)備;
(3) 渲染模塊,由推理子模塊和UE4子模塊組成,通過通信來實(shí)現(xiàn)最終的實(shí)時渲染。
Pipeline里有幾個trick:
1、分割block時,實(shí)際訓(xùn)練區(qū)域要比提取區(qū)域稍大一些,這樣來保證不同block邊界的平滑過渡;
2、初始化是先建立一個128×128×128的網(wǎng)格,然后選擇每個網(wǎng)格的中心點(diǎn)及其六個相鄰的網(wǎng)格(前、后、左、右、上、下)來創(chuàng)建多邊形網(wǎng)格。
3、為了解決Mobile-NeRF在處理傾斜表面時遇到的收斂速度慢且不穩(wěn)定的問題,使用具有20個面的正八面體,包括8個外部面和12個內(nèi)部面。
然后說一下具體的訓(xùn)練過程:
對于從相機(jī)原點(diǎn)發(fā)射到像素的每條射線,計(jì)算與多邊形網(wǎng)格的交點(diǎn)作為采樣點(diǎn)。對于每個模塊,編碼器以位置信息pi作為輸入,輸出包含不透明度的8D特征向量Mi,解碼器以Mi和射線方向作為輸入,輸出采樣點(diǎn)的顏色。射線方向編碼用的球諧系數(shù)。
渲染就和傳統(tǒng)NeRF很相似了,包括光度損失和深度損失兩部分。不同點(diǎn)一個是把體密度換成了不透明度,另一個是光度損失分成了兩個級別。第一級就是傳統(tǒng)的光度損失,Vp是頂點(diǎn)位置:
為了提高三角形網(wǎng)格與物體表面的接近度,設(shè)計(jì)了光度損失的第二個分量:
這個損失的原理是,僅選擇不透明度大于閾值的采樣點(diǎn)。并且當(dāng)累積的不透明度超過0.8時,直接停止渲染過程。剛開始訓(xùn)練時其實(shí)第二個損失沒有什么影響,隨著訓(xùn)練進(jìn)行,第二個成分的權(quán)重逐漸增加,將不透明度集中在有限數(shù)量的特定網(wǎng)格上,并將其向目標(biāo)壓縮,從而改善渲染結(jié)果。
下面再說這個預(yù)渲染是啥?
先一句話總結(jié)一下:利用來自加速網(wǎng)格的預(yù)測值來識別和移除不具有顯著幾何表面的網(wǎng)格。目的是提高網(wǎng)格利用率、渲染推理速度,降低存儲成本。
具體流程是:
1、對每個block,除了用于訓(xùn)練的相機(jī)視角外,引入上方各個角度的平行射線。計(jì)算每條射線與多邊形網(wǎng)格的交點(diǎn),當(dāng)累積不透明度超過0.8時,光線的遍歷停止。如果一個三角形面上所有交點(diǎn)的不透明度都低于0.3,那就直接裁掉這個面。
2、進(jìn)行坐標(biāo)變換,對齊獲得的網(wǎng)格和現(xiàn)實(shí)世界的尺度。
3、將三角形的頂點(diǎn)坐標(biāo)映射到它們在UV坐標(biāo)中的相應(yīng)位置。
最后,就可以將預(yù)渲染的多邊形網(wǎng)格與Unreal Engine 4 (UE4)中可用的光柵化pipeline相結(jié)合。隨后,應(yīng)用解碼器網(wǎng)絡(luò)將每個像素的17D特征(8個通道和9D觀察方向)轉(zhuǎn)換為RGB顏色。
訓(xùn)練在3090上進(jìn)行,每個block大約需要訓(xùn)練40分鐘。UE4-NeRF是面向室外大場景,具體的實(shí)驗(yàn)環(huán)境包括無人機(jī)采集的農(nóng)村(FL)、建筑工地(CS)、工業(yè)園區(qū)(IP)。采集的圖像分辨率為6000×4000像素并且包含GPS信息(用來轉(zhuǎn)換尺度)。使用4k分辨率實(shí)時重建的速度為43 FPS(論文中提到提升續(xù)航后可以更快)。
重建精度的定量對比,UE4-NeRF的重建速度和精度都非常好,并且對GPU要求很低。這也是實(shí)時性的一個體現(xiàn),畢竟無人機(jī)不能真頂一個4090去飛。
UE4-NeRF和其他3個NeRF重建效果的定性對比,NeRFacto和Instant-NGP(NVIDIA提出的5s訓(xùn)練)也是實(shí)時方案。結(jié)果顯示UE4-NeRF特別擅長渲染小、密集、半透明的物體。
訓(xùn)練時間和FPS的對比,Mobile-NeRF訓(xùn)練一個塊就需要2天時間,并且需要4塊3090ti。而且Mega-NeRF在訓(xùn)練過程中會生成幾百G的臨時文件。
低紋理區(qū)域的渲染質(zhì)量也很不錯。
最后是一個交互性的編輯實(shí)驗(yàn),UE4-NeRF允許導(dǎo)入和編輯渲染的場景,還能自動處理遮擋場景(因?yàn)槭褂昧薝nreal Engine4)。而且當(dāng)目標(biāo)遮擋NeRF渲染的場景時,由于NeRF計(jì)算量減少,渲染幀率略有提高。這里也推薦「3D視覺工坊」新課程《基于深度學(xué)習(xí)的三維重建MVSNet系列 [論文+源碼+應(yīng)用+科研]》。
UE4-NeRF提出了一個面向室外大場景的實(shí)時NeRF渲染系統(tǒng),主要思想是將場景劃分為多個block,并為每個block訓(xùn)練單獨(dú)的NeRF。感覺這項(xiàng)工作還是挺有意思的,但是模型設(shè)計(jì)上用了特別多的trick。此外,作者也提到了一些他們工作的問題:
1、依賴GPU,渲染幾平方公里的大場景時內(nèi)存開銷太大(這好像不是問題吧?);
2、在預(yù)渲染過程中,很難捕捉到任何視角的射線,導(dǎo)致最終的渲染場景存在空洞。
3D視覺細(xì)分群成立啦!
目前工坊已經(jīng)建立了3D視覺方向多個社群,包括SLAM、工業(yè)3D視覺、自動駕駛方向。
細(xì)分群包括:
[工業(yè)方向]三維點(diǎn)云、結(jié)構(gòu)光、機(jī)械臂、缺陷檢測、三維測量、TOF、相機(jī)標(biāo)定、綜合群;
[SLAM方向]多傳感器融合、ORB-SLAM、激光SLAM、機(jī)器人導(dǎo)航、RTK|GPS|UWB等傳感器交流群、SLAM綜合討論群;
[自動駕駛方向]深度估計(jì)、Transformer、毫米波|激光雷達(dá)|視覺攝像頭傳感器討論群、多傳感器標(biāo)定、自動駕駛綜合群等。
[三維重建方向]NeRF、colmap、OpenMVS、MVSNet等。
[無人機(jī)方向]四旋翼建模、無人機(jī)飛控等。
除了這些,還有求職、硬件選型、視覺產(chǎn)品落地等交流群。
大家可以添加小助理微信: dddvisiona,備注:加群+方向+學(xué)校|公司, 小助理會拉你入群