0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

了解NeRF 神經(jīng)輻射場

3D視覺工坊 ? 來源:3D視覺工坊 ? 2023-06-12 09:52 ? 次閱讀

介紹

NeRFNeural Radiance Fields)是一種先進(jìn)的計算機(jī)圖形學(xué)技術(shù),能夠生成高度逼真的3D場景。它通過深度學(xué)習(xí)的方法從2D圖片中學(xué)習(xí),并生成連續(xù)的3D場景模型。NeRF的工作原理是自監(jiān)督的,通過在有限的輸入視圖上訓(xùn)練數(shù)據(jù),可以用較少的數(shù)據(jù)集生成高質(zhì)量的渲染。相比傳統(tǒng)方法中使用離散化的網(wǎng)格或體素表示場景,NeRF的連續(xù)函數(shù)表示具有優(yōu)勢,并能夠從任意角度渲染,產(chǎn)生令人驚嘆的高質(zhì)量渲染效果。

NeRF的引入在2020年由 Ben Mildenhall 等人的論文 "NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis"中提出。這項研究是在加州大學(xué)伯克利分校與谷歌的聯(lián)合項目中完成的。NeRF不僅可以從訓(xùn)練時使用的輸入視圖角度渲染場景,還能夠從任意角度進(jìn)行渲染,創(chuàng)造出優(yōu)于現(xiàn)有渲染方法的高質(zhì)量可視效果。

NeRF 提出的動機(jī)

NeRF的出現(xiàn)源于對傳統(tǒng)的3D重建技術(shù)的局限性的觀察。傳統(tǒng)的3D重建技術(shù),如立體重建和深度學(xué)習(xí)的3D卷積神經(jīng)網(wǎng)絡(luò),主要依賴于離散的3D體素或點云表示來對3D空間進(jìn)行建模。這些方法雖然取得了一些進(jìn)展,但都存在著各種問題,比如模型精細(xì)度的限制、處理透明和半透明物體的困難等。

模型精細(xì)度的限制:對于基于體素或者點云的方法,它們的精細(xì)度往往受到計算能力和內(nèi)存限制。對于體素,你需要在三維空間中創(chuàng)建一個網(wǎng)格并存儲每個格子的信息。如果你想要增加模型的精細(xì)度,你需要增加網(wǎng)格的密度,這會使得所需的內(nèi)存呈立方級增長。對于點云,雖然可以適應(yīng)不同的形狀和大小,但是精細(xì)的細(xì)節(jié)需要大量的點來表示,這也會導(dǎo)致計算和內(nèi)存的需求增加。

處理透明和半透明物體的困難:傳統(tǒng)的3D重建方法通常假設(shè)每個3D點都是完全不透明的,即它們完全吸收或反射所有到達(dá)的光線。這忽略了物體的透明度或半透明度,因此在處理玻璃、水或氣體等物體時會導(dǎo)致錯誤的結(jié)果。

NeRF是為了解決現(xiàn)有3D重建方法的一些局限性而提出的。傳統(tǒng)的3D重建方法通常需要在離散的3D體素或三角網(wǎng)格上操作,這可能導(dǎo)致模型的分辨率和細(xì)節(jié)程度受到限制。而NeRF的方法是在連續(xù)的3D空間中操作,這意味著它可以生成具有任意分辨率和任意細(xì)節(jié)的模型。

此外,NeRF的方法還可以自然地處理場景中的透明度和混合色,這是許多傳統(tǒng)方法難以處理的問題。另外,由于NeRF使用的是神經(jīng)網(wǎng)絡(luò),所以它可以利用深度學(xué)習(xí)的強(qiáng)大能力,從一系列2D圖像中學(xué)習(xí)出復(fù)雜的3D場景。

具體來說:

對于模型精細(xì)度的限制:NeRF通過將場景建模為連續(xù)的輻射場并使用神經(jīng)網(wǎng)絡(luò)進(jìn)行參數(shù)化,避免了離散表示帶來的精細(xì)度限制。神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)到連續(xù)的函數(shù),所以可以以任意精度渲染場景。此外,所有的信息都嵌入到神經(jīng)網(wǎng)絡(luò)的權(quán)重中,所以內(nèi)存使用量主要取決于網(wǎng)絡(luò)的大小,而不是場景的復(fù)雜度或分辨率。

對于處理透明和半透明物體的困難:NeRF通過為每個3D位置分配一個密度值來解決這個問題。這個密度值描述了光線通過該位置時的衰減程度,所以可以自然地表示透明和半透明效果。在體積渲染過程中,NeRF會考慮到每個3D位置上的密度值,并計算光線在通過場景時的累積影響,從而能夠準(zhǔn)確地渲染透明和半透明物體。

總的來說,NeRF通過使用神經(jīng)網(wǎng)絡(luò)和體積渲染的方法,克服了傳統(tǒng)3D重建方法的一些主要限制,從而能夠以高精度和高細(xì)節(jié)級別重建和渲染3D場景。

571ee00a-08ac-11ee-962d-dac502259ad0.png

什么是3D輻射場(Radiance Field)?

在深入地理解3D輻射場之前,首先需要理解“輻射”和“輻射場”的概念。

“輻射”

光學(xué)中,“輻射”一詞通常用于描述光(或更一般地,電磁波)的傳播。具體來說,給定空間中的一個點和一個方向,"輻射"描述的是從這個點沿這個方向傳播的光的強(qiáng)度或能量。在許多情況下,我們更關(guān)心的是“光度”,即人眼對光的感知,這包括光的顏色和亮度。

“輻射場”

“輻射場”則是一個更高級別的概念。一個輻射場實際上是一個定義在空間中的函數(shù),它給出了在每一個空間點、每一個方向上的輻射(或光度)。這就是3D輻射場的定義。

舉個例子,假設(shè)你在一個室內(nèi)環(huán)境中,有一個亮度和顏色都在變化的燈光源。你現(xiàn)在想要用一個函數(shù)來描述整個空間中的光度情況。這個函數(shù)應(yīng)該能告訴你在每個位置,從每個方向看過去的光的顏色和亮度是什么。這個函數(shù)就是3D輻射場。

具體到計算機(jī)圖形學(xué)和計算機(jī)視覺中,3D輻射場被用來表示和渲染3D場景。

它能夠準(zhǔn)確地描述場景中的光照、陰影、反射和折射等復(fù)雜光學(xué)現(xiàn)象。

通過對3D輻射場的采樣和計算,我們可以從任意視角渲染出場景的圖像,甚至可以模擬出透明和半透明物體,以及復(fù)雜的光線傳播效果,如散射和吸收等。

例如,虛擬現(xiàn)實(VR)和增強(qiáng)現(xiàn)實(AR)就是3D輻射場的一種應(yīng)用。在VR和AR中,我們需要根據(jù)用戶的視角動態(tài)地渲染3D場景。通過3D輻射場,我們可以快速地從任意視角計算出場景的圖像,從而實現(xiàn)實時的、自由的視角切換。

另一個例子是電影制作。在電影中,通常需要創(chuàng)建一些復(fù)雜的3D場景,并從不同視角進(jìn)行渲染。通過使用3D輻射場,我們可以創(chuàng)建出高質(zhì)量的、具有真實光線傳播效果的3D場景,使得電影的視覺效果更加逼真。

3D輻射場描述了 3D空間中光的分布和行為的方式。具體來說,它為3D空間中的每一個點分配了一個顏色和一個透明度(或者說體密度)值。顏色描述了從該點射出的光的顏色,而透明度描述了光線穿過該點時被吸收或散射的程度。

顏色: 對于空間中的一個點p和一個方向 d ,顏色描述了從點p沿著方向d射出的光的顏色。這個顏色是由在點 p 處的所有光源(包括直接的和間接的)在方向d上的光線的顏色組成的。

例如,如果在p處有一個紅色的光源,那么 將會包含紅色的成分。如果在p處沒有光源,但是在d方向上有一個反射面,那么 將會包含反射面反射過來的光的顏色。

體密度(透明度): 體密度 σ(p) 描述了在點p處光線的吸收或散射的程度。

如果 σ(p) 較高,那么在點p處的光線將會被大量吸收或散射,這意味著在p處的物體是不透明的或者是高度散射的(例如霧或云)。

如果 σ(p) 較低,那么在點p處的光線將會被較少吸收或散射,這意味著在p處的物體是透明的或者是低度散射的(例如清晰的空氣或水)。

