NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
作者:Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng
https://arxiv.org/abs/2003.08934
https://www.matthewtancik.com/nerf
https://youtu.be/JuH79E8rdKc
https://github.com/bmild/nerf

摘要:我們提出了一種通過使用稀疏的輸入視圖集來優(yōu)化底層連續(xù)體積場景函數(shù)來實現(xiàn)復雜場景新視圖合成的最先進結果的方法。我們的算法表示使用完全連接(非卷積)深度網(wǎng)絡的場景,其輸入是單個連續(xù)5D坐標(空間位置和觀察方向
),其輸出是該空間位置的體積密度和視角相關的發(fā)射輻射(emitted radiance)。我們通過沿相機光線查詢5D坐標來合成視圖,并使用經典的體繪制(volume rendering)技術將輸出顏色和密度投影到圖像中。因為體繪制是自然可微的,所以優(yōu)化表示所需的唯一輸入是一組具有已知相機姿勢的圖像。我們描述了如何有效地優(yōu)化神經輻射場,以渲染具有復雜幾何和外觀的場景的照片級真實感新視圖,并展示了優(yōu)于先前神經渲染和視圖合成工作的結果。視圖合成結果最好以視頻形式查看,因此我們敦促讀者查看我們的補充視頻,以便進行令人信服的比較。
We present a method that achieves state-of-the-art results for synthesizing novel views of complex scenes by optimizing an underlying continuous volumetric scene function using a sparse set of input views. Our algorithm represents a scene using a fully-connected (non-convolutional) deep network, whose input is a single continuous 5D coordinate (spatial location?(x,y,z)?and viewing direction?(θ,?)) and whose output is the volume density and view-dependent emitted radiance at that spatial location. We synthesize views by querying 5D coordinates along camera rays and use classic volume rendering techniques to project the output colors and densities into an image. Because volume rendering is naturally differentiable, the only input required to optimize our representation is a set of images with known camera poses. We describe how to effectively optimize neural radiance fields to render photorealistic novel views of scenes with complicated geometry and appearance, and demonstrate results that outperform prior work on neural rendering and view synthesis. View synthesis results are best viewed as videos, so we urge readers to view our supplementary video for convincing comparisons.
1 引言
在這項工作中,我們以一種新的方式解決了長期存在的視圖合成問題,通過直接優(yōu)化連續(xù)5D場景表示的參數(shù)來最小化渲染一組捕獲圖像的誤差。
我們將靜態(tài)場景表示為一個連續(xù)的5D函數(shù),該函數(shù)輸出空間中每個點在每個方向
上發(fā)射的輻射,以及每個點上的密度,其作用類似于微分不透明度,控制光線通過
累積的輻射量。我們的方法通過從單個5D坐標
回歸到單個體積密度和視角相關的RGB顏色,優(yōu)化了一個沒有任何卷積層的深度全連接神經網(wǎng)絡(通常稱為多層感知器或MLP)來表示此函數(shù)。為了從特定視角渲染此神經輻射場(NeRF),我們:1)讓相機光線穿過場景以生成一組采樣的3D點,2)使用這些點及其相應的2D觀察方向作為神經網(wǎng)絡的輸入,以生成顏色和密度的輸出集,3)使用經典的體繪制技術將這些顏色和密度累積到2D圖像中。因為這個過程是自然可微的,我們可以使用梯度下降來優(yōu)化這個模型,通過最小化每個觀察圖像和從我們的表示中渲染的相應視圖之間的誤差。通過在多個視圖中最小化此誤差,可以鼓勵網(wǎng)絡通過為位置分配高體積密度和精確的顏色(這包含了真實基礎場景內容)來預測場景的一致模型。圖2顯示了整個流程。
We represent a static scene as a continuous 5D function that outputs the?radiance emitted in each direction (θ, φ) at each point (x, y, z) in space, and a?density at each point which acts like a differential opacity controlling how much?radiance is accumulated by a ray passing through (x, y, z). Our method optimizes?a deep fully-connected neural network without any convolutional layers (often?referred to as a multilayer perceptron or MLP) to represent this function by?regressing from a single 5D coordinate (x, y, z, θ, ?) to a single volume density?and view-dependent RGB color. To render this neural radiance field (NeRF)?from a particular viewpoint we: 1) march camera rays through the scene to?generate a sampled set of 3D points, 2) use those points and their corresponding?2D viewing directions as input to the neural network to produce an output?set of colors and densities, and 3) use classical volume rendering techniques to?accumulate those colors and densities into a 2D image. Because this process is?naturally differentiable, we can use gradient descent to optimize this model by?minimizing the error between each observed image and the corresponding views?rendered from our representation. Minimizing this error across multiple views?encourages the network to predict a coherent model of the scene by assigning?high volume densities and accurate colors to the locations that contain the true?underlying scene content. Figure 2 visualizes this overall pipeline.

