NeRF 在2020年ECCV上名聲大噪,作為best paper展示作者在網(wǎng)上收羅了NeRF的相關(guān)評(píng)說(shuō),匯總?cè)缦拢瑑?nèi)容可能雜亂,可作為對(duì)NeRF初步認(rèn)識(shí)的資料。
Vanilla NeRF
什么是NeRF?
NeRF所要做的 task 是 Novel View Synthesis,一般翻譯為新視角合成任務(wù)
在已知視角下對(duì)場(chǎng)景進(jìn)行一系列的捕獲 (包括拍攝到的圖像,以及每張圖像對(duì)應(yīng)的內(nèi)外參),合成新視角下的圖像
NeRF 不需要中間三維重建的過(guò)程,僅根據(jù)位姿內(nèi)參和圖像,直接合成新視角下的圖像。
NeRF 引入了輻射場(chǎng)的概念,這在圖形學(xué)中是非常重要的概念。
渲染方程式的定義:
方程表示了空間點(diǎn)$ xin R^3 $在方向 $d in R^3$ 上的輻射$L_o$.
等式右邊第一項(xiàng) 表示 x 為光源點(diǎn)時(shí),自身在d方向釋放的輻射。
等式右邊第二項(xiàng) 表示該點(diǎn)折射在方向d 上的輻射,其中 $Omega$ 為入射方向 $omega_i$的半球集合。
$fr(cdot)$為散射函數(shù),$Li$為從 $omega_i$方向接收到的輻射
輻射和顏色的關(guān)系:
光就是電磁輻射, 或振蕩的電磁場(chǎng)
光又有波長(zhǎng)和頻率,二者乘積為光速
光的顏色是由頻率決定的
大多數(shù)光是不可見(jiàn)的,人眼可見(jiàn)的光譜稱(chēng)為可見(jiàn)光譜,對(duì)應(yīng)的頻率就是我們認(rèn)為的顏色
*NeRF表示3D場(chǎng)為可學(xué)習(xí)的,連續(xù)的輻射場(chǎng) $F_{ heta}$ *
Positional Encoding
deep networks 更傾向于學(xué)習(xí)低頻的函數(shù),實(shí)際場(chǎng)景的神經(jīng)輻射場(chǎng)基本上都是高頻的
作者提出了 Positional Encoding (注意這里的 Positional Encoding 和 Transformer 中的 Positional Encoding 很像,但是解決問(wèn)題是不一樣的
Hierarchical volume sampling
使用體渲染積分遇到的問(wèn)題:
雖然可以離散的近似計(jì)算積分,采樣點(diǎn)過(guò)多開(kāi)銷(xiāo)過(guò)大,采樣點(diǎn)過(guò)少近似誤差有太大。
解決辦法:最好盡可能的避免在空缺部分以及被遮擋了的部分進(jìn)行過(guò)多的采樣,因?yàn)檫@些部分對(duì)最好的顏色貢獻(xiàn)是很少的
NeRF 提出分層采樣訓(xùn)練的方式,如下圖所示:
使用兩個(gè)網(wǎng)絡(luò)同時(shí)進(jìn)行訓(xùn)練 (后稱(chēng) coarse 和 fine 網(wǎng)絡(luò))
coarse 網(wǎng)絡(luò)輸入的點(diǎn)是通過(guò)對(duì)光線(xiàn)均勻采樣得到的
根據(jù) coarse 網(wǎng)絡(luò)預(yù)測(cè)的體密度值,對(duì)光線(xiàn)的分布進(jìn)行估計(jì),然后根據(jù)估計(jì)出的分布進(jìn)行第二次重要性采樣
然后再把所有的采樣點(diǎn) [公式] 一起輸入到 fine 網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)。
NeRF 存在的問(wèn)題:
實(shí)時(shí)性不好
泛化性不強(qiáng)
不能處理動(dòng)態(tài)場(chǎng)景
拍攝方式有限制
參考鏈接2:https://zhuanlan.zhihu.com/p/466217848
NeRF原理
NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
NeRF主要功能:使用靜態(tài)場(chǎng)景下的多個(gè)視角的照片(大約幾十至上百?gòu)垼铣沙鋈我庑乱暯堑膱D片。NeRF的算法思路:
Step1 :
使用MLP學(xué)習(xí)該場(chǎng)景的隱式3D模型表達(dá)
MLP模型示意圖。輸入一個(gè)3d點(diǎn)x和觀(guān)測(cè)方向d的高頻編碼向量,網(wǎng)絡(luò)預(yù)測(cè)該點(diǎn)的密度sigma和顏色c
Step 2:使用體渲染方程將3D場(chǎng)景渲染成圖片
圖形上的點(diǎn) P(u,v,1) , 他的像素值 rgb 可以通過(guò)對(duì)該點(diǎn)P發(fā)出的射線(xiàn)上的所有的點(diǎn) 的 c 和體密度 進(jìn)行積分得到。
-
Step 3:訓(xùn)練
從該點(diǎn)發(fā)出的射線(xiàn)在世界坐標(biāo)系中的表示為
起始點(diǎn) [公式] 的世界坐標(biāo)也同樣可以由相機(jī)的內(nèi)外參求得
然后在該射線(xiàn)上采樣n個(gè)采樣點(diǎn)。
使用MLP預(yù)測(cè)這n個(gè)點(diǎn)的體密度,和c ,然后使用體渲染方程的離散公式算出該像素點(diǎn)的預(yù)測(cè)值 rgb。
然后計(jì)算預(yù)測(cè)的顏色值和真實(shí)顏色值的L2距離作為loss進(jìn)行監(jiān)督訓(xùn)練。
訓(xùn)練集是幾十張或者幾百?gòu)堅(jiān)搱?chǎng)景不同相機(jī)位姿拍攝的圖片
首先使用SFM算法求出所有圖片的相機(jī)相對(duì)世界坐標(biāo)系的位姿 (R,t)
每張圖片的每個(gè)像素點(diǎn)都是一個(gè)訓(xùn)練樣本(u,v) → rgb
以像素點(diǎn)(u,v)為例:
Step 4:觀(guān)測(cè)方向d的作用
一個(gè)點(diǎn)的密度密度只能是該點(diǎn)位置x的函數(shù)。
但該點(diǎn)的顏色還取決于觀(guān)測(cè)方向(我們觀(guān)看空間中一個(gè)物體的某個(gè)點(diǎn),從光源照射方向觀(guān)看和從陰影方向觀(guān)看,它的亮度是不一樣的。)
Step 5:Positional encoding
直接讓MLP學(xué)習(xí)映射很難,將x,d 編碼為高維向量后學(xué)習(xí)會(huì)更加容易。
因此使用如下高頻函數(shù)進(jìn)行編碼。
step 6:多層級(jí)采樣策略
均勻采樣方式采樣射線(xiàn)上64個(gè)點(diǎn)
這64點(diǎn)的密度值估計(jì)出密度分布函數(shù)。
再使用逆采樣算法集中對(duì)高密度的區(qū)域采樣128點(diǎn)。
使用該策略可以提高采樣的效率,不需要對(duì)射線(xiàn)上所有區(qū)域都進(jìn)行密集的采樣
NeRF加速
FastNeRF: High-Fidelity Neural Rendering at 200FPS
相關(guān)資料:https://microsoft.github.io/FastNeRF/https://ieeexplore-ieee-org-s.nudtproxy.yitlink.com/document/9710021
Instant Neural Graphics Primitives with a Multiresolution Hash Encoding
相關(guān)資料:https://nvlabs.github.io/instant-ngp/https://nvlabs.github.io/instant-ngp/assets/mueller2022instant.pdf
NeRF動(dòng)態(tài)場(chǎng)景(人體)的拓展
HumanNeRF: Free-viewpoint Rendering of Moving People from Monocular Video
相關(guān)資料:https://www.semanticscholar.org/paper/HumanNeRF%3A-Free-viewpoint-Rendering-of-Moving-from-Weng-Curless/bd706601b75533a66a782f6229419f85b1cc5135
參考鏈接3:https://www.analyticsvidhya.com/blog/2021/04/introduction-to-neural-radiance-field-or-nerf/
神經(jīng)輻射場(chǎng)(Neural Radiance Field, NeRF)是一種生成復(fù)雜場(chǎng)景新視圖的方法。NeRF獲取一組場(chǎng)景的輸入圖像,并通過(guò)在場(chǎng)景之間插入來(lái)渲染完整的場(chǎng)景。
NeRF 的輸出是一個(gè)體積,其顏色和密度取決于視圖的方向和在該點(diǎn)發(fā)射的光亮度。
對(duì)于每條光線(xiàn),我們都得到一個(gè)輸出體積,所有這些體積構(gòu)成了復(fù)雜的場(chǎng)景。
靜態(tài)場(chǎng)景被表示為如上定義的連續(xù)5D函數(shù)。
該方法使用一個(gè)全連接的神經(jīng)網(wǎng)絡(luò)-多層感知器(MLP)來(lái)表示該函數(shù),從單個(gè)5D坐標(biāo)(x, y, z, θ, φ)向后移動(dòng),輸出一個(gè)體積密度(RGB顏色受視圖影響)。
要渲染這個(gè)NeRF,有3個(gè)步驟:
相機(jī)光線(xiàn)通過(guò)場(chǎng)景來(lái)采樣3D點(diǎn)
利用step1中的點(diǎn)及其對(duì)應(yīng)的2D觀(guān)察方向(θ, φ)作為輸入到MLP,得到顏色(c = (r, g, b))和密度σ的輸出集,
使用體繪制技術(shù)將這些顏色和密度累積到一個(gè)2D圖像中[注:體繪制是指從采樣的3D點(diǎn)創(chuàng)建一個(gè)2D投影]
審核編輯:黃飛
-
電磁輻射
+關(guān)注
關(guān)注
5文章
354瀏覽量
43541 -
光譜
+關(guān)注
關(guān)注
4文章
798瀏覽量
35090 -
電磁場(chǎng)
+關(guān)注
關(guān)注
0文章
790瀏覽量
47236
原文標(biāo)題:NeRF入門(mén)知識(shí)匯總
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論