3D輻射場是一個函數(shù) ,其輸入是一個3D坐標(biāo) p 和一個方向 d ,輸出是在那個坐標(biāo)和方向上的顏色和體密度,即 c(p, d) 和 σ(p) 。這個函數(shù)描述了3D空間中的光的分布和行為:它告訴我們在空間中的任意一個點,沿著任意一個方向,我們可以看到什么顏色的光,以及這個光線被吸收或散射的程度。

輸入:函數(shù)的輸入由兩部分組成:一個3D空間中的點和一個方向。

這里的3D空間可以是任何你希望描述其光照屬性的空間,例如一個室內(nèi)環(huán)境、一個城市街道,或者整個宇宙。方向可以是任何方向,你可以想象這是一個從觀察者眼睛發(fā)出的光線的方向。

因此,這個函數(shù)實際上是在描述:在3D空間中的任何點,沿著任何方向,我們能看到什么

輸出:函數(shù)的輸出是在輸入點和方向上的顏色和體密度值。

顏色值描述了你在指定的點和方向上看到的光的顏色。

體密度值描述了光線穿過指定點時的吸收或散射程度。

更具體地說,如果你在一個3D場景中選擇一個點p和一個方向d,那么函數(shù)L(p, d)將會告訴你:如果你站在點p,朝著方向d看過去,你將會看到什么顏色的光(c(p, d)),以及這個光線被穿過的物體吸收或散射的程度(σ(p))。

這種描述方法使得3D輻射場可以對3D空間中的光照情況進(jìn)行高度精細(xì)的描述,包括復(fù)雜的光線傳播效果,如陰影、反射、折射、透明和半透明效果等。這也是為什么3D輻射場在計算機(jī)圖形學(xué)和計算機(jī)視覺中如此重要,因為它可以用于渲染高質(zhì)量、逼真的3D場景。

574ba144-08ac-11ee-962d-dac502259ad0.png

NeRF 和 3D輻射場之間的關(guān)系

NeRF(Neural Radiance Fields)和3D輻射場是緊密關(guān)聯(lián)的,實際上,NeRF就是利用深度神經(jīng)網(wǎng)絡(luò)來建模和學(xué)習(xí)3D輻射場。

NeRF提出的方法是以神經(jīng)網(wǎng)絡(luò)來模擬連續(xù)的3D輻射場,即將一個3D坐標(biāo)點和一個視線方向映射到一個顏色和密度。

這種表示方式對應(yīng)于真實世界的物理特性,使得3D模型可以自然地表達(dá)物體的顏色和透明度,也使得3D模型可以以任意的精度和分辨率來表示。

根據(jù)前面的描述可知,3D輻射場是一個描述3D空間中光的分布和行為的函數(shù),它將每個3D空間中的點和一個方向映射到一個顏色和體密度值。然而,在實際應(yīng)用中,我們通常并不能直接得到這個函數(shù),因此我們需要找到一種方法來逼近或?qū)W習(xí)這個函數(shù)。這就是NeRF的任務(wù)。

NeRF提出了一種基于深度神經(jīng)網(wǎng)絡(luò)的方法,該網(wǎng)絡(luò)接受一個3D空間中的點和一個方向作為輸入,輸出該點和方向上的顏色和體密度值。通過在一組2D圖片上訓(xùn)練,NeRF能夠學(xué)習(xí)到這個深度神經(jīng)網(wǎng)絡(luò)的參數(shù),從而學(xué)習(xí)到3D輻射場的近似表示。

NeRF的目標(biāo)是通過一組2D圖片重建3D場景。

它不是直接在像素或三維體素上進(jìn)行操作,而是在連續(xù)的三維空間中學(xué)習(xí)和推斷一個函數(shù),這個函數(shù)可以用來描述空間中的場景。

NeRF建立了一個完全由神經(jīng)網(wǎng)絡(luò)表示的3D場景模型,這個模型旨在描述一個場景中所有3D位置(由世界坐標(biāo)表示)以及從任何觀察角度看到的顏色。

具體來說,NeRF訓(xùn)練的過程是這樣的:它將一組2D圖片(通常是同一個3D場景的不同視角的圖片)作為輸入,然后通過優(yōu)化算法調(diào)整網(wǎng)絡(luò)的參數(shù),使得網(wǎng)絡(luò)輸出的3D輻射場能夠最好地重現(xiàn)這組2D圖片。訓(xùn)練結(jié)束后,我們就得到了一個能夠描述3D場景的深度神經(jīng)網(wǎng)絡(luò),這個網(wǎng)絡(luò)實際上就是3D輻射場的近似表示。

因此,可以說NeRF是一種用深度神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)和建模3D輻射場的方法。這種方法有許多優(yōu)點,例如它能夠生成連續(xù)、全景的3D場景模型,可以自然地表達(dá)物體的顏色和透明度,可以以任意的精度和分辨率來表示3D模型,等等。這使得NeRF在3D重建和視圖合成等任務(wù)上具有非常高的性能。

5769d22c-08ac-11ee-962d-dac502259ad0.png

NeRF的核心思想

NeRF(Neural Radiance Fields)的核心思想是使用深度神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)3D空間中任意一點在給定視線(由觀察點和方向定義)下的顏色和體密度。主要依賴于神經(jīng)網(wǎng)絡(luò)來建模和學(xué)習(xí)3D空間中的輻射場,而這個神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程是通過觀察一系列2D訓(xùn)練圖片來完成的。

NeRF的核心思想可以用以下幾點來表述:

建模3D輻射場:NeRF使用深度神經(jīng)網(wǎng)絡(luò)來建模3D空間中的輻射場。

這個神經(jīng)網(wǎng)絡(luò)接受3D空間中的坐標(biāo)點和一個方向作為輸入,輸出對應(yīng)點和方向的顏色和體密度。在物理上,顏色代表從這個3D坐標(biāo)點沿著指定方向射出的光的顏色,而體密度則表示光線在穿過這個點時被吸收或散射的程度。

連續(xù)的3D場景表示:NeRF的一個關(guān)鍵特點是它對3D場景的表示是連續(xù)的,而不是離散的。

這是通過使用全連接的神經(jīng)網(wǎng)絡(luò)來實現(xiàn)的,這種網(wǎng)絡(luò)可以接受任意的實數(shù)輸入,并輸出相應(yīng)的顏色和體密度。因此,NeRF可以以任意的精度和分辨率來表示3D模型。

視角無關(guān)性:NeRF對3D場景的表示是視角無關(guān)的。

這是因為它是在3D空間中建模的,而不是在2D圖像空間中。這意味著,一旦NeRF模型被訓(xùn)練好,就可以從任何角度對其進(jìn)行渲染,而不需要重新訓(xùn)練模型。

通過2D圖像訓(xùn)練:NeRF通過觀察一系列2D訓(xùn)練圖片來學(xué)習(xí)這個深度神經(jīng)網(wǎng)絡(luò)的參數(shù)。

具體來說,它會將一組2D圖片(通常是同一個3D場景的不同視角的圖片)作為輸入,然后通過優(yōu)化算法調(diào)整網(wǎng)絡(luò)的參數(shù),使得網(wǎng)絡(luò)輸出的3D輻射場能夠最好地重現(xiàn)這組2D圖片。

處理透明和半透明物體:NeRF的另一個重要特點是它能夠處理透明和半透明物體。

這是通過預(yù)測每個3D坐標(biāo)點的體密度來實現(xiàn)的,體密度可以表示光線在穿過這個點時被吸收或散射的程度。

總的來說,NeRF的核心思想是通過深度學(xué)習(xí)來學(xué)習(xí)和預(yù)測3D空間中任意一點在給定視線下的顏色和體密度,從而從一系列2D訓(xùn)練圖片中生成連續(xù)、詳細(xì)、全景的3D場景表示。這一過程中涉及到對3D輻射場的建模、連續(xù)的3D場景表示、視角無關(guān)性以及透明度處理等多個關(guān)鍵環(huán)節(jié)。

全連接神經(jīng)網(wǎng)絡(luò)作為場景的連續(xù)3D表示:這是NeRF的一項創(chuàng)新,通過神經(jīng)網(wǎng)絡(luò)建立了3D坐標(biāo)點及觀察方向與光線密度和顏色之間的映射關(guān)系。