我們發(fā)現(xiàn),對于復雜場景,優(yōu)化神經輻射場表示的基本實現(xiàn)沒有收斂到足夠高的分辨率表示,并且在每個攝影機光線所需的采樣數(shù)效率低下。我們通過使用位置編碼來轉換輸入5D坐標來解決這些問題,該位置編碼使MLP能夠表示更高頻率的函數(shù),并且我們提出了一種分層采樣過程,以減少對這種高頻場景表示進行充分采樣所需的查詢數(shù)。
?We find that the basic implementation of optimizing a neural radiance field?representation for a complex scene does not converge to a sufficiently highresolution representation and is inefficient in the required number of samples per?camera ray. We address these issues by transforming input 5D coordinates with?a positional encoding that enables the MLP to represent higher frequency functions, and we propose a hierarchical sampling procedure to reduce the number of?queries required to adequately sample this high-frequency scene representation.
我們的方法繼承了體積表示的優(yōu)點:兩者都可以表示復雜的真實世界幾何體和外觀,并且非常適合使用投影圖像進行基于梯度的優(yōu)化。重要的是,我們的方法克服了在高分辨率下建模復雜場景時,離散化體素網(wǎng)格的高昂存儲成本??傊覀兊募夹g貢獻是:
(1)一種將具有復雜幾何體和外觀的連續(xù)場景表示為5D神經輻射場的方法,參數(shù)化為基本MLP網(wǎng)絡。
(2)基于經典體繪制技術的可微分渲染過程,我們使用該過程從一些標準RGB圖像來優(yōu)化這些表示。這包括分層采樣策略,用于將MLP的容量分配給具有可見場景內容的空間。A differentiable rendering procedure based on classical volume rendering techniques, which we use to optimize these representations from standard RGB?images. This includes a hierarchical sampling strategy to allocate the MLP’s?capacity towards space with visible scene content.
(3)將每個輸入5D坐標映射到更高維空間的位置編碼,使我們能夠成功優(yōu)化神經輻射場以表示高頻場景內容。
我們證明,我們得到的神經輻射場方法在定量和定性上都優(yōu)于最先進的視圖合成方法,包括將神經3D表示與場景擬合的工作,以及訓練深度卷積網(wǎng)絡以預測采樣體積表示的工作。據(jù)我們所知,本文提出了第一個連續(xù)的神經場景表示方法,它能夠從自然環(huán)境中捕獲的RGB圖像中渲染真實對象和場景的高分辨率照片級真實感新視圖。
2????相關工作
計算機視覺中最近一個很有希望的方向是用MLP的權重對對象和場景進行編碼,MLP直接從三維空間位置映射到形狀的隱式表示,例如該位置的有符號距離[6]。然而,到目前為止,這些方法無法以與使用離散表示(如三角形網(wǎng)格或體素網(wǎng)格)表示場景的技術相同的保真度再現(xiàn)具有復雜幾何體的真實場景。在本節(jié)中,我們將回顧這兩項工作,并將其與我們的方法進行對比,我們的方法增強了神經場景表示的能力,以產生用于渲染復雜真實場景的最新結果。
使用MLP從低維坐標映射到顏色的類似方法也用于表示其他圖形功能,如圖像[44]、紋理材質[12,31,36,37]和間接照明值[38]。
神經三維形狀表示? ? 最近的工作研究了通過優(yōu)化將坐標映射到有符號距離函數(shù)(15,32)或occupancy fields(11,27)的深層網(wǎng)絡,將連續(xù)3D形狀隱式表示為level sets。然而,這些模型受限于要獲取真值三維幾何體,這些幾何體通常是從ShapeNet等合成三維形狀數(shù)據(jù)集獲得的。隨后的工作通過制定可微分的渲染函數(shù)放松了對真值3D形狀的要求,該函數(shù)允許僅使用2D圖像優(yōu)化神經隱式形狀表示。Niemeyer等人[29]將曲面表示為3D occupancy fields,并使用數(shù)值方法找到每條光線的曲面交點,然后使用隱式微分計算精確導數(shù)。每個光線相交位置都作為神經3D紋理場的輸入,該紋理場預測該點的漫反射顏色。Sitzmann等人[42]使用了一種不太直接的神經3D表示法,只需在每個連續(xù)3D坐標處輸出一個特征向量和RGB顏色,并提出了一種可微分的渲染函數(shù),該函數(shù)由沿每條射線行進的遞歸神經網(wǎng)絡組成,以確定曲面的位置。
雖然這些技術可能表示復雜和高分辨率的幾何體,但迄今為止,它們僅限于幾何復雜度較低的簡單形狀,導致渲染過平滑。我們表明,優(yōu)化網(wǎng)絡以編碼5D輻射場(具有2D視圖相關的外觀的3D體積,3D volumes with 2D view-dependent appearance)的替代策略可以表示更高分辨率的幾何體和外觀,以渲染復雜場景的照片級真實感新視圖。
視圖合成和基于圖像的繪制????給定視圖的密集采樣,可以通過簡單的光場采樣插值技術重建照片級真實感的新視圖[21,5,7]。對于具有稀疏視圖采樣的新型視圖合成,計算機視覺和圖形社區(qū)通過從觀察圖像預測傳統(tǒng)幾何和外觀表示取得了重大進展。一種流行的方法是使用基于網(wǎng)格的場景表示,具有漫反射(48)或依賴于視圖(2,8,49)的外觀??晌?rasterizers(4,10,23,25)或 pathtracers(22,30)可以直接優(yōu)化網(wǎng)格表示,以使用梯度下降法再現(xiàn)一組輸入圖像。然而,基于圖像重投影的基于梯度的網(wǎng)格優(yōu)化往往很困難,可能是因為局部極小值或損失景觀條件較差(local minima or poor conditioning of the loss landscape)。此外,該策略要求在優(yōu)化之前提供具有固定拓撲的模板網(wǎng)格作為初始化[22],這通常不適用于無約束的真實場景。
另一類方法使用體積表示來解決從一組輸入RGB圖像合成高質量照片級真實感視圖的任務。體積方法能夠真實地表示復雜的形狀和材料,非常適合基于梯度的優(yōu)化,并且與基于網(wǎng)格的方法相比,產生的視覺干擾(distracting artifacts)較小。早期的體積方法使用觀察到的圖像直接為體素網(wǎng)格著色[19,40,45]。最近,有幾種方法[9,13,17,28,33,43,46,52]使用多個場景的大型數(shù)據(jù)集來訓練深層網(wǎng)絡,這些網(wǎng)絡從一組輸入圖像預測采樣的體積表示,然后使用alpha合成[34]或沿光線學習合成來在測試時渲染新視圖。其他作品優(yōu)化了每個特定場景的卷積網(wǎng)絡(CNN)和采樣體素網(wǎng)格的組合,以便CNN可以補償來自低分辨率體素網(wǎng)格的離散化偽影[41],或者允許預測的體素網(wǎng)格根據(jù)輸入時間或動畫控制發(fā)生變化[24]。雖然這些體積技術在新視圖合成方面取得了令人印象深刻的成果,但由于其離散采樣,其縮放到更高分辨率圖像的能力從根本上受到時間和空間復雜性差的限制-渲染更高分辨率圖像需要更精細的3D空間采樣。我們通過用深度全連接神經網(wǎng)絡的參數(shù)來編碼連續(xù)的體積來避免這個問題,這不僅產生比以前的體積方法更高質量的渲染,而且存儲成本相比采樣體積表示方法占比很小。
3????神經輻射場場景表示
我們將連續(xù)場景表示為5D向量值函數(shù),其輸入為3D位置和2D觀察方向
,其輸出為發(fā)射顏色
和體積密度
。實際上,我們將方向表示為三維笛卡爾單位向量
。我們使用MLP網(wǎng)絡
近似這種連續(xù)的5D場景表示,并優(yōu)化其權重
,以從每個輸入5D坐標映射到其相應的體積密度和方向發(fā)射顏色。
我們通過這樣的限制來鼓勵表示具有多視圖一致性:將預測體積密度作為僅僅與位置
相關的函數(shù),而預測的顏色
既與位置相關也與觀察方向相關。為了實現(xiàn)這一點,MLP
首先用8個全連接層(ReLU激活,每層256通道)處理輸入的3D坐標
,并輸出
和256維特征向量。然后將該特征向量與相機光線的觀察方向拼接,并傳遞到另一個全連接層(ReLU激活,128通道),該層輸出與視圖相關的RGB顏色。
請參見圖3,以獲取我們的方法如何使用輸入觀察方向來表示非朗伯效應的示例。如圖4所示,在沒有視圖依賴性的情況下訓練的模型(只有x作為輸入)很難表示鏡面反射。
4????具有輻射場的體繪制
我們的5D神經輻射場將場景表示為空間任意點的體積密度和定向發(fā)射輻射(directional emitted radiance)。我們使用經典體繪制的原理渲染穿過場景的任何光線的顏色[16]。體積密度可解釋為射線終止于位置
處無窮小粒子的微分概率。近邊界為
、遠邊界為
的相機射線
的期望顏色
為:
,? ? (1)
其中
Our 5D neural radiance field represents a scene as the volume density and directional emitted radiance at any point in space. We render the color of any ray passing through the scene using principles from classical volume rendering~\cite{kajiya84}. The volume density $\sigma(\mathbf{x})$ can be interpreted as the differential probability of a ray terminating at an infinitesimal particle at location $\mathbf{x}$. The expected color $C(\mathbf{r})$ of camera ray $\mathbf{r}(t)=\mathbf{o} + t\mathbfu0z1t8os$ with near and far bounds $\timenear$ and $\timefar$ is:
函數(shù)表示沿光線從
到
的累積透射率(accumulated transmittance),即光線從
到
傳播而不撞擊任何其他粒子的概率。從我們的連續(xù)神經輻射場渲染視圖需要估計通過所需虛擬相機的每個像素跟蹤的相機光線的積分
。
The function $T(t)$ denotes the accumulated transmittance along the ray from $\timenear$ to $t$, \ie the probability that the ray travels from $\timenear$ to $t$ without hitting any other particle. Rendering a view from our continuous neural radiance field requires estimating this integral $\Ctrue$ for a camera ray traced through each pixel of the desired virtual camera.
我們使用求積法來估計這個連續(xù)積分。確定性求積通常用于繪制離散體素網(wǎng)格,這將有效限制我們表示的分辨率,因為MLP只能在固定的離散位置集上查詢。相反,我們使用分層抽樣方法,將劃分為N個均勻間隔的bins,然后從每個bin內均勻隨機抽取一個樣本:
? ? (2)
雖然我們使用一組離散的樣本來估計積分,但分層采樣使我們能夠表示連續(xù)的場景表示,因為它會導致在優(yōu)化過程中在連續(xù)位置對MLP進行評估。我們使用這些樣本來估計,并使用Max[26]的volume rendering review中討論的求積規(guī)則[26]:
,? ? (3)
其中
其中是相鄰樣本之間的距離。這個從集合
計算
的函數(shù)是可微的( trivially differentiable),并簡化為傳統(tǒng)的
合成,
值為
。
5????優(yōu)化神經輻射場
在上一節(jié)中,我們已經描述了將場景建模為神經輻射場和從該表示中渲染新視圖所需的核心組件。然而,我們觀察到,如第6.4節(jié)所示,這些組件不足以達到最先進的質量。我們引入了兩項改進,以支持表示高分辨率復雜場景。第一種是輸入坐標的位置編碼,有助于MLP表示高頻函數(shù),第二種是分層采樣過程,允許我們有效地對高頻表示進行采樣。
5.1????位置編碼
盡管神經網(wǎng)絡是通用函數(shù)逼近器[14],但我們發(fā)現(xiàn),如果網(wǎng)絡直接處理
輸入坐標,則會導致渲染在表示顏色和幾何體的高頻變化方面表現(xiàn)不佳。這與Rahaman等人[35]最近的工作一致,這表明深層網(wǎng)絡傾向于學習低頻函數(shù)。他們還表明,在將輸入傳遞到網(wǎng)絡之前,使用高頻函數(shù)將輸入映射到更高維空間,可以更好地擬合包含高頻變化的數(shù)據(jù)。
(編者注:文獻35是 On the spectral bias of neural networks,https://arxiv.org/abs/1806.08734 ,ICML2018,Yoshua Bengio組的工作)
我們在神經場景表示的背景下利用這些發(fā)現(xiàn),并表明將FΘ重新格式化為兩個函數(shù)的組合,一個是可學習的,一個不是,可顯著提高性能(見圖4和表2)。這里
是從
到高維空間
的映射,而
仍然只是一個常規(guī)MLP。形式上,我們使用的編碼函數(shù)是:
? ? (4)
該函數(shù)分別應用于
中的三個坐標值(被歸一化到[?1, 1])中的每一個和笛卡爾觀察方向單位向量
的三個分量(其構造為在[?1, 1]之間)。在我們的實驗中,我們?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cgamma(%5Cmathbf%20x)" alt="\gamma(\mathbf x)" mathimg="1">設置了L=10,為
設置了L=4。
在流行的Transformer架構中使用了類似的映射[47],在這里它被稱為位置編碼。然而,Transformers將其用于一個不同的目標,即提供序列中令牌的離散位置,作為不包含任何順序概念的架構的輸入。相反,我們使用這些函數(shù)將連續(xù)輸入坐標映射到更高維空間,以使我們的MLP更容易逼近更高頻的函數(shù)。根據(jù)投影建立3D蛋白質結構模型相關問題的并行工作[51]也利用了類似的輸入坐標映射。
5.2????分層體積取樣 Hierarchical volume sampling
我們的渲染策略是在每個攝影機光線的N個查詢點處密集評估神經輻射場網(wǎng)絡,這種策略效率低下:對渲染圖像沒有貢獻的自由空間和遮擋區(qū)域仍然重復采樣。我們從早期的體繪制工作中汲取了靈感[20],并提出了一種分層表示法,通過按最終渲染的預期效果按比例分配樣本來提高渲染效率。
Our rendering strategy of densely evaluating the neural radiance field network?at N query points along each camera ray is inefficient: free space and occluded?regions that do not contribute to the rendered image are still sampled repeatedly. We draw inspiration from early work in volume rendering [20] and propose?a hierarchical representation that increases rendering efficiency by allocating?samples proportionally to their expected effect on the final rendering.
我們不只是使用單個網(wǎng)絡來表示場景,而是同時優(yōu)化兩個網(wǎng)絡:一個“粗略”,一個“精細”。我們首先使用分層(stratified)抽樣對一組Nc位置進行抽樣,并評估這些位置的“粗略”網(wǎng)絡,如公式(2)和(3)所述。以這個“粗略”網(wǎng)絡的輸出作為輸入,然后我們沿著每條射線生成一個更informed的點采樣,其中樣本偏向于體積的相關部分。要做到這一點,我們首先重寫公式(3)中粗網(wǎng)絡的alpha合成顏色,將其重寫為沿光線的所有采樣顏色
的加權和:
Instead of just using a single network to represent the scene, we simultaneously optimize two networks: one ``coarse'' and one ``fine''. We first sample a set of $\numsamplescoarse$ locations using stratified sampling, and evaluate the ``coarse'' network at these locations as described in Eqns.~\ref{eq:stratified} and \ref{eqn:render_coarse}. Given the output of this ``coarse'' network, we then produce a more informed sampling of points along each ray where samples are biased towards the relevant parts of the volume. To do this, we first rewrite the alpha composited color from the coarse network $\Ccoarse$ in Eqn.~\ref{eqn:render_coarse} as a weighted sum of all sampled colors $c_i$ along the ray:
,
? ? (5)
將這些權重歸一化為會產生一個沿著光線的分段常數(shù)PDF(piecewise-constant PDF)。我們使用逆變換采樣從該分布中采樣第二組
位置,在第一組和第二組采樣的并集處評估我們的“精細”網(wǎng)絡,并使用公式(3)來計算光線的最終渲染顏色
,但使用所有
樣本。此過程會將更多樣本分配給我們希望包含可見內容的區(qū)域。這與重要性抽樣的目標類似,但我們將抽樣值用作整個積分域的非均勻離散化,而不是將每個樣本視為整個積分的獨立概率估計。
Normalizing these weights as $\normpweight_i = \nicefrac{\pweight_i}{\sum_{j=1}^{\numsamplescoarse} \pweight_j}$ produces a piecewise-constant PDF along the ray. We sample a second set of $\numsamplesfine$ locations from this distribution using inverse transform sampling, evaluate our ``fine'' network at the union of the first and second set of samples, and compute the final rendered color of the ray $\Cfine$ using Eqn.~\ref{eqn:render_coarse} but using all $\numsamplescoarse+\numsamplesfine$ samples. This procedure allocates more samples to regions we expect to contain visible content. This addresses a similar goal as importance sampling, but we use the sampled values as a nonuniform discretization of the whole integration domain rather than treating each sample as an independent probabilistic estimate of the entire integral.
5.3????實施細節(jié)
我們?yōu)槊總€場景優(yōu)化一個單獨的神經連續(xù)體積表示網(wǎng)絡。這只需要場景的捕獲RGB圖像數(shù)據(jù)集、相應的相機姿勢和內部參數(shù)以及場景邊界(對于合成數(shù)據(jù),我們使用真值相機姿勢、內部參數(shù)和邊界;對于真實數(shù)據(jù),我們使用COLMAP structure-from-motion package [39]?來估計這些參數(shù)。在每次優(yōu)化迭代中,我們從數(shù)據(jù)集中的所有像素集中隨機采樣一批相機光線,然后按照第5.2節(jié)中描述的分層采樣,從粗網(wǎng)絡查詢個樣本,從細網(wǎng)絡查詢
個樣本。然后,我們使用第4節(jié)中描述的體渲染過程,渲染兩組樣本中每條光線的顏色。我們的損失只是粗略和精細渲染的渲染和真實像素顏色之間的總平方誤差:
其中,是每個批量中的光線集,
、
和
分別是光線
的真值、粗體積預測和精細體積預測的RGB顏色。請注意,即使最終渲染來自
,我們也會盡量減少
的損失,以便可以使用粗網(wǎng)絡的權重分布在細網(wǎng)絡中分配樣本。
we also minimize the loss of $\Ccoarse$ so that the weight distribution from the coarse network can be used to allocate samples in the fine network.
在我們的實驗中,我們使用的batch size為4096條光線,在粗體積中,每條光線在=64個坐標處采樣,在細體積中,每條射線在
=128個額外坐標處采樣。我們使用Adam優(yōu)化器,其學習率在優(yōu)化過程中從
指數(shù)衰減至
(其他Adam超參數(shù)保留為默認值β1=0.9、β2=0.999和c=10?7 )。單個場景的優(yōu)化通常需要大約100–300k次迭代才能在單個NVIDIA V100 GPU上收斂(大約1–2天)。
In our experiments, we use a batch size of 4096 rays, each sampled at $\numsamplescoarse=64$ coordinates in the coarse volume and $\numsamplesfine=128$ additional coordinates in the fine volume. We use the Adam optimizer~\cite{KingmaB15} with a learning rate that begins at $5 \times 10^{-4}$ and decays exponentially to $5 \times 10^{-5}$ over the course of optimization (other Adam hyperparameters are left at default values of $\beta_1=0.9$, $\beta_2=0.999$, and $\epsilon=10^{-7}$). The optimization for a single scene typically take around 100--300k iterations to converge on a single NVIDIA V100 GPU (about 1--2 days).
6????結果
我們定量(表1)和定性(圖8和圖6)表明,我們的方法優(yōu)于之前的工作,并提供了廣泛的燒蝕研究來驗證我們的設計選擇(表2)。我們敦促讀者觀看我們的補充視頻,以便更好地欣賞我們的方法在繪制新視圖的平滑路徑時,比基線方法有了顯著的改進。

6.1????數(shù)據(jù)集
物體的合成渲染
我們首先展示了兩個物體合成渲染數(shù)據(jù)集的實驗結果(表1,Diffuse Synthetic360°和Realistic Synthetic360°)。 DeepVoxels[41]數(shù)據(jù)集包含四個具有簡單幾何體的Lambertian對象。從上半球采樣的視點(479作為輸入,1000用于測試)以512×512像素渲染每個對象。此外,我們還生成自己的數(shù)據(jù)集,其中包含八個對象的路徑跟蹤圖像,這些對象顯示復雜的幾何體和真實的非朗伯材質。六個從上半球采樣的視點渲染,兩個從全球體采樣的視點渲染。我們渲染每個場景的100個視圖作為輸入,200個視圖用于測試,所有視圖均為800×800像素。
We first show experimental results on two datasets of synthetic renderings of objects (Table~\ref{table:results}, ``Diffuse Synthetic $360\degree$'' and ``Realistic Synthetic $360\degree$''). The DeepVoxels~\cite{deepvoxels} dataset contains four Lambertian objects with simple geometry. Each object is rendered at $512\times 512$ pixels from viewpoints sampled on the upper hemisphere (479 as input and 1000 for testing). We additionally generate our own dataset containing pathtraced images of eight objects that exhibit complicated geometry and realistic non-Lambertian materials. Six are rendered from viewpoints sampled on the upper hemisphere, and two are rendered from viewpoints sampled on a full sphere. We render 100 views of each scene as input and 200 for testing, all at $800\times 800$ pixels.
復雜場景的真實圖像
我們展示了使用大致前向圖像捕獲的復雜真實場景的結果(表1,“真實前向”)。該數(shù)據(jù)集由手持手機拍攝的8個場景組成(5個來自LLFF紙,3個我們拍攝),20到62幅圖像,其中1/8用于測試集。所有圖像均為1008×756像素。
We show results on complex real-world scenes captured with roughly forward-facing images (Table~\ref{table:results}, ``Real Forward-Facing''). This dataset consists of 8 scenes captured with a handheld cellphone (5 taken from the LLFF paper and 3 that we capture), captured with 20 to 62 images, and hold out $\nicefrac{1}{8}$ of these for the test set. All images are $1008 \times 756$ pixels.
6.2????比較
為了評估我們的模型,我們將其與當前最佳視圖合成技術進行比較,詳情如下。所有方法都使用相同的輸入視圖集為每個場景訓練單獨的網(wǎng)絡,但局部光場融合除外[28],局部光場融合在大型數(shù)據(jù)集上訓練單個3D卷積網(wǎng)絡,然后使用相同的訓練網(wǎng)絡在測試時處理新場景的輸入圖像。
神經體積(Neural Volumes,NV)[24]綜合了對象的新穎視圖,這些對象完全位于不同背景前的有界體積內(必須在沒有感興趣對象的情況下單獨捕獲)。它優(yōu)化了深三維卷積網(wǎng)絡,以預測1283個樣本的離散化RGBα體素網(wǎng)格以及323個樣本的三維扭曲網(wǎng)格。該算法通過將相機光線穿過扭曲的體素網(wǎng)格來渲染新視圖。
場景表示網(wǎng)絡(Scene Representation Networks,SRN)[42]將連續(xù)場景表示為不透明曲面,由MLP隱式定義,MLP將每個坐標映射到特征向量。他們訓練一個遞歸神經網(wǎng)絡,通過在任何3D坐標下使用特征向量預測光線下一步的大小,沿著光線在場景表示中行進。最后一步的特征向量被解碼為曲面上該點的單色。請注意,SRN是同一作者對DeepVoxels[41]的一個更好的后續(xù)研究,這就是為什么我們不包括與DeepVoxels的比較
局部光場融合(LLFF)[28]LLFF設計用于為采樣良好的前向場景生成照片級真實感的新視圖。它使用經過訓練的三維卷積網(wǎng)絡直接預測每個輸入視圖的離散化截錐采樣RGBα網(wǎng)格(多平面圖像或MPI[52]),然后通過alpha合成并將附近的MPI混合到新視點中來渲染新視圖。
6.3????討論
在所有場景中,我們的性能都優(yōu)于兩個基線,這兩個基線還優(yōu)化了每個場景的單獨網(wǎng)絡(NV和SRN)。此外,與LLFF相比,我們在質量和數(shù)量上都提供了更好的渲染效果(除一個指標外的所有指標),同時僅使用其輸入圖像作為整個訓練集。
SRN方法生成高度平滑的幾何體和紋理,其視圖合成的表示能力受到限制,因為每個攝影機光線僅選擇一個深度和顏色。NV基線能夠捕獲合理詳細的體積幾何體和外觀,但其使用的基礎顯式1283體素柵格阻止其縮放以高分辨率表示精細細節(jié)。LLFF特別提供了一個“采樣準則”,即輸入視圖之間的視差不超過64像素,因此它經常無法估計合成數(shù)據(jù)集中包含多達400-500像素視差的正確幾何圖形。此外,LLFF在不同的場景表示之間進行混合,以渲染不同的視圖,導致視覺上的不一致,這在我們的補充視頻中很明顯。
這些方法之間最大的實際權衡是時間與空間。所有比較過的單場景方法每個場景至少需要12小時的訓練。相比之下,LLFF可以在10分鐘內處理一個小的輸入數(shù)據(jù)集。然而,LLFF為每個輸入圖像生成一個大的3D體素網(wǎng)格,導致巨大的存儲需求(對于一個“真實合成”場景超過15GB)。我們的方法只需要5 MB的網(wǎng)絡權重(與LLFF相比,相對壓縮3000倍),這甚至比我們的任何數(shù)據(jù)集中單個場景的輸入圖像的內存更少。
6.4????燒蝕研究
我們通過表2中的廣泛燒蝕研究驗證了我們算法的設計選擇和參數(shù)。我們在“Realistic Synthetic360°”上展示了結果?” 場景。第9行顯示了作為參考點的完整模型。第1行顯示了我們的模型的最簡版本,沒有位置編碼(PE)、視圖相關(view-dependence,VD)或分層采樣(H)。在第2-4行中,我們從完整模型中一次刪除這三個組件,觀察到位置編碼(第2行)和視圖依賴(第3行)提供了最大的量化效益,然后是分層抽樣(第4行)。第5-6行顯示了隨著輸入圖像數(shù)量的減少,我們的性能如何下降。請注意,我們的方法僅使用25個輸入圖像的性能在所有指標中仍超過使用100張圖像的NV、SRN和LLFF,而在提供100個圖像。在第7–8行中,我們驗證了在的位置編碼中使用的最大頻率
的選擇(用于
的最大頻率按比例縮放)。僅使用5個頻率會降低性能,但將頻率數(shù)從10個增加到15個不會提高性能。我們認為,一旦
超過采樣輸入圖像中的最大頻率(在我們的數(shù)據(jù)中大約1024),增加L的好處就會受到限制。

7????結論
我們的工作直接解決了以前使用MLP將對象和場景表示為連續(xù)函數(shù)的工作的不足。我們證明,將場景表示為5D神經輻射場(作為3D位置和2D觀察方向的函數(shù)輸出體積密度和與視圖相關的發(fā)射輻射的MLP)比以前主要的訓練深度卷積網(wǎng)絡以輸出離散化體素表示的方法產生更好的渲染。
雖然我們已經提出了一種分層采樣策略,以提高渲染樣本的效率(用于訓練和測試),但在研究有效優(yōu)化和渲染神經輻射場的技術方面仍有許多進展。未來工作的另一個方向是可解釋性:體素網(wǎng)格和網(wǎng)格等采樣表示允許對渲染視圖的預期質量和故障模式進行推理,但當我們用深度神經網(wǎng)絡的權重對場景進行編碼時,如何分析這些問題尚不清楚。我們相信,這項工作在基于真實世界圖像的圖形管道方面取得了進展,其中復雜場景可以由從實際對象和場景的圖像優(yōu)化的神經輻射場組成。
Our work directly addresses deficiencies of prior work that uses MLPs to represent objects and scenes as continuous functions. We demonstrate that representing scenes as 5D neural radiance fields (an MLP that outputs volume density and view-dependent emitted radiance as a function of 3D location and 2D viewing direction) produces better renderings than the previously-dominant approach of training deep convolutional networks to output discretized voxel representations.
Although we have proposed a hierarchical sampling strategy to make rendering more sample-efficient (for both training and testing), there is still much more progress to be made in investigating techniques to efficiently optimize and render neural radiance fields. Another direction for future work is interpretability: sampled representations such as voxel grids and meshes admit reasoning about the expected quality of rendered views and failure modes, but it is unclear how to analyze these issues when we encode scenes in the weights of a deep neural network. We believe that this work makes progress towards a graphics pipeline based on real world imagery, where complex scenes could be composed of neural radiance fields optimized from images of actual objects and scenes.
致謝:
We thank Kevin Cao, Guowei Frank Yang, and Nithin Raghavan for comments and discussions. RR acknowledges funding from ONR grants N000141712687 and N000142012529 and the Ronald L. Graham Chair. BM is funded by a Hertz Foundation Fellowship, and MT is funded by an NSF Graduate Fellowship. Google provided a generous donation of cloud compute credits through the BAIR Commons program. We thank the following Blend Swap users for the models used in our realistic synthetic dataset: gregzaal (ship), 1DInc (chair), bryanajones (drums), Herberhold (ficus), erickfree (hotdog), Heinzelnisse (lego), elbrujodelatribu (materials), and up3d.de (mic).
A????其他實施細節(jié)
網(wǎng)絡體系結構
圖7詳細描述了我們簡單的全連接的體系結構。

我們全連接的網(wǎng)絡架構的可視化。輸入向量顯示為綠色,中間隱藏層顯示為藍色,輸出向量顯示為紅色,每個塊內的數(shù)字表示向量的維度。所有層都是標準的全連接層,黑色箭頭表示具有ReLU激活的層,橙色箭頭表示沒有激活的層,黑色虛線箭頭表示具有sigmoid激活的層,`+''表示向量拼接。輸入位置的位置編碼()通過8個完全連接的ReLU層,每個層有256個通道。我們遵循DeepSDF[32]體系結構,并包含一個將此輸入連接到第五層激活的跳過連接。另一層輸出體積密度
(使用ReLU校正以確保輸出體積密度為非負)和256維特征向量。該特征向量與輸入觀察方向的位置編碼
相連,并由另一個具有128個通道的完全連接的ReLU層處理。最后一層(帶有sigmoid激活)在
位置輸出發(fā)射的RGB輻射,由
方向的光線觀察。
Volume Bounds
我們的方法通過查詢沿相機光線在連續(xù)5D坐標下的神經輻射場表示來渲染視圖。對于合成圖像的實驗,我們縮放場景,使其位于以原點為中心的邊長為2的立方體內,并且僅查詢此邊界體積內的表示。我們的真實圖像數(shù)據(jù)集包含的內容可以存在于最近點和無窮遠處的任何位置,因此我們使用歸一化設備坐標將這些點的深度范圍映射到[?1, 1]. 這會將所有光線原點移動到場景的近平面,將攝影機的透視光線映射到變換體積中的平行光線,并使用視差(逆深度)而不是公制深度,因此所有坐標現(xiàn)在都有界。
訓練詳細信息
對于真實場景數(shù)據(jù),我們通過在優(yōu)化過程中(在通過ReLU之前)向輸出σ值添加具有零均值和單位方差的隨機高斯噪聲來調整我們的網(wǎng)絡,發(fā)現(xiàn)這稍微提高了渲染新視圖的視覺性能。我們在Tensorflow中實現(xiàn)了我們的模型[1]。
渲染詳細信息
為了在測試時渲染新視圖,我們通過粗略網(wǎng)絡對每條光線采樣64個點,通過精細網(wǎng)絡對每條光線采樣64+128=192個點,總共對每條光線進行256次網(wǎng)絡查詢。我們的真實合成數(shù)據(jù)集需要每個圖像640k條光線,而我們的真實場景需要每個圖像762k條光線,因此每個渲染圖像需要1.5億到2億次網(wǎng)絡查詢。在NVIDIA V100上,每幀大約需要30秒。
B其他基線方法詳細信息
神經體積(NV)[24]
我們使用作者在https://github.com/facebookresearch/neuralvolumes并按照他們的程序在單個場景上進行訓練,無時間依賴性。
場景表示網(wǎng)絡(SRN)[42]
我們使用作者在https://github.com/vsitzmann/scene-representation-networks并遵循他們在單一場景中的訓練程序。
局部光場融合(LLFF)[28]
我們使用作者在https://github.com/Fyusion/LLFF.
定量比較
作者發(fā)布的SRN實現(xiàn)需要大量GPU內存,即使在4個NVIDIA V100 GPU上并行,圖像分辨率也限制在512×512像素。我們計算合成數(shù)據(jù)集的SRN量化指標為512×512像素,真實數(shù)據(jù)集的SRN量化指標為504×376像素,而其他可在更高分辨率下運行的方法的SRN量化指標分別為800×800和1008×752。
C NDC射線空間求導
我們在標準化設備坐標(NDC)空間中使用“前向”捕獲重建真實場景,該空間通常用作三角形光柵化管道的一部分。該空間很方便,因為它在將z軸(相機軸)轉換為視差線性時保留了平行線。
這里,我們推導了應用于光線的變換,以將光線從相機空間映射到NDC空間。齊次坐標的標準三維透視投影矩陣為:
其中,n、f是近剪裁平面和遠剪裁平面,r和t是近剪裁平面處場景的右邊界和上邊界。(請注意,這是在約定中,相機在?z方向。)要投影一個齊次點(x,y,z,1)>,我們左乘M,然后除以第四個坐標:
投影點現(xiàn)在位于歸一化設備坐標(NDC)空間中,其中原始視錐已映射到立方體[?1, 1]3 .
我們的目標是獲取一條射線o+td,并計算NDC空間中的射線原點o 0和方向d 0,以便對于每個t,存在一個新的t 0,其中π(o+td)=o 0+t 0d 0(其中π是使用上述矩陣的投影)。換句話說,原始光線和NDC空間光線的投影追蹤出相同的點(但不一定以相同的速率)。
讓我們重寫等式中的投影點。9組件(axx/z、ayy/z、az+bz/z)>。新原點o 0和方向d 0的組件必須滿足:
為了消除自由度,我們決定t 0=0和t=0應映射到同一點。替換t=0和t 0=0等式。10直接給出我們的NDC空間原點o 0:
這就是原始光線原點的投影π(o)。通過將其替換回Eqn。10對于任意t,我們可以確定t 0和d 0的值:
分解出一個只依賴于t的公共表達式,我們可以得到:
注意,根據(jù)需要,當t=0時,t 0=0。此外,我們看到t 0→ 1作為t→ ∞. 回到原始投影矩陣,我們的常數(shù)是:
使用標準針孔相機模型,我們可以重新參數(shù)化為:
其中,W和H是圖像的寬度和高度(以像素為單位),fcam是相機的焦距。
在我們真實的前向捕獲中,我們假設遠場景邊界是無窮大的(這花費我們很少,因為NDC使用z維來表示反向深度,即視差)。在此限制條件下,z常數(shù)簡化為:
將所有內容結合在一起:
在我們的實現(xiàn)中,最后一個細節(jié)是:我們將o移動到射線與z=?n(在本次NDC轉換之前),采用=o+tnd表示tn=?(氮+盎司)/dz。一旦我們轉換為NDC射線,這允許我們簡單地從0到1對t 0進行線性采樣,以獲得從n到∞ 在原始空間中。
D其他結果
每場景細分表3、4、5和6將主要論文中給出的定量結果細分為每場景指標。每場景細分與本文提出的聚合量化指標一致,其中我們的方法在量化上優(yōu)于所有基線。雖然LLFF實現(xiàn)了略好的LPIPS指標,但我們敦促讀者查看我們的補充視頻,其中我們的方法實現(xiàn)了更好的多視圖一致性,產生的偽影比所有基線都少。
編者注,公式推導可參考:
https://blog.csdn.net/YuhsiHu/article/details/124318473
NeRF的離散化引用了這篇:https://courses.cs.duke.edu/spring03/cps296.8/papers/max95opticalModelsForDirectVolumeRendering.pdf