instant-ngp总结
Nerf方法就是經(jīng)典的隱函數(shù)渲染方案。
Nerf的開山之作"Nerf: Representing scenes as neural radiance fields for view synthesis"發(fā)表于2020年的eccv上。
Nerf的主要目的:利用已有的大量2D數(shù)據(jù)作為監(jiān)督,用已有的2D數(shù)據(jù)去生成該物體或者場景,新視角下的重建結(jié)果。
Nerf 的主要過程就是利用5D向量值函數(shù)去擬合整個三維場景的表示。利用
去表示整個場景。
輸入空間中一個點的3D坐標(biāo)x,以及觀察視角d。生成對應(yīng)的顏色值C,以及不透明度σ,這也是與現(xiàn)實世界相對應(yīng)的。
在Nerf的渲染和訓(xùn)練過程,利用到了volume rendering的思想(如下圖所示)。
如上圖中的藍(lán)色點所示,它是從空間中某一像素所發(fā)出的一條射線上的點,那么我們根據(jù)這個點對應(yīng)的3D坐標(biāo)位置與視角d,通過上面的Nerf5D向量值函數(shù),計算出該點對應(yīng)的顏色值與不透明度。基于這個思想,我們將整條射線上所有點的顏色值與體積密度計算出來。再將整條射線上點的顏色進行積分,那得到的積分值,就是對應(yīng)像素點的顏色值。這實際上也是volume rendering的思想。
在理論上,這個積分應(yīng)該是連續(xù)的,不過在實際的渲染或者工程當(dāng)中,想實現(xiàn)連續(xù)的積分不太現(xiàn)實。在這里我們的解決方案就是利用離散積分的方式,對射線上的點進行均勻采樣,利用采樣點的離散的積分和,來模擬上面的過程。
那在實際的train或者渲染過程,也是上面剛才說到的,利用離散積分的方式,對空間中的點進行采樣,然后渲染出對應(yīng)視角的顏色值,將其與GT做比較,利用誤差去優(yōu)化網(wǎng)絡(luò)。
那其實可以法線,在這個過程中會有一個如何對空間中點采樣的策略問題。因為如果采樣點過多,那計算效率就會降低,那如果采樣點過少,又無法很好地近似整個場景的三維表示。怎么設(shè)置采樣策略就比較重要了。
在這里我們有一個非常樸素的想法,對于我們的重建結(jié)果或者渲染結(jié)果而言,并不是空間中所有的點都重要,對于空間中那些空曠的點,它對于最終的重建結(jié)構(gòu)影響不是很大。真正起作用的點是物體所在的區(qū)域,它們才對真正的重建結(jié)果起作用。那么我們在采樣的過程中,對于物體在的區(qū)域多采樣,對于空曠的區(qū)域少采樣,用這種分層采樣的方式去優(yōu)化采樣的策略。
NSVF
對于如何優(yōu)化Nerf的時間上的效率問題,如何做空間中點的采樣,2020年的另一篇工作NSVF也提出了一種解決思路。
在NSVF中,作者將整個三維空間用體素分割出來,在采樣的過程中只對空間中有意義的點進行采樣,對于沒有意義的空的區(qū)域,那完全拋棄掉。然后再逐級的對體素進行精細(xì)化操作,在這個過程每個體素塊的采樣率不變,但是隨著體素塊變小,會對場景中細(xì)節(jié)區(qū)域的學(xué)習(xí)會更多。
總結(jié):用體素表達(dá)三維空間,自剪枝的part,逐級精細(xì)化。
像剛才我們講到,為了優(yōu)化Nerf的訓(xùn)練速度、渲染速度等等。研究人員嘗試對如何采樣這部分進行設(shè)計和優(yōu)化,Nerf最開始的采樣方案是分層采樣的策略,后來的NSVF提出的,基于體素的多分辨率采樣+自剪枝的策略,也多速度的問題做了一定程度的優(yōu)化,但是這個優(yōu)化是針對特殊task的,所以不具備通用性。
那么為了提出一種通用的加速方案,能夠?qū)Σ煌娜蝿?wù)進行加速,這也是這篇論文的目的。
instant-NGP
這篇論文的主要核心點是,提出了一種多分辨率哈希編碼的通用方案,對不同的任務(wù)進行加速處理。
對于傳統(tǒng)的深度學(xué)習(xí)模型,我們可以用m(x,Φ)去表示它,這里的Φ就是我們希望網(wǎng)絡(luò)學(xué)習(xí)到的權(quán)重。但是在instant-ngp中,作者還通過這個函數(shù)y=enc(x,𝜃)對輸入x再進行編碼操作,獲得y,將這個y輸入到我們的網(wǎng)絡(luò)中去加速我們特定任務(wù)的速度和擬合質(zhì)量。我認(rèn)為對于x再編碼的操作,就是instant-ngp這么快的核心。在這里的話,我認(rèn)為這個過程有些像,復(fù)合函數(shù)的味道。
總結(jié):instant-ngp不但有可訓(xùn)練的網(wǎng)絡(luò)權(quán)重Φ,也有編碼參數(shù)𝜃。
同時在這個過程中,作者將這些參數(shù)分為L層,每層包含了T個維度為F的特征向量。L對應(yīng)的是特定分辨率體素的編碼層,也做為一個超參數(shù),在這里被設(shè)置為16。也就是體素分辨率的變化分為16級。其中每一層的變化由Nl去調(diào)整。
在這里我的理解是,分級操作實際是,假設(shè)有一個三維坐標(biāo)點,它是float型,那通過分級操作,對這個float型坐標(biāo)點進行向上取整或向下取整,使其變?yōu)橐粋€整數(shù)型值。
后面的話,它通過一個空間哈希函數(shù),對特征向量進行調(diào)整,分配到不同的哈希表中去。
在這里有一個問題,其實可以發(fā)現(xiàn),instant-ngp
總結(jié)
以上是生活随笔為你收集整理的instant-ngp总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【小月电子】ALTERA FPGA开发板
- 下一篇: DS博客作业06——图