這種表示形式可以更好地處理細(xì)節(jié),并且在新的視角下更加準(zhǔn)確,因為它允許任意的視角插值,而無需再進(jìn)行訓(xùn)練。

體積渲染公式:NeRF使用體積渲染公式對沿視線路徑上的顏色和密度進(jìn)行積分,以生成最終的2D圖像。這考慮了物體透明度的影響,并且可以通過改變路徑上的積分步數(shù)來適應(yīng)不同的場景。

分解顏色和體密度的表示:NeRF的另一個關(guān)鍵思想是將顏色和體密度的表示進(jìn)行分解,顏色與觀察方向有關(guān),體密度與觀察方向無關(guān)。

這允許NeRF可以在視線方向上處理復(fù)雜的光線效果,例如高光和反射。

優(yōu)化和訓(xùn)練:NeRF優(yōu)化的目標(biāo)是減小由神經(jīng)網(wǎng)絡(luò)生成的圖像和訓(xùn)練集圖像之間的差異。訓(xùn)練數(shù)據(jù)是一組同一場景的2D圖像,每張圖像都有相應(yīng)的相機(jī)參數(shù)(包括位置和方向)。這些數(shù)據(jù)足以訓(xùn)練網(wǎng)絡(luò)預(yù)測3D輻射場,并能夠從任意新的視角渲染出場景圖像。

NeRF(Neural Radiance Fields)的訓(xùn)練過程通常被認(rèn)為是自監(jiān)督學(xué)習(xí),因為它使用的監(jiān)督信號是輸入數(shù)據(jù)自身,而不是外部提供的標(biāo)簽

具體來說,NeRF的訓(xùn)練過程使用了一組2D圖像和相應(yīng)的相機(jī)參數(shù)(包括位置和方向)。神經(jīng)網(wǎng)絡(luò)的目標(biāo)是預(yù)測能夠產(chǎn)生訓(xùn)練圖像的3D場景的輻射場。這種情況下,監(jiān)督信號(即目標(biāo)輸出)就是輸入的2D圖像自身,因此可以認(rèn)為這是一種自監(jiān)督學(xué)習(xí)。

5794dd32-08ac-11ee-962d-dac502259ad0.png

NeRF的實現(xiàn)技術(shù)

根據(jù)前面的介紹可知,NeRF的主要目標(biāo)是從一組2D圖片中學(xué)習(xí)出3D場景的連續(xù)表示。而這個表示方式被稱為3D輻射場,它用一個函數(shù)來描述3D空間中光的行為。給定一個3D點和一個視線方向,這個函數(shù)可以輸出那個3D點在那個視線方向上的顏色以及光線被吸收或者散射的程度。

那么NeRF是如何做到這一點的呢?它采用了深度學(xué)習(xí)的方法。具體來說,NeRF訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò),使得這個神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)和近似上述的3D輻射場函數(shù)。神經(jīng)網(wǎng)絡(luò)的輸入是一個3D坐標(biāo)和一個視線方向,輸出是那個3D點在那個視線方向上的顏色和體密度。

為了訓(xùn)練這個神經(jīng)網(wǎng)絡(luò),先收集一系列從不同角度和位置拍攝的2D圖像,然后用這些圖像來訓(xùn)練網(wǎng)絡(luò)。

通過優(yōu)化神經(jīng)網(wǎng)絡(luò),使得從訓(xùn)練圖像中的每一個像素向場景中射出的光線的顏色和真實圖像盡可能一致,神經(jīng)網(wǎng)絡(luò)就可以學(xué)習(xí)到場景的3D表示。

整個NeRF的流程是這樣:它通過深度學(xué)習(xí)的方法學(xué)習(xí)3D場景的連續(xù)表示,然后使用這個表示來從新的視角渲染場景圖像。這是一個從2D到3D,再到2D的過程,但是這個過程中獲得的是對3D場景的連續(xù)和詳細(xì)的描述,這對于3D場景的重建和渲染都是非常有用的。這個過程可以進(jìn)一步分解如下:

數(shù)據(jù)收集:收集一組2D圖像,這些圖像從不同的角度和位置捕獲了同一場景。

這些圖片都是對同一3D場景的拍攝,所以在這個場景中,每個物體都會在多個圖像中出現(xiàn),只是視角和位置不同。

預(yù)處理:對于每張圖像,我們需要知道相機(jī)的參數(shù),包括相機(jī)的位置和方向。

這些參數(shù)可以用來確定從相機(jī)位置出發(fā),經(jīng)過圖像上每個像素,向場景中射出的視線的方向。

神經(jīng)網(wǎng)絡(luò)訓(xùn)練:我們使用這些數(shù)據(jù)訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò)。這個網(wǎng)絡(luò)的目標(biāo)是能夠根據(jù)3D坐標(biāo)和視線方向預(yù)測出那個位置的顏色和體密度。

在訓(xùn)練過程中,使網(wǎng)絡(luò)預(yù)測的顏色值和真實的2D圖像盡可能一致,神經(jīng)網(wǎng)絡(luò)就能學(xué)習(xí)到場景的3D表示。而為了實現(xiàn)這個目標(biāo),我們通過比較網(wǎng)絡(luò)預(yù)測的顏色和圖像中的真實顏色來計算誤差,然后通過反向傳播算法來更新網(wǎng)絡(luò)的參數(shù)。

神經(jīng)網(wǎng)絡(luò)的輸入是每個3D位置和相應(yīng)的視線方向,輸出是預(yù)測的顏色和密度值。

顏色值代表了該3D位置的顏色。

密度值代表了從相機(jī)向該3D位置射出的光線在途中被吸收或散射的程度。

渲染:當(dāng)神經(jīng)網(wǎng)絡(luò)訓(xùn)練完畢后,我們就得到了一個可以描述3D場景的模型。我們可以使用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)從任意新的視角渲染場景圖像。

給定一個新的視角,我們可以通過這個模型來渲染出新的場景圖像。

我們只需要對每個像素確定出一個視線,然后使用神經(jīng)網(wǎng)絡(luò)預(yù)測沿著這個視線的所有3D點的顏色,最后把這些顏色組合起來,就可以得到新的圖像。

體積渲染 (volume rendering)

為了從這個網(wǎng)絡(luò)生成2D圖像,NeRF使用了一種稱為體積渲染 (volume rendering) 的技術(shù)。這是一種處理半透明物體的技術(shù),它將光線沿視線路徑的所有顏色貢獻(xiàn)加權(quán)求和來生成最終的像素顏色。

簡單來說,體積渲染是通過將沿著每個像素的射線上的所有顏色值加權(quán)求和(其中權(quán)重由密度值決定)來生成圖像的。

這個過程可以很自然地處理透明度和混合色,從而生成真實的圖像。

這個過程基本上就是沿著每個像素的射線方向,積分所有3D點的顏色和密度。

體積渲染 (volume rendering) 技術(shù)是一個關(guān)鍵步驟,因為它允許我們通過從每個像素的射線上積分所有顏色和密度來創(chuàng)建2D圖像

體積渲染過程首先確定出射線路徑(從相機(jī)位置通過每個像素),然后在這些射線上采樣一系列3D點,并通過神經(jīng)網(wǎng)絡(luò)獲取這些點的顏色和密度值。

然后,將這些顏色值根據(jù)相應(yīng)的密度值進(jìn)行加權(quán)疊加,從而得到最終的像素顏色。這個過程可以很好地處理顏色混合和透明物體。

這個過程充分考慮了光線在物體間傳播的物理規(guī)則,因此,通過NeRF生成的圖像不僅可以高度逼真,而且可以從任何新的視角渲染出來。

這種技術(shù)的潛力非常大,因為它不僅可以用于3D渲染和虛擬現(xiàn)實,也可以用于計算機(jī)視覺和機(jī)器學(xué)習(xí)等其他領(lǐng)域。

體積渲染是一種處理3D數(shù)據(jù)的技術(shù),它可以生成從任意視角觀察3D場景的2D圖像。這種技術(shù)在許多領(lǐng)域都有應(yīng)用,比如醫(yī)療成像(例如CT掃描和MRI掃描)、科學(xué)可視化(例如氣候模型和電子云模型),以及電影和電視特效制作等。

在體積渲染中,每個3D數(shù)據(jù)點通常有一個或多個屬性,比如顏色、透明度、密度或其他的物理性質(zhì)。渲染的目標(biāo)是將這些3D數(shù)據(jù)點轉(zhuǎn)化為2D圖像上的像素,同時考慮視點、光線傳播和物體間的相互作用。

