CVPR2023,手機(jī)上即可部署NeRF?更加高效輕捷的三維重建技術(shù)
NeRF(Neural Radiance Fields)是一種新興的三維重建技術(shù),僅用2D的posed images作為監(jiān)督,即可表示復(fù)雜的三維場景。NeRF的主要任務(wù)是新視角合成,通過輸入一系列不同角度的同個物體的圖像及對應(yīng)的位姿,我們可以獲得一些新視角的圖像。
1 前言本文提出了一種基于紋理多邊形的神經(jīng)輻射場(NeRF)的新表示形式,該多邊形可以通過標(biāo)準(zhǔn)渲染管道高效合成新圖像。本文使用的方法是將NeRF表示為一組多邊形,其紋理代表二進(jìn)制不透明度和特征向量。使用 z 緩沖區(qū)對多邊形進(jìn)行傳統(tǒng)渲染會生成具有每個像素特征的圖像,這些圖像由在片段著色器中運(yùn)行的依賴視圖的小型 MLP 進(jìn)行解釋,以生成最終的像素顏色。本文提出了一種基于紋理多邊形的神經(jīng)輻射場(NeRF)的新表示形式MobileNeRF(Mobile Neural Radiance Fields)。本文的主要貢獻(xiàn)如下:
- MobileNeRF 相比與名為 SNeRG 的最先進(jìn)方法,在保持相同輸出質(zhì)量的同時。就速度而言,比SNeRG快10倍,這使得在移動設(shè)備上實時渲染 3D 場景成為可能。這里也推薦「3D視覺工坊」新課程《徹底搞****覺三維重建:原理剖析、代碼講解、及優(yōu)化改進(jìn)》
- 通過存儲表面紋理而不是體素紋理,MobileNeRF 比其他方法消耗更少的內(nèi)存。這使得在內(nèi)存和功率有限的集成 GPU 上運(yùn)行該方法成為可能。對于移動設(shè)備來說,這是一個重要的優(yōu)勢,與臺式計算機(jī)相比,移動設(shè)備的資源有限。
- MobileNeRF 在網(wǎng)絡(luò)瀏覽器上運(yùn)行,并且與所有經(jīng)過測試的設(shè)備兼容。這是因為查看器是一個 HTML 網(wǎng)頁,可以從任何裝有 Web 瀏覽器的設(shè)備上訪問該網(wǎng)頁。
- MobileNeRF 允許對重建的物體/場景進(jìn)行實時操作,因為它們是簡單的三角形網(wǎng)格。
本文的工作屬于視圖合成領(lǐng)域,涵蓋光場、基于圖像的渲染和神經(jīng)渲染。本文重點關(guān)注實時渲染輸出視圖的方法。光場的方法通過存儲密集的圖像網(wǎng)格,從而實現(xiàn)高質(zhì)量場景的實時渲染,盡管相機(jī)自由度有限且存儲開銷很大。其他方法利用顯式 3D 幾何結(jié)構(gòu)來實現(xiàn)更多的相機(jī)自由度。早期的方法將依賴于視圖的紋理應(yīng)用于 3D 網(wǎng)格,但后來的方法將卷積神經(jīng)網(wǎng)絡(luò)作為后處理步驟來提高質(zhì)量。或者,輸入幾何體可以簡化為帶有 alpha 的紋理平面的集合?;邳c的表示通過在訓(xùn)練后處理網(wǎng)絡(luò)時聯(lián)合細(xì)化場景幾何形狀來進(jìn)一步提高質(zhì)量。然而,由于這種卷積后處理在每個輸出幀上獨立運(yùn)行,因此通常會導(dǎo)致缺乏3D 一致性。此外,與本文的工作不同,它們需要強(qiáng)大的桌面 GPU,并且尚未被證明可以在移動設(shè)備上運(yùn)行。最后,與上述絕大多數(shù)方法不同,MobileNeRF不需要重建的3D 幾何形狀作為輸入。NeRF 將場景表示為連續(xù)不透明場和與視圖相關(guān)的顏色,并通過體積渲染生成圖像。這種表示是3D一致且高質(zhì)量的結(jié)果。然而,渲染一個NeRF涉及在每個像素的多個3D位置評估大型神經(jīng)網(wǎng)絡(luò),使得實現(xiàn)實時渲染變得困難。最近的工作提高了 NeRF 的訓(xùn)練速度。FastnerF 使用從粗到精的方法來加快渲染過程,而 PlenocTrees 使用分層八叉樹結(jié)構(gòu)來表示場景并加速渲染。另一方面,SNeRG 使用稀疏網(wǎng)格表示,并使用小型神經(jīng)網(wǎng)絡(luò)作為后處理來評估視圖依賴性。在這些實時方法中,只有 SNeRG 已被證明可以在無需訪問 CUDA 的低功耗設(shè)備上工作。由于本文的方法直接針對低功耗硬件上的渲染,因此在實驗中主要與 SNeRG 進(jìn)行比較。
3 方法給定一組校準(zhǔn)的圖像,尋求優(yōu)化表示以實現(xiàn)高效的新視圖合成。MobileNeRF的隱式特征表示由多邊形網(wǎng)格組成,其紋理圖用于存儲特征和不透明度。在渲染時,給定相機(jī)姿勢,采用兩階段延遲渲染過程:渲染階段 1 – 將網(wǎng)格柵格化到屏幕空間并構(gòu)建特征圖像(圖 2c),即我們在 GPU 內(nèi)存中創(chuàng)建延遲渲染緩沖區(qū);渲染階段 2 – 通過在片段著色器(即小型 MLP)中運(yùn)行的(神經(jīng))延遲渲染器將這些特征轉(zhuǎn)換為彩色圖像,該渲染器接收特征向量和視圖方向并輸出像素顏色(圖 2d)。本文的視圖表示是在三個訓(xùn)練階段構(gòu)建的,逐漸從類似 NeRF 的連續(xù)表示轉(zhuǎn)向離散表示:訓(xùn)練階段 1——訓(xùn)練一個具有連續(xù)不透明度的類似 NeRF 的模型,其中體積渲染正交點是從多邊形網(wǎng)格導(dǎo)出的;訓(xùn)練階段2——對不透明度進(jìn)行二值化,因為雖然經(jīng)典光柵化可以輕松丟棄片段,但它們無法有效地處理半透明片段。訓(xùn)練階段3——提取稀疏多邊形網(wǎng)格,將不透明度和特征烘焙到紋理圖中,并存儲神經(jīng)延遲著色器的權(quán)重。網(wǎng)格存儲為 OBJ 文件,紋理貼圖存儲為 PNG,延遲著色器權(quán)重存儲為JSON 文件。當(dāng)使用標(biāo)準(zhǔn) GPU 光柵化管道時,本文的實時渲染器只是一個 HTML 網(wǎng)頁。
3.1 Continuous training(Training Stage 1)該部分的輸入由多邊形網(wǎng)格 M=(T , V) 和三個 MLP 組成。網(wǎng)格拓?fù)?T 是固定的,但與 NeRF 類似,通過最小化訓(xùn)練圖像中像素的預(yù)測顏色和真值真實顏色之間的均方誤差,以自動解碼方式優(yōu)化頂點位置 V 和 MLP均方誤差:亮度公式:其中,涉及到的參數(shù)是由圖中的三個MLP結(jié)構(gòu)輸出的:多邊形網(wǎng)格:作者描述了Synthetic 360 °場景中使用的多邊形網(wǎng)格,并在補(bǔ)充中給出了Forward - Face和Unbounded 360 °場景的配置。二維示意圖如上。首先在以原點為中心的單位立方體中定義了一個大小為P × P × P的規(guī)則網(wǎng)格G;通過在每個體素上創(chuàng)建一個頂點來實例化V,通過在連接四個相鄰體素頂點的網(wǎng)格邊上創(chuàng)建一個四邊形(兩個三角形)來實例化T。將頂點位置相對于體素中心和大小進(jìn)行局部參數(shù)化,得到V∈[-.5 , +.5]P × P × P × 3自由變量。在優(yōu)化過程中,將頂點位置初始化為V = 0,對應(yīng)于一個規(guī)則的歐幾里得格子,并對其進(jìn)行正則化處理,以防止頂點退出其體素,并在優(yōu)化問題欠約束時促使其回到中性位置:正交點:由于計算MobileNeRF的MLPs是昂貴的,作者采取了一個加速網(wǎng)格來限制正交點的基|K|。正交點只針對與射線相交的體素集合生成;我們使用一個加速網(wǎng)格G來修剪那些不太可能包含幾何形狀的體素;最后,我們計算射線與M中入射到體素頂點的面之間的交點,從而得到最終的求交點集;見上圖。使用重心插值將交點到相交三角形中三個頂點的梯度反向傳播。綜上,對于每一條輸入射線r:B相當(dāng)于射線與被加速網(wǎng)格修剪后的正交點集合,K代表射線與B中正交點連線的交點 加速網(wǎng)格G的Loss其中,?[ . ]是阻止加速網(wǎng)格(負(fù))影響圖像重建質(zhì)量的停止梯度算子。
3.2 Binarized training (Training Stage 2)典型硬件實現(xiàn)的渲染通道并不天然支持半透明網(wǎng)格。渲染半透明網(wǎng)格需要繁瑣的(每幀)排序,以便按從后到前的順序執(zhí)行渲染,以保證正確的alpha合成。通過將平滑不透明度αk∈[0,1]從式(3)轉(zhuǎn)換為離散不透明度來克服這個問題:為了穩(wěn)定訓(xùn)練,作者對連續(xù)和離散模型進(jìn)行聯(lián)合訓(xùn)練:這里的C(r)分別是連續(xù)不透明度和離散不透明度對應(yīng)的輸出亮度,當(dāng)stage2的loss收斂時,對以下兩個MLP權(quán)重進(jìn)行微調(diào),使得最小化。
3.3. Discretization (Training Stage 3)經(jīng)過二值化和微調(diào)后,作者將網(wǎng)格表征轉(zhuǎn)換為顯式的多邊形網(wǎng)格(OBJ)。然后創(chuàng)建一個紋理圖像,其大小與可見四邊形的數(shù)量成正比,對于每個四邊形,我們在紋理中分配一個K × K的塊,類似于Disney的Ptex。作者在實驗中使用了K = 17,使得四邊形具有16 × 16的紋理,并使用了半像素的邊界填充。然后,我們迭代紋理的像素,將像素坐標(biāo)轉(zhuǎn)換為3D坐標(biāo),并quad離散不透明度的值和特征轉(zhuǎn)化為紋理圖。我們將[0,1]量化為8位整數(shù),并將紋理存儲為(無損壓縮)的PNG圖像。到這里相當(dāng)于得到了obj、紋理圖、和延時著色權(quán)重
3.4. Anti-aliasing在經(jīng)典的柵格化流水線中,混疊是獲得高質(zhì)量渲染必須考慮的問題。而經(jīng)典的NeRF幻覺通過半透明體來平滑邊緣,如前所述,半透明特性需要每幀多邊形排序。我們通過超采樣抗混疊來克服這個問題。作者首先對特征(在2 ×分辨率)進(jìn)行柵格化:然后平均亞像素特征來產(chǎn)生我們饋送給我們的神經(jīng)延遲著色器的反走樣表示:
3.5. Rendering上述優(yōu)化過程的結(jié)果是一個紋理多邊形網(wǎng)格(其中,紋理圖存儲特征而不是顏色)和一個小的MLP (將視角方向和特征轉(zhuǎn)換為顏色)。這種表示的渲染是使用延遲渲染管道分兩次完成的:1.用零緩沖器對紋理網(wǎng)格的所有面進(jìn)行光柵化,以產(chǎn)生每像素12個通道的2M×2N的特征圖像,包括8個通道的學(xué)習(xí)特征、一個二進(jìn)制不透明度和一個3D視圖方向;2.通過渲染一個紋理化的矩形來合成一個M × N輸出的RGB圖像,該矩形使用特征圖像作為其紋理,并使用線性濾波來平均特征以抗混疊。我們對alpha非零的像素應(yīng)用小MLP將特征轉(zhuǎn)換為RGB顏色。小型MLP被實現(xiàn)為GLSL片段著色器。
4 實驗作者在三個數(shù)據(jù)集上進(jìn)行測試:the 8 synthetic 360? scenes from NeRF, the 8 forward-facing scenes from LLFF, and 5 unbounded 360? outdoor scenes from Mip-NeRF 360。由于SNeRG 目前所知的唯一可以在非專業(yè)設(shè)備上實時運(yùn)行的NeRF模型,所以作者在實驗部分主要與SNeRG進(jìn)行比較。這里也推薦「3D視覺工坊」新課程《徹底搞****覺三維重建:原理剖析、代碼講解、及優(yōu)化改進(jìn)》
4.1 Comparisons4.2 Ablation studies5 總結(jié)作者提出了 MobileNeRF,這是一種利用經(jīng)典光柵化管道(即 z 緩沖區(qū)和片段著色器)在各種計算平臺上執(zhí)行基于表面的神經(jīng)場的高效渲染的架構(gòu)。它的幀速率比之前最先進(jìn)的技術(shù) (SNeRG) 快一個數(shù)量級,同時生成同等質(zhì)量的圖像。同時,該工作也還有一些局限性,MobileNeRF估計的表面可能不正確,特別是對于具有鏡面表面和/或稀疏視圖的場景;它使用二元不透明度來避免對多邊形進(jìn)行排序,因此無法處理半透明的場景;使用固定的網(wǎng)格和紋理分辨率,這對于特寫新穎視圖合成來說可能太粗糙;它在沒有明確分解照明和反射率的情況下對輻射場進(jìn)行建模,因此不能像最近的方法那樣處理光澤表面。通過高效的部分排序、細(xì)節(jié)層次、mipmap 和表面著色來擴(kuò)展多邊形渲染管道應(yīng)該可以解決其中一些問題。此外,由于 NeRF 的 MLP 主干,MobileNeRF 目前的訓(xùn)練速度很慢。
6 參考https://zhuanlan.zhihu.com/p/559025481https://zhuanlan.zhihu.com/p/512538748
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。