神經體繪制:NeRF及其以外方法
參考論文總結“NEURAL VOLUME RENDERING: NERF AND BEYOND“,2021年1月,喬治亞理工和麻省理工的合著。
神經渲染定義為:
“一種深度圖像或視頻生成方法,可顯式或隱式控制場景屬性,如照明、攝像機參數、姿勢、幾何、外觀和語義結構”。
它是一種新數據驅動解決方案,解決了計算機圖形學中長期存在的虛擬世界真實感渲染問題。
神經體渲染,是指通過跟蹤光線進入場景并沿光線長度進行某種積分生成圖像或視頻的方法。通常,像多層感知器一樣的神經網絡將從光線的3D坐標到密度和顏色等的函數進行編碼,并集成生成圖像。
神經體渲染的直接先驅工作是用神經網絡定義隱式曲面表示的方法。許多3D感知圖像生成方法使用體素、網格、點云或其他表示,通常基于卷積架構。但在2019年CVPR上,至少有三篇論文介紹了用神經網絡作為標量函數近似來定義占有率(occupancy)和/或符號距離函數(SDF)。
- Occupancy networks引入基于坐標的隱式占有學習。由5個ResNet塊組成的網絡,輸入采用特征向量和3D點,預測二值占用。
- IM-NET用6層MLP解碼器,在給定特征向量和3D坐標的情況下預測二值占有。可用于自動編碼、形狀生成(GAN-樣式)和單視圖重建。
- DeepSDF直接從一個3D坐標和一個潛代碼中提取符號距離函數。它使用了一個8層MPL,其中到第4層有跳連接。
- PIFu表明,將3D點重新投影到像素對齊的特征表示中,可以學習特別詳細的隱式模型。這個在PixelNeRF中會重演,效果非常好。
其他采用隱函數的方法有:
- Structured Implicit Functions(2019)表明,可以組合這些隱式表示,例如,簡單地求和。
- CvxNet(2020)通過采用逐點Max(3D)組合符號距離函數。
- BSP網絡(2020)在許多方面類似于CvxNet,但在其核心使用二值空間劃分,產生了一種局部輸出多邊形網格的方法,而不是通過昂貴的網格劃分方法。
- Deep Local Shapes(2020)將深度SDF潛代碼存儲在體素網格中,表示更大的擴展場景。
- Scene Representation Networks(2019)或SRN,在架構上與DeepSDF非常相似,但添加可微分光線行進算法找到學習的隱式曲面最近交點,并添加MLP回歸顏色,能夠從多個姿態的圖像中學習。
- Differentiable Volumetric Rendering(2019)表明,隱式場景表示可以與可微分渲染器相結合,從圖像中可以進行訓練,類似于SRN。用“體渲染器”一詞,但真正的主要貢獻是一個巧妙的技巧,使隱式曲面的深度計算可微分:不在體上積分。
- Implicit Differentiable Renderer(2020)提供了類似的技術,但具有更復雜的表面光場表示,表明它可以在訓練期間優化攝像頭姿態。
- Neural Articulated Shape Approximation(2020)或NASA,組成隱式函數來表示關節目標,如人體。
并非完全無中生有,盡管仍然是基于(warped)體素的表示,神經體(Neural Volumes)論文引入了用于視圖合成的體渲染,回歸了密度和顏色的3D體。潛代碼被解碼成3D體,然后通過體渲染獲得新圖像。
其提出在3D空間中的每個位置使用不透明度和顏色組成的體表示,其中通過積分投影實現渲染。在優化過程中,這種半透明的幾何表示沿積分射線分散梯度信息,有效地擴大了收斂范圍,從而能夠發現良好的解決方案。
引起大家討論的論文是神經輻射場NeRF論文(2020年)。本質上,用深度SDF架構,但回歸的不是有符號距離函數(SDF),而是密度和顏色。然后,用(容易微分的)數值積分方法來近似真實的體渲染步驟。
NeRF模型將體場景表示存儲為MLP的權重,并在許多有已知姿態的圖像上進行訓練。通過沿每條查看光線以規則間隔集成密度和顏色來渲染新視圖。
NeRF非常詳細渲染的原因之一是,使用周期性激活函數(periodic activation functions),即傅立葉特征,對光線上的3D點和相關視圖方向進行編碼。這一創新后來被推廣到周期性激活函數的多層網絡,即SIREN(SInusoidal- REpresentation Networks)。這兩篇文章都發表在NeurIPS 2020上。
可以說,NeRF論文的影響在于其殘酷的簡單性:只需一個MLP在5D坐標下輸出密度和顏色。有一些華麗點綴(bells and whistles),特別是位置編碼和分層抽樣方案,但驚訝于如此簡單的架構可以產生如此令人印象深刻的結果。盡管如此,原始NeRF留下了許多改進的機會:
- 訓練和渲染速度都很慢。
- 只能表示靜態場景。
- 固定照明。
- 經過訓練的NeRF表示不會推廣到其他場景/目標。
一些項目/論文旨在改善原始NeRF論文的相當慢的訓練和渲染時間。
- JaxNeRF(2020)用JAX支持(https://github.com/google/jax?)多設備訓練,從幾天變成幾小時,大大加快速度。
- AutoInt(2020)直接學習體積分,大大加快了渲染速度。
- Learned Initialization(2020)使用元學習來尋找良好的權重初始化,加快訓練速度。
- DeRF(2020)將場景分解為“軟 Voronoi圖”,利用加速器內存架構。
- NERF++(2020)建議用單獨的NERF對背景建模,處理無限場景。
- Neural Sparse Voxel Fields(2020)將場景組織為稀疏體素八叉樹,將渲染速度提高10倍。
至少有四項工作側重于動態場景:
- Nerfies(2020)及其底層D-NeRF對可變形視頻建模,使用第二個MLP對視頻的每一幀應用變形。
- D-NeRF(2020)與Nerfies論文非常相似,甚至使用相同的縮略詞,但似乎限制了平移的變形。
- Neural Scene Flow Fields(2020)采用已知攝像機姿態的單目視頻作為輸入,深度預測作為先驗,并輸出場景流進行正則化,用于損失函數。
- Spatial-Temporal Neural Irradiance Field(2020)僅使用時間作為額外輸入。要成功訓練這種方法來渲染任意視點視頻(來自RGB-D數據!),需要仔細選擇損失函數。
- NeRFlow(2020)使用變形MLP對場景流建模,并跨時域進行積分,獲得最終變形。
- NR NeRF(2020)還用變形MLP對非剛性場景建模。除了攝像機參數之外,它不依賴預計算的場景信息,但與Nerfies相比,生成的輸出稍微不那么清晰。
- STaR(2021)將多視圖RGB視頻作為輸入,并將場景分解為靜態和動態體。但是,目前它只支持一個運動目標。
還有兩篇論文關注人物的頭像/肖像。
- PortraitNeRF(2020)創建靜態NeRF風格的頭像(Avatar),但僅用一個RGB拍攝圖像。為了實現這一點,需要燈光舞臺訓練數據。
- DNRF(G2020)專注于4D Avatar,將變形面部模型納入流水線,施加強烈的歸納偏差。
NeRF風格方法得到增強的另一個方面是如何處理照明,通常是通過可用于重照明場景的潛代碼。
- NeRV(2020)用第二個“可見性”MLP支持任意環境照明和“一次反射”間接照明。
- NeRD(2020)是另一項工作,其中使用局部反射模型,此外,對于給定場景,去除低分辨率球面諧波照明。
- Neural Reflectance Fields(2020)通過添加局部反射模型改善NeRF,除密度外。它產生了令人印象深刻的重照明結果,盡管來自單點光源。
- NeRF-W(2020)是NeRF的首批后續工作之一,優化潛外觀代碼,以便能夠從控制較少的多視圖集合中學習神經場景表示。
潛代碼也可用于編碼形狀先驗:
- pixelNeRF(2020)更接近基于圖像的渲染,其中在測試時用N個圖像。它基于PIFu,創建像素對齊的特征,然后在評估NeRF-樣式渲染器時進行插值。
- GRF(2020)在設置上非常接近pixelNeRF,但在規范空間而不是視圖空間中運行。
- GRAF(2020),即“輻射場的生成模型”,是NeRF的條件變型,添加了外觀和形狀潛代碼,同時通過GAN風格訓練獲得視點不變性。
- pi GAN(2020),與GRAF類似,但用了一種SIREN式樣的NeRF實現,其中每一層都由不同的MLP輸出進行調制,該MLP采用潛代碼。
可以說,所有這些都不會擴展到由許多目標組成的大型場景,因此一個令人興奮的新領域是如何將目標組成體渲染場景。
- Object-Centric Neural Scene Rendering(2020)在以目標為核心的坐標系中學習“目標散射函數”,允許使用蒙特卡洛渲染合成場景并真實地照亮場景。
- GIRAFFE(2020)通過以目標為中心的NeRF模型輸出特征向量而不是顏色來支持合成,然后通過平均合成,并以低分辨率渲染為2D特征圖,然后在2D中進行上采樣。
- Neural Scene Graphs(2020)支持場景圖中的多個以目標為中心的NeRF模型。
最后,至少有一篇論文在(已知)目標姿態估計的背景下使用了NeRF渲染。
- iNeRF(2020)在姿態估計框架中使用了NeRF MLP,甚至能夠通過微調姿態改善標準數據集上的視圖合成。然而,它還不能處理照明。
神經體渲染和NeRF風格的論文,最終是否會成功還遠未可知。雖然現實世界中確實存在煙霧、煙霧、透明等,但最終大部分光線都從表面散射到眼睛中。由于基于體的方法,NeRF風格的網絡可能很容易訓練,但已經看到一種趨勢,即論文試圖在收斂后發現或猜測曲面。事實上,原NeRF論文中的分層抽樣方案正是這樣。因此,當從NeRF中學習時,可以很容易地看到移回SDF風格的隱式表示或甚至體素,至少在推理時是這樣。