NeRF(神經(jīng)輻射場)中的體積渲染方法是一種特殊的體積渲染方法。在這種方法中,3D空間中的每一個點都由神經(jīng)網(wǎng)絡(luò)預(yù)測的一個顏色值和一個體密度值描述。然后,沿著每個像素的射線,積分所有3D點的顏色和體密度,從而生成2D圖像。

具體來說,對于每個像素,首先確定一個射線,然后在射線上采樣一系列3D點,對這些點的顏色值進(jìn)行加權(quán)求和,權(quán)重由體密度決定,從而得到最終的像素顏色。

需要通過體積渲染來計算像素的顏色。體積渲染的公式可以表示為:

其中:

渲染出的顏色;

表示的是從相機(jī)位置到3D空間點s之間的媒介透射率。

T(s) 是從視點到3D點的透明度函數(shù),可以理解為從相機(jī)到當(dāng)前3D點之間所有點的體密度的指數(shù)積;

透射率衡量了光線在通過物質(zhì)后保持其強(qiáng)度的能力。

在這個公式中,透射率等于路徑上所有點的體密度的負(fù)指數(shù)積分,這意味著密度越大,透射率越小,更多的光線會被吸收。

是3D空間點s的體密度。

是在3D空間點s處視線方向的顏色。

上面的公式是體積渲染的核心公式,它說明了生成每個像素的顏色是如何由沿射線方向的一系列3D點的顏色和體密度決定的。

位置編碼和方向編碼

為了幫助神經(jīng)網(wǎng)絡(luò)捕獲微妙的幾何細(xì)節(jié)以及復(fù)雜的光線傳輸現(xiàn)象,如反射和透射,NeRF引入了對3D空間位置和觀察方向的編碼。位置編碼和方向編碼是一種強(qiáng)制神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)場景中幾何和光線傳播細(xì)節(jié)的方法。

這是NeRF中用于處理3D空間位置和觀察方向的技術(shù)。它使用正弦和余弦函數(shù)對輸入的坐標(biāo)和方向進(jìn)行編碼,從而更好地處理幾何細(xì)節(jié)和光線傳播。

在訓(xùn)練網(wǎng)絡(luò)時,3D位置和觀察方向首先會被編碼為更高維的向量,然后才輸入到神經(jīng)網(wǎng)絡(luò)中。

這種編碼使用的是一個簡單的正弦和余弦函數(shù)的系列,這種編碼方式可以使得神經(jīng)網(wǎng)絡(luò)能夠更好地捕捉到細(xì)微的空間和方向變化。

通過對輸入的3D坐標(biāo)和視線方向進(jìn)行一系列正弦和余弦函數(shù)變換,生成的多尺度頻率編碼可以幫助神經(jīng)網(wǎng)絡(luò)更好地建模場景的復(fù)雜細(xì)節(jié)。

它的目的是以更高的頻率捕獲物體的幾何細(xì)節(jié)和光線傳播?;?strong>位置和方向的原始坐標(biāo)和編碼坐標(biāo),神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)到不同的幾何和光學(xué)特性。

NeRF 利用傅里葉級數(shù)來編碼輸入位置和視線方向。

傅里葉級數(shù)是一種分析數(shù)學(xué)工具,可以將任何周期性函數(shù)表示為正弦和余弦的和。

通過對空間和方向進(jìn)行傅里葉編碼,NeRF 增加了神經(jīng)網(wǎng)絡(luò)對幾何和光照變化的感知能力。

具體來說,對于一個給定的 3D 點位置 和方向 ,它們都可以被分解為其對應(yīng)的頻域表示。這個頻域表示就是嵌入向量。嵌入向量包含了原始的點和方向,以及一系列正弦和余弦函數(shù)對它們進(jìn)行編碼后的結(jié)果。

位置 和方向 轉(zhuǎn)換為嵌入向量 和 ,其位置編碼和方向編碼公式如下:

其中,決定了編碼的頻率,這是一個可以調(diào)整的超參數(shù),它控制了正弦和余弦函數(shù)的頻率的上限。一般來說,較大的 會讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到更豐富的幾何和光照細(xì)節(jié),但也會增加計算復(fù)雜度。

嵌入向量中的正弦和余弦項給神經(jīng)網(wǎng)絡(luò)提供了處理周期性和反射性質(zhì)的能力,這對于描述復(fù)雜的幾何形狀和光線傳播特別重要。

例如,對于一個周期性的紋理,如果只使用原始的點和方向作為輸入,神經(jīng)網(wǎng)絡(luò)可能很難學(xué)習(xí)到這個周期性。但如果使用了傅立葉編碼,神經(jīng)網(wǎng)絡(luò)就可以通過調(diào)節(jié)對應(yīng)頻率的權(quán)重來表示這個周期性。

這種編碼方式的靈感來源于傅立葉變換和傅立葉級數(shù)的性質(zhì),它們能夠?qū)⑷魏魏瘮?shù)表示為一系列正弦和余弦函數(shù)的和。通過將這種性質(zhì)應(yīng)用到神經(jīng)渲染中,NeRF 可以生成更真實的圖像,并且對于幾何和光照的處理也更加精確。

分層采樣策略 (Hierarchical Sampling Strategy)

在渲染過程中,光線會穿過許多不同的體素(體積元素),一條射線可能穿過多個物體或者穿過一個物體的多個部分,每個部分都會對最終像素顏色產(chǎn)生貢獻(xiàn)。

由于體積渲染涉及對光線路徑上的所有體素進(jìn)行積分,因此需要對這些體素進(jìn)行采樣。

然而,不是所有的體素對于生成最終的圖像都相同重要。

有些體素可能包含了大量的細(xì)節(jié)信息,比如對象的邊緣或是紋理的詳細(xì)部分,而其他的體素可能只包含了空氣或是非常平滑的表面。

對于這后者,我們并不需要進(jìn)行很密集的采樣。

為了解決這個問題,為了有效地利用采樣點,NeRF使用了一種分層采樣策略來更高效地進(jìn)行體積渲染。這是一種用于體積渲染的技術(shù),用于優(yōu)化渲染效率。

NeRF利用分層采樣策略對預(yù)測的體密度較高的區(qū)域進(jìn)行更密集、更精細(xì)的采樣采樣。在這種策略中,首先在整個射線上均勻地采樣一些點,然后在預(yù)測的體密度高的區(qū)域再進(jìn)行更細(xì)致的采樣。

首先進(jìn)行均勻的粗采樣 (coarse sampling) ,獲取預(yù)測的體密度分布。根據(jù)這些粗采樣點的密度預(yù)測結(jié)果,根據(jù)這個分布,再在預(yù)測的體密度高的區(qū)域進(jìn)行更細(xì)粒度的采樣 (fine sampling)。

這樣可以更有效地使用采樣點,更準(zhǔn)確地估計每個像素的顏色值。

這種策略可以使得采樣過程更加集中在重要的區(qū)域,可以將計算資源更有效地分配到圖像的重要部分,可以更有效地利用采樣點,從而提高渲染效率,并提高渲染質(zhì)量。

分層采樣策略的優(yōu)點是它可以顯著提高渲染的效率和質(zhì)量。因為它將計算資源集中在了那些對生成圖像質(zhì)量最重要的區(qū)域,所以它可以在有限的計算資源下生成更高質(zhì)量的圖像。

這種策略的靈感來源于計算機(jī)圖形學(xué)中的重要性采樣技術(shù) (importance sampling)。

重要性采樣是一種選擇性地對那些對結(jié)果有重大影響的部分進(jìn)行采樣的方法。

通過將這種方法應(yīng)用到體積渲染中,NeRF能夠更高效地渲染復(fù)雜的3D場景。

光線投射(Ray Casting)

這是一種在3D場景中生成2D圖像的技術(shù),它將每個像素看作從相機(jī)位置出發(fā)的一條光線,并使用神經(jīng)網(wǎng)絡(luò)預(yù)測沿著光線路徑的顏色和體密度。

NeRF使用光線投射來確定每個像素的射線方向。給定相機(jī)位置和像素位置,可以計算出射線的起點和方向。

然后,NeRF在射線上采樣一系列3D點,并通過神經(jīng)網(wǎng)絡(luò)預(yù)測這些點的顏色和體密度。

具體來說,將每個像素視為從相機(jī)位置出發(fā)的一條光線,每個像素都有一條從相機(jī)位置出發(fā)、通過像素中心、指向場景的射線。然后沿這條光線采樣多個3D點,輸入神經(jīng)網(wǎng)絡(luò)得到顏色和體密度,最后使用體積渲染技術(shù)得到最終的像素顏色。這個過程可以形式化為一個積分問題,公式如下:

其中 是射線 的顏色, 是到 3D 點的透射度, 是 3D 點的體密度, 是 3D 點的顏色。

差分渲染(Differential Rendering)

由于NeRF的目標(biāo)是使生成的圖像盡可能接近真實的2D圖像,這需要計算圖像的梯度并進(jìn)行反向傳播。然而,由于體積渲染是通過積分操作得到像素顏色,直接計算梯度是非常困難的。

差分渲染是指對渲染結(jié)果進(jìn)行微分,得到結(jié)果關(guān)于輸入?yún)?shù)的梯度。這對于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練非常重要,因為梯度信息可以用來優(yōu)化神經(jīng)網(wǎng)絡(luò)的參數(shù)。

差分渲染是一種重要的計算機(jī)圖形學(xué)技術(shù),允許我們計算圖像關(guān)于其輸入?yún)?shù)(例如光源位置、物體表面材質(zhì)等)的梯度。

差分渲染在NeRF中的實現(xiàn),主要涉及對體積渲染公式的微分。NeRF利用差分渲染技術(shù),這使得神經(jīng)網(wǎng)絡(luò)生成的圖像可以進(jìn)行反向傳播,從而優(yōu)化網(wǎng)絡(luò)參數(shù)。具體來說,NeRF通過對體積渲染的公式進(jìn)行微分,得到每個像素顏色關(guān)于神經(jīng)網(wǎng)絡(luò)參數(shù)的梯度,實現(xiàn)了光線的顏色和神經(jīng)網(wǎng)絡(luò)參數(shù)之間的導(dǎo)數(shù)計算。

這樣,就可以通過梯度下降算法來優(yōu)化神經(jīng)網(wǎng)絡(luò),使得生成的圖像盡可能接近訓(xùn)練數(shù)據(jù)中的真實圖像。由于神經(jīng)網(wǎng)絡(luò)和體積渲染過程都是可微的,NeRF可以計算生成圖像與真實圖像之間的誤差關(guān)于神經(jīng)網(wǎng)絡(luò)參數(shù)的梯度。

我們可以簡單地看這個問題為最小化損失函數(shù)的問題,其中損失函數(shù)定義為生成圖像與真實圖像之間的誤差。如果我們把神經(jīng)網(wǎng)絡(luò)的參數(shù)表示為,那么我們的目標(biāo)就是找到一組參數(shù),使得損失函數(shù)L最小。為了實現(xiàn)這一目標(biāo),我們需要計算損失函數(shù)關(guān)于參數(shù)的梯度,然后通過梯度下降算法來更新參數(shù)。

在具體的計算過程中,我們首先需要計算每個像素的顏色c關(guān)于體積密度σ和顏色c的導(dǎo)數(shù),然后通過鏈?zhǔn)椒▌t,可以計算出損失函數(shù)L關(guān)于網(wǎng)絡(luò)參數(shù)θ的梯度。然后,我們可以使用這些梯度來更新網(wǎng)絡(luò)參數(shù)。這種差分渲染技術(shù)使得NeRF可以利用已有的深度學(xué)習(xí)框架進(jìn)行訓(xùn)練(如TensorFlow或PyTorch的自動微分功能),同時也使得NeRF可以從少量的2D圖像中學(xué)習(xí)出3D場景的連續(xù)表示。

假設(shè)神經(jīng)網(wǎng)絡(luò)的參數(shù)為,光線在處的顏色可以通過下面的公式進(jìn)行計算:

其中,是光線在處之前的傳輸函數(shù),是處的體積密度,是處的顏色。

那么,我們的目標(biāo)就是最小化生成的圖像和真實圖像之間的差異,也就是最小化損失函數(shù)。

然后,我們可以通過計算損失函數(shù)關(guān)于參數(shù)的梯度來更新參數(shù),即,其中,是學(xué)習(xí)率。

通過這種方法,NeRF可以逐步改進(jìn)神經(jīng)網(wǎng)絡(luò)的性能,使生成的圖像越來越接近真實的圖像。這種技術(shù)的靈感來源于深度學(xué)習(xí)中的反向傳播算法,是一種將神經(jīng)網(wǎng)絡(luò)應(yīng)用于計算機(jī)圖形學(xué)的有效方法。

57c0db44-08ac-11ee-962d-dac502259ad0.png

NeRF的基本原理

NeRF的核心概念是用一個深度神經(jīng)網(wǎng)絡(luò)來表示一個場景的3D輻射場(radiance field)。這個輻射場可以被理解為一個函數(shù),其輸入是一個3D位置和一個視線方向,輸出是在該位置和方向下的顏色和密度

NeRF的基本原理其實是建立在經(jīng)典的體積渲染理論之上,而NeRF的主要創(chuàng)新點在于將一個深度神經(jīng)網(wǎng)絡(luò)用于預(yù)測3D空間中的顏色和密度信息。

NeRF模型中的主要函數(shù)可以表示為:

這里,是一個深度神經(jīng)網(wǎng)絡(luò),它接收一個3D空間點和一個視線方向作為輸入,并輸出該點的顏色和體密度。

在NeRF的框架中,神經(jīng)網(wǎng)絡(luò)是用來學(xué)習(xí)和表示場景的3D顏色和密度信息的工具。它的輸入是一個3D坐標(biāo)和一個方向,輸出是在該坐標(biāo)處的顏色和體密度。這種表示方式允許網(wǎng)絡(luò)對3D空間中的每個點進(jìn)行細(xì)粒度的建模,同時保持了對視角的感知,因為顏色輸出是依賴于方向的。

函數(shù)實際上是神經(jīng)網(wǎng)絡(luò)對場景的表示。這里的是神經(jīng)網(wǎng)絡(luò)的參數(shù),可以通過訓(xùn)練學(xué)習(xí)得到。

具體來說,訓(xùn)練過程是這樣的:

給定一系列2D圖像和對應(yīng)的攝像機(jī)參數(shù)(包括攝像機(jī)位置和視角等),首先將攝像機(jī)參數(shù)轉(zhuǎn)換為3D空間中的射線。

對于每一條射線,通過一定的方法(如均勻采樣或重要性采樣)選取一些點,然后計算出這些點到攝像機(jī)的方向。將這些點的坐標(biāo)和方向作為輸入,送入神經(jīng)網(wǎng)絡(luò),得到每個點的顏色和體密度。

在訓(xùn)練過程中,給定一系列2D圖像和對應(yīng)的攝像機(jī)參數(shù),我們可以將每個2D圖像上的像素想象成從相機(jī)位置出發(fā)的一條射線。為了預(yù)測這條射線的顏色,我們需要在3D空間中沿著這條射線采樣多個點。

例如,我們可以選擇沿著射線等間距地采樣10個點,然后將這10個點的3D坐標(biāo)和對應(yīng)的視線方向作為輸入,輸入到神經(jīng)網(wǎng)絡(luò)中,得到這10個點的顏色和體密度。值得注意的是,射線的方向是一個重要的輸入,因為在許多場景中,物體的顏色會隨著觀察的角度變化,這被稱為視差效應(yīng)。

然后,使用上面的體積渲染公式,從這些顏色和體密度計算出射線的顏色。

得到顏色和體密度之后,就可以利用體積渲染公式來計算出射線的顏色。這個公式基本上是將沿射線的所有點的顏色進(jìn)行加權(quán)疊加,其中權(quán)重是通過體密度來計算的。具體來說,一個點的體密度越高,它對最終顏色的貢獻(xiàn)就越大。

最后,將計算出的射線顏色與2D圖像上對應(yīng)的像素顏色進(jìn)行比較,計算出誤差,通過梯度下降等優(yōu)化算法來更新神經(jīng)網(wǎng)絡(luò)的參數(shù),使得預(yù)測的顏色盡可能接近真實的顏色。

將計算出的射線顏色與2D圖像上對應(yīng)的像素顏色進(jìn)行比較,計算出誤差。這個誤差可以看作是神經(jīng)網(wǎng)絡(luò)預(yù)測的顏色與真實顏色之間的差距。通過反向傳播這個誤差,我們可以計算出神經(jīng)網(wǎng)絡(luò)參數(shù)的梯度,并使用優(yōu)化算法(如梯度下降)來更新參數(shù),使得預(yù)測的顏色更接近真實的顏色。

通過大量的2D圖像和對應(yīng)的攝像機(jī)參數(shù)進(jìn)行訓(xùn)練,神經(jīng)網(wǎng)絡(luò)可以逐漸學(xué)會如何根據(jù)3D位置和視線方向來預(yù)測顏色和體密度,實現(xiàn)了從2D圖像到3D場景的學(xué)習(xí)和重建,從而形成對3D場景的理解。

這種方法的好處是,它不需要對場景進(jìn)行顯式的3D建模,而是通過一個可微的神經(jīng)網(wǎng)絡(luò)隱式地學(xué)習(xí)場景的3D表示,這使得它能夠處理非常復(fù)雜和詳細(xì)的場景。同時,由于其基于射線的渲染方式,它也能自然地處理復(fù)雜的光線效應(yīng),如陰影、反射和折射等。

NeRF的整體流程

NeRF方法使得它可以從一系列2D圖片中學(xué)習(xí)并生成一個連續(xù)、全景的3D場景模型,能夠處理透明度和復(fù)雜的光照條件,而且可以以任意的精度和細(xì)節(jié)級別來表示。這使得NeRF在3D重建和視圖合成的領(lǐng)域具有廣泛的潛力和應(yīng)用前景。

數(shù)據(jù)收集:NeRF使用一系列從不同角度和位置拍攝的2D圖片作為輸入。這些圖片可以是實際拍攝的,也可以是通過計算機(jī)圖形學(xué)生成的。

首先,收集一系列在不同角度和視點下拍攝的2D圖像作為輸入數(shù)據(jù)。這些圖像應(yīng)盡可能包含足夠的視角覆蓋,以覆蓋整個3D場景。

神經(jīng)網(wǎng)絡(luò)訓(xùn)練:NeRF使用一個深度神經(jīng)網(wǎng)絡(luò)來表示3D輻射場(radiance field)。這個網(wǎng)絡(luò)接收一個3D坐標(biāo)和一個方向作為輸入,輸出該坐標(biāo)處的顏色和體密度。這個網(wǎng)絡(luò)是通過最小化模型預(yù)測的顏色和實際圖像的顏色之間的誤差來訓(xùn)練的。

在NeRF中,通常使用一個全連接的多層感知機(jī)(MLP)神經(jīng)網(wǎng)絡(luò)來表達(dá)3D空間中的顏色和密度。給定一個3D坐標(biāo)和一個方向,神經(jīng)網(wǎng)絡(luò)會輸出在坐標(biāo)處的顏色和體密度。具體的函數(shù)表示如下:

其中代表神經(jīng)網(wǎng)絡(luò),是神經(jīng)網(wǎng)絡(luò)的參數(shù)。這個網(wǎng)絡(luò)通過最小化預(yù)測的顏色和實際圖像的顏色之間的誤差來進(jìn)行訓(xùn)練。

體積渲染:訓(xùn)練好神經(jīng)網(wǎng)絡(luò)之后,NeRF會通過體積渲染的技術(shù),從神經(jīng)輻射場生成2D圖像。具體來說,它計算沿每個像素射線方向的顏色和體密度的加權(quán)和,生成最終的2D圖像。

對于給定的一條射線,我們需要計算出這條射線上每一點對于最后形成的像素顏色的貢獻(xiàn)。其顏色計算公式如下:

這個公式表示沿射線的顏色的積分,其中每個位置的顏色被其體密度和沿射線的可見性所加權(quán)。

在這個公式中:

這個公式的基本思想是,我們沿著射線方向,對射線上每一點的顏色按照其體密度和透射函數(shù)進(jìn)行加權(quán),然后累積這些顏色,得到的就是射線最終的顏色。這個過程相當(dāng)于模擬了真實世界中光線穿過物體并被物體顏色影響的過程。

而其中, 表示光線穿過點之前的所有點的累積透明度,計算公式為:

這個公式的意思是,光線在到達(dá)某一點時,其顏色已經(jīng)因為途徑點的體積密度而衰減,所以需要一個衰減因子來表示這種衰減。

在這個公式中,是在點的體密度,計算的是從攝像機(jī)(在處)到的光線路徑中所有點的體密度之和。這個和被認(rèn)為是光線在到達(dá)前被吸收的程度,其負(fù)指數(shù)就是光線在到達(dá)前剩余的光線強(qiáng)度,也就是。

這里,被稱為透射函數(shù)(transmittance function),代表了從攝像機(jī)出發(fā),到達(dá)空間中點時,光線的衰減程度。光線在經(jīng)過某一點前,如果途徑的介質(zhì)(例如空氣、水、玻璃、煙霧等)密度較大或者路徑較長,那么光線就會發(fā)生更大的衰減。

因此,如果路徑上的總體密度大(表示有很多物質(zhì)可以吸收或散射光線),那么就會接近于0,表示光線大部分被吸收;相反,如果路徑上的總體密度?。ū硎局挥猩倭课镔|(zhì)吸收或散射光線),那么就會接近于1,表示大部分光線沒有被吸收。

表示射線在處的空間坐標(biāo)。

表示在處的體密度。體密度越大,說明該處物質(zhì)越密集,對光線的影響也就越大。

表示在處的顏色

表示從射線起點到點的透射函數(shù),也就是(下面解釋)光線衰減程度。

可見性是通過計算光線從攝像機(jī)到當(dāng)前位置之間所有位置的體密度的積分來計算的,表示了光線在到達(dá)當(dāng)前位置之前有多少光被吸收了。

新視圖生成:一旦訓(xùn)練好神經(jīng)網(wǎng)絡(luò),就可以根據(jù)用戶指定的新視點和視角,生成新的2D圖像,這些圖像可以是從訓(xùn)練數(shù)據(jù)中未出現(xiàn)過的角度和位置觀察的。

由于NeRF的場景表達(dá)是全局的和連續(xù)的,因此可以很自然地生成新視圖,包括訓(xùn)練數(shù)據(jù)中未曾出現(xiàn)過的視角。這對于許多應(yīng)用如虛擬現(xiàn)實、增強(qiáng)現(xiàn)實和3D打印等都很有用。

請注意,在實際應(yīng)用中,可能還需要進(jìn)行其他一些步驟,例如前處理(如圖像對齊和標(biāo)準(zhǔn)化)、后處理(如圖像融合和濾波)、超參數(shù)調(diào)整等。但在概念上,上面這些步驟已經(jīng)涵蓋了NeRF的核心整體流程。

NeRF的優(yōu)勢與局限性

NeRF的主要優(yōu)勢在于其能夠生成高度詳細(xì)和高度真實的3D模型,而且這些模型可以從任何角度渲染出新的2D圖像。

這一特性使得NeRF在許多領(lǐng)域有很大的潛力,包括虛擬和增強(qiáng)現(xiàn)實、游戲開發(fā)、3D打印、電影制作以及更廣泛的圖形學(xué)應(yīng)用。

此外,因為NeRF生成的是連續(xù)的3D模型,而不是像傳統(tǒng)的3D重建方法那樣生成離散的3D體素或三角形網(wǎng)格,所以NeRF生成的模型可以具有更高的解析度和更細(xì)的細(xì)節(jié)。

具體如下:

高質(zhì)量渲染:NeRF通過學(xué)習(xí)場景的3D輻射場來生成圖像,而這種方式可以非常好地恢復(fù)場景的細(xì)節(jié),如紋理、光照和遮擋等。NeRF在渲染出的圖像中,不僅物體的形狀和紋理細(xì)節(jié)表現(xiàn)得生動逼真,而且光照和陰影效果也展現(xiàn)得十分真實,這都得益于NeRF的深度神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)過程中對場景中的復(fù)雜關(guān)系進(jìn)行了高度抽象和理解。

例如,你想生成一張圖片,圖片的場景是一個裝滿各種水果的籃子。如果你使用NeRF技術(shù),生成的圖片不僅會真實地展現(xiàn)出水果的形狀、顏色和紋理,還會準(zhǔn)確地展現(xiàn)出陰影和反射等光照效果。你可以清楚地看到水果表面的紋理,例如蘋果的光滑表面、橙子的粗糙皮,甚至可以看到籃子的編織細(xì)節(jié)。這種高質(zhì)量的渲染效果是因為NeRF通過學(xué)習(xí)場景的3D輻射場,精確地模擬了物體和光線之間的交互。

連續(xù)性:NeRF表示的是一個連續(xù)的3D模型,這與傳統(tǒng)的3D重建方法(如基于體素或三角網(wǎng)格的方法)有很大區(qū)別。這種連續(xù)的表示方式使NeRF可以在任意位置給出顏色和體密度的信息,因此能夠捕捉到場景中的細(xì)微細(xì)節(jié),例如物體邊緣的微小變化,或者物體表面的精細(xì)紋理等。

假設(shè)使用NeRF來模擬一座古老的建筑。傳統(tǒng)的3D重建方法可能會生成一個由多個小方塊(體素)或三角形網(wǎng)格組成的模型,這種模型可能無法準(zhǔn)確地展現(xiàn)建筑的某些細(xì)節(jié),例如雕刻的線條或磚塊的質(zhì)感。然而,NeRF生成的是一個連續(xù)的3D模型,這意味著你可以在任意位置得到顏色和體密度的信息,因此可以清晰地看到建筑表面的每一個細(xì)節(jié)。

全景場景建模:NeRF使用深度神經(jīng)網(wǎng)絡(luò)來表示整個場景的3D輻射場,因此它可以處理全景的場景建模。這一特性使NeRF可以捕捉和重建大范圍內(nèi)的3D場景,包括室內(nèi)、室外、城市景觀等各種環(huán)境。

假設(shè)有一個項目需要重建一個城市街景。使用NeRF,你可以生成一個完整的3D模型,包括街道、建筑、車輛,甚至是人行道上的灌木和樹木。你可以從任何角度查看這個模型,甚至可以像在Google Street View中那樣,自由地在街景中移動和旋轉(zhuǎn)。

任意視角渲染:NeRF的另一個重要優(yōu)點是,一旦訓(xùn)練好,它可以在任意視點和視角生成2D圖像。這意味著,我們可以在任意位置、任意角度觀察NeRF重建的3D場景,甚至可以在場景中自由移動和旋轉(zhuǎn),從而觀察場景中的不同部分。這對于許多應(yīng)用,如虛擬現(xiàn)實(VR)、增強(qiáng)現(xiàn)實(AR)等,都是非常有價值的。

例如,你可能有一個3D模型的古堡,并希望生成一系列從不同角度看古堡的圖像。使用NeRF,你可以輕松地做到這一點。你甚至可以在古堡的模型中自由移動和旋轉(zhuǎn),生成從古堡內(nèi)部看向外部的圖像。

對光照和材質(zhì)的建模:NeRF不僅可以捕捉場景的3D結(jié)構(gòu),而且可以捕捉場景的復(fù)雜光照和材質(zhì)信息。這意味著,NeRF不僅可以重建物體的形狀,還可以重建物體的表面紋理和光照效果。這也是NeRF能夠生成高質(zhì)量渲染圖像的一個重要原因。

假設(shè)正在重建一個室內(nèi)場景,場景中有一個木質(zhì)的桌子和一個金屬的燈。使用NeRF,你可以不僅重建出桌子和燈的形狀,還可以重建出它們的材質(zhì)和光照效果。你可以看到木桌的木紋,感受到它的質(zhì)感;你也可以看到金屬燈反射的光線,感受到它的光澤。

無需顯式的3D重建:盡管NeRF的內(nèi)部工作機(jī)制是通過學(xué)習(xí)一個3D輻射場,但在訓(xùn)練和推理過程中,NeRF并不需要進(jìn)行顯式的3D建模,也不需要估計深度信息。這使得NeRF的訓(xùn)練和使用過程更為簡單和直接。

例如,可能有一系列從不同角度拍攝的物體的2D圖片,你想用這些圖片來生成新的視圖。使用NeRF,你可以直接輸入這些2D圖片,然后生成新的視圖,而不需要先重建一個3D模型,或者估計圖片中的深度信息。這使得NeRF的使用更為簡單和直接。

當(dāng)然,這種方法也有一些局限性,例如訓(xùn)練和渲染過程需要大量的計算資源,而且對于有大量動態(tài)內(nèi)容和復(fù)雜反射的場景,NeRF可能無法處理得很好。

NeRF的局限性,主要包括:

計算成本高:NeRF的訓(xùn)練和推理過程需要大量的計算資源。這是因為,NeRF需要對整個3D輻射場進(jìn)行建模,并且需要渲染大量的2D圖像。因此,NeRF在大規(guī)模的場景中的應(yīng)用可能會受到限制。

處理動態(tài)場景困難:目前的NeRF主要適用于靜態(tài)場景,對動態(tài)場景的處理能力有限。這是因為,NeRF的訓(xùn)練過程需要大量的時間,而在這個過程中,場景中的物體和光照條件可能會發(fā)生變化。

處理反射和透明度復(fù)雜的物體困難:雖然NeRF可以處理一些反射和透明度的效果,但對于具有復(fù)雜反射和透明度的物體,NeRF可能無法處理得很好。這是因為,這些效果依賴于物體的視角和光照條件,而這些因素在NeRF的訓(xùn)練過程中是難以考慮的。

需求高質(zhì)量的輸入數(shù)據(jù):NeRF依賴于高質(zhì)量的輸入數(shù)據(jù),如高分辨率的圖片和準(zhǔn)確的相機(jī)參數(shù)。如果這些數(shù)據(jù)的質(zhì)量不高,那么NeRF的效果可能會受到影響。

訓(xùn)練時間長:盡管NeRF可以生成高質(zhì)量的渲染圖像,但其訓(xùn)練過程通常需要大量的時間和計算資源。這可能會限制NeRF在實時應(yīng)用中的使用。

NeRF的應(yīng)用

NeRF(Neural Radiance Fields)是一種新興的3D重建和視圖合成技術(shù),雖然研究起步不久,但已經(jīng)在許多領(lǐng)域顯示出巨大的潛力。至2023年為止,以下是一些NeRF已經(jīng)應(yīng)用或可能應(yīng)用的領(lǐng)域:

影視制作:在電影制作中,特效是非常關(guān)鍵的一部分。傳統(tǒng)的3D模型創(chuàng)建和渲染方法通常需要大量的人力和時間,而且結(jié)果的質(zhì)量也會受到限制。

NeRF提供了一種新的方法,可以通過學(xué)習(xí)一系列照片來自動創(chuàng)建和渲染3D模型。這種方法不僅可以提高效率,而且可以生成非常高質(zhì)量的結(jié)果。例如,NeRF可以用于創(chuàng)建真實的角色或場景模型,然后在任何角度渲染這些模型,以便在電影中使用。

游戲開發(fā):在游戲開發(fā)中,環(huán)境建模是一個重要的部分。傳統(tǒng)的建模方法通常需要大量的手工作業(yè),而且結(jié)果的質(zhì)量也會受到限制。

NeRF提供了一種新的方法,可以通過學(xué)習(xí)一系列照片來自動創(chuàng)建3D環(huán)境模型。這種方法不僅可以提高效率,而且可以生成非常詳細(xì)和真實的環(huán)境模型。例如,NeRF可以用于創(chuàng)建游戲中的城市景觀,森林,山脈等環(huán)境。

虛擬現(xiàn)實(VR)和增強(qiáng)現(xiàn)實(AR):VR和AR是最能體現(xiàn)NeRF優(yōu)勢的領(lǐng)域。在VR和AR中,用戶可以在虛擬世界中自由移動和查看,因此需要在任何角度都能生成高質(zhì)量的2D圖像。

NeRF正好滿足這個需求,它可以用來創(chuàng)建高質(zhì)量的3D場景模型,然后在任何視點和視角渲染這些模型。例如,NeRF可以用于創(chuàng)建VR游戲的場景,或者在AR應(yīng)用中生成虛擬物體。

3D打印:NeRF生成的3D模型具有高精度和連續(xù)性,這使得這些模型非常適合用于3D打印。傳統(tǒng)的3D建模方法通常需要大量的手工作業(yè),并且難以捕捉到物體的細(xì)微細(xì)節(jié)。

NeRF提供了一種新的方法,可以通過學(xué)習(xí)一系列照片來自動創(chuàng)建3D模型,這些模型不僅具有高精度,而且能夠捕捉到物體的細(xì)微細(xì)節(jié)。例如,NeRF可以用于創(chuàng)建復(fù)雜的工藝品或機(jī)械零件的3D模型,然后直接使用這些模型進(jìn)行3D打印。

這些僅僅是NeRF的幾個潛在應(yīng)用,其在更多領(lǐng)域的應(yīng)用還在探索和發(fā)展中。例如,在建筑設(shè)計,地理信息系統(tǒng)(GIS),醫(yī)療成像等領(lǐng)域,NeRF都可能發(fā)揮重要的作用。
責(zé)任編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 3D
    3D
    +關(guān)注

    關(guān)注

    9

    文章

    2878

    瀏覽量

    107538
  • 輻射
    +關(guān)注

    關(guān)注

    1

    文章

    598

    瀏覽量

    36340
  • 建模
    +關(guān)注

    關(guān)注

    1

    文章

    305

    瀏覽量

    60774

原文標(biāo)題:一文詳解 | 你還沒了解NeRF 神經(jīng)輻射場嗎?

文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    NeRF的基本概念及工作原理

    神經(jīng)輻射 (NeRF) 是一個完全連接的神經(jīng)網(wǎng)絡(luò),可以基于部分 2D 圖像集生成復(fù)雜 3D 場景的新視圖。它被訓(xùn)練使用渲染損失來重現(xiàn)場景的
    的頭像 發(fā)表于 08-29 11:01 ?2.3w次閱讀

    Block nerf:可縮放的大型場景神經(jīng)視圖合成

    為了在大場景中應(yīng)用神經(jīng)輻射NeRF)模型,文章提出將大型場景分解為相互重疊的子場景 (block),每一個子場景分別訓(xùn)練,在推理時動態(tài)結(jié)合相鄰 Block-
    的頭像 發(fā)表于 10-19 15:15 ?1536次閱讀

    基于BlockNeRF的大場景規(guī)?;?b class='flag-5'>神經(jīng)視圖合成

    為了在大場景中應(yīng)用神經(jīng)輻射NeRF)模型,文章提出將大型場景分解為相互重疊的子場景 (block),每一個子場景分別訓(xùn)練,在推理時動態(tài)結(jié)合相鄰 Block-
    的頭像 發(fā)表于 10-19 15:15 ?918次閱讀

    NeRF的研究目的是合成同一景不同視角下的圖像

    為了順利完成上面過程,我們可能需要維護(hù)碩大無朋Tensor來表示輻射,查表獲取RGB和密度。這里一個問題是空間有多大表就有多大,同時只能是離散表示的。NeRF要做的事情是用一個神經(jīng)網(wǎng)
    的頭像 發(fā)表于 01-29 10:54 ?1296次閱讀

    NerfingMVS:引導(dǎo)優(yōu)化神經(jīng)輻射實現(xiàn)室內(nèi)多視角三維重建

    既然Nerf可以表示場景的三維信息,一個自然的想法是能不能將NeRF應(yīng)用到室內(nèi)場景三維重建任務(wù)中呢。NeRF有著一些優(yōu)勢:相較于傳統(tǒng)的MVS,SfM算法,NeRF蘊含了整個場景的信息,
    的頭像 發(fā)表于 02-13 11:20 ?3069次閱讀

    介紹一種神經(jīng)成對配準(zhǔn)的技術(shù)NeRF2NeRF

    我們介紹了一種神經(jīng)成對配準(zhǔn)的技術(shù),它擴(kuò)展了基于優(yōu)化的經(jīng)典局部配準(zhǔn)(即ICP)以操作神經(jīng)輻射NeRF
    的頭像 發(fā)表于 02-20 10:29 ?651次閱讀

    NeRF2NeRF神經(jīng)輻射的配對配準(zhǔn)介紹

    我們介紹了一種神經(jīng)成對配準(zhǔn)的技術(shù),它擴(kuò)展了基于優(yōu)化的經(jīng)典局部配準(zhǔn)(即ICP)以操作神經(jīng)輻射NeRF
    的頭像 發(fā)表于 03-31 16:49 ?902次閱讀

    基于NeRF的隱式GAN架構(gòu)

    ? 3D對象的生成模型在VR和增強(qiáng)現(xiàn)實應(yīng)用中越來越受歡迎。但使用標(biāo)準(zhǔn)的3D表示(如體素或點云)來訓(xùn)練這些模型是具有挑戰(zhàn)性的,并且需要復(fù)雜的工具來進(jìn)行適當(dāng)?shù)念伾秩尽?神經(jīng)輻射(NeRF
    的頭像 發(fā)表于 06-14 10:16 ?1061次閱讀
    基于<b class='flag-5'>NeRF</b>的隱式GAN架構(gòu)

    基于神經(jīng)輻射(NeRFs)的自動駕駛模擬器

    如今,自動駕駛汽車可以在普通情況下平穩(wěn)駕駛,人們普遍認(rèn)為,真實的傳感器模擬將在通過模擬解決剩余的極端情況方面發(fā)揮關(guān)鍵作用。為此,我們提出了一種基于神經(jīng)輻射(NeRFs)的自動駕駛模擬器。
    發(fā)表于 08-01 14:46 ?756次閱讀
    基于<b class='flag-5'>神經(jīng)</b><b class='flag-5'>輻射</b><b class='flag-5'>場</b>(NeRFs)的自動駕駛模擬器

    WACV 2023 I從ScanNeRF到元宇宙:神經(jīng)輻射的未來

    神經(jīng)輻射NeRF)通過將三維場景編碼成隱式表示,在視覺領(lǐng)域中廣泛應(yīng)用。通過學(xué)習(xí)多層感知機(jī)(MLP)來建立隱式映射,其中包括中間的MLP(pos)用于推斷密度和嵌入,淺層的MLP(r
    的頭像 發(fā)表于 09-01 16:14 ?615次閱讀
    WACV 2023 I從ScanNeRF到元宇宙:<b class='flag-5'>神經(jīng)</b><b class='flag-5'>輻射</b><b class='flag-5'>場</b>的未來

    利用PyTorch實現(xiàn)NeRF代碼詳解

    神經(jīng)輻射NeRF)是一種利用神經(jīng)網(wǎng)絡(luò)來表示和渲染復(fù)雜的三維場景的方法。它可以從一組二維圖片中學(xué)習(xí)出一個連續(xù)的三維函數(shù),這個函數(shù)可以給出空
    的頭像 發(fā)表于 10-21 09:46 ?745次閱讀

    NeurlPS&apos;23開源 | 大規(guī)模室外NeRF也可以實時渲染

    神經(jīng)輻射 (NeRF)是一種新穎的隱式三維重建方法,顯示出巨大的潛力,受到越來越多的關(guān)注。它能夠僅從一組照片中重建3D場景。然而,它的實時渲染能力,尤其是對于大規(guī)模場景的交互式實時渲
    的頭像 發(fā)表于 11-08 16:41 ?1025次閱讀
    NeurlPS&apos;23開源 | 大規(guī)模室外<b class='flag-5'>NeRF</b>也可以實時渲染

    基于幾何分析的神經(jīng)輻射編輯方法

    《Interactive NeRF Geometry Editing with Shape Priors》 [1]提出了一種基于幾何分析的交互式神經(jīng)輻射編輯方法。
    的頭像 發(fā)表于 11-20 16:56 ?584次閱讀
    基于幾何分析的<b class='flag-5'>神經(jīng)</b><b class='flag-5'>輻射</b><b class='flag-5'>場</b>編輯方法

    NeRF入門基礎(chǔ)知識詳解

    deep networks 更傾向于學(xué)習(xí)低頻的函數(shù),實際場景的神經(jīng)輻射基本上都是高頻的
    的頭像 發(fā)表于 02-21 14:21 ?1418次閱讀
    <b class='flag-5'>NeRF</b>入門基礎(chǔ)知識詳解

    全面總結(jié)動態(tài)NeRF

    1. 摘要 神經(jīng)輻射NeRF)是一種新穎的隱式方法,可以實現(xiàn)高分辨率的三維重建和表示。在首次提出NeRF的研究之后,
    的頭像 發(fā)表于 11-14 16:48 ?340次閱讀
    全面總結(jié)動態(tài)<b class='flag-5'>NeRF</b>