最近學(xué)習(xí)了一些三維重建相關(guān)的內(nèi)容,目前比較主要的重建流派就是3DGS以及NeRF,NeRF作為2020年發(fā)布的文章轟動(dòng)一時(shí),影響深遠(yuǎn),有很多NeRF based的相關(guān)工作在這些年涌現(xiàn)。3DGS作為2023年的new talk of the town,其在保證合成質(zhì)量的情況下能夠以數(shù)倍乃至數(shù)十倍的速度碾壓許多NeRF based的方法,因此得到了廣泛關(guān)注。這篇文章從幾個(gè)角度比較了NeRF(最初的版本)和3D gaussian splatting的異同,道行尚淺,若有錯(cuò)誤,歡迎大家討論、批評(píng)、指正。
(原文中有一些詞匯很難找到很恰當(dāng)?shù)闹形姆g,為了不產(chǎn)生歧義在文中就直接使用了)
1.數(shù)據(jù)輸入(INPUT)
NeRF:Nerf的輸入是一張圖像+該圖像對(duì)應(yīng)的相機(jī)位姿5D輸入(xyz和θ與φ)
3DGS:3DGS的輸入是由一張圖像+經(jīng)過(guò)SFM方法后生成的稀疏點(diǎn)云
比較:兩者的差距在于一個(gè)是注重于相機(jī)的位姿(觀測(cè)者的姿態(tài))一個(gè)是注重于圖像中各點(diǎn)的位置(2D圖像轉(zhuǎn)換為3D點(diǎn)云 觀測(cè)內(nèi)容的姿態(tài))
需要注意的是,Nerf的5D位姿會(huì)進(jìn)行一個(gè)正弦編碼才會(huì)輸入到MLP網(wǎng)絡(luò)中進(jìn)行運(yùn)算,這個(gè)編碼過(guò)程讓網(wǎng)絡(luò)能夠?qū)W習(xí)到更多的高頻數(shù)據(jù),從而提升了網(wǎng)絡(luò)對(duì)于圖像細(xì)節(jié)的重建能力,如果把這個(gè)過(guò)程看作input數(shù)據(jù)的初始化,那么與之對(duì)比,3DGS的輸入在得到稀疏點(diǎn)云之后同樣進(jìn)行了初始化,將稀疏點(diǎn)云建模為了3D高斯,才進(jìn)行后續(xù)的處理,因此兩者在初始化階段也有一些不同。
但是兩者都可以由colmap等sfm方法從視頻中恢復(fù)對(duì)應(yīng)的位姿和位置,這一點(diǎn)是類似的,所以在3DGS中描述它的INPUT用了“NeRF-liked”
2.數(shù)據(jù)輸出(output)
NeRF:NeRF的輸出是經(jīng)由神經(jīng)網(wǎng)絡(luò)之后直接輸出對(duì)應(yīng)camera ray上各個(gè)采樣點(diǎn)的RGB值和體密度(volume density),隨后經(jīng)過(guò)體渲染(volume rendering)得到最終的重建圖像。
3DGS:3DGS的輸出,從下面這一張pipeline能夠看出來(lái),作者直接將最終重建得到的圖像作為了整個(gè)方法的最終輸出。
比較:兩者的最終輸出都是重建圖像,但是獲得重建圖像的過(guò)程中存在差異,即兩者的渲染方式不同。NeRF的渲染方式是體渲染,神經(jīng)網(wǎng)絡(luò)輸出camera ray上不同采樣點(diǎn)的RGB和體密度后,對(duì)該camera ray進(jìn)行一個(gè)accumulate,最終得到2D圖像。3DGS在會(huì)在過(guò)程中將建模好的3D高斯進(jìn)行光柵化處理,將其投影到2D圖像中,這個(gè)過(guò)程可以理解為向一個(gè)平地拋雪球,這個(gè)雪球被染上了不同的顏色,雪球落地之后會(huì)濺開,產(chǎn)生不同顏色的痕跡,多個(gè)雪球(3D高斯)丟到平地上之后,把不同的顏色痕跡按照深度等進(jìn)行混合,就得到了最終的圖像,這個(gè)渲染過(guò)程就叫做splatting,這里的渲染技術(shù)是a-blending,放一段GPT老師的解釋:
?3.三維信息表達(dá)(3D Information Expression)
NeRF:作為神經(jīng)輻射場(chǎng),其三維信息藏在MLP網(wǎng)絡(luò)中,而神經(jīng)網(wǎng)絡(luò)具有不可解釋性,類似于一個(gè)黑匣子,因此神經(jīng)輻射場(chǎng)常常和隱式等詞一起出現(xiàn),就是因?yàn)槠渲亟ㄈS世界的信息是隱式表達(dá)。
3DGS:由SFM建立得到的稀疏三維點(diǎn)云,在建模成3D高斯后,3D高斯中明確的包含了三維世界的信息(位置,顏色,不透明)因?yàn)?D高斯的前身是三維點(diǎn)云,而三維點(diǎn)云是典型的顯示表達(dá)數(shù)據(jù),因此不難理解3DGS是一種顯示表達(dá)。
比較:NeRF是隱式表達(dá),三維信息藏在神經(jīng)網(wǎng)絡(luò)中,3DGS是顯示表達(dá),由3D高斯直接表達(dá)三維信息。
4.優(yōu)化方式
兩者的優(yōu)化方案在思路上都是相同的,都是將渲染出來(lái)的圖像和真實(shí)圖像進(jìn)行對(duì)比,求loss,然后不斷最小化這個(gè)loss來(lái)優(yōu)化過(guò)程中的各個(gè)參數(shù)變量,都采用了經(jīng)典的梯度下降優(yōu)化策略。
5.時(shí)間與效果
兩者的效果實(shí)際上相差不是很大,對(duì)于一些細(xì)節(jié)的重建見(jiàn)仁見(jiàn)智,3DGS在文中描述其在一些數(shù)據(jù)集的效果是優(yōu)于NeRF的,但是從其github頁(yè)面來(lái)看,實(shí)際上效果差別不是很大。但是時(shí)間上3DGS有明顯的優(yōu)勢(shì),可以從其提供的圖中看出來(lái)。NeRF對(duì)于簡(jiǎn)單的單一場(chǎng)景(isolated object)的訓(xùn)練時(shí)間就需要12個(gè)小時(shí),而3D高斯只需要幾分鐘,在保證時(shí)間的過(guò)程中不損失質(zhì)量,實(shí)際上就是3DGS一直追尋的目的,在文章能看出:
?附上官方給出的時(shí)間對(duì)比圖:
以及效果對(duì)比:
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-790109.html
最后通過(guò)一個(gè)表格簡(jiǎn)單總結(jié)一下兩者的差異:
NeRF | 3D Gaussian splatting | |
Input | Camera pose(5D) | Image point clouds from SFM |
Output | Image | Image |
Rendering | Volume rendering? ? ?????????? | α-blending |
Optimization文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-790109.html |
gradient descend | Gradient descend |
3D Information Expression | Implicit???????? | Explicit |
Time&Effect | 12hour for isolated object | 6min for isolated object |
到了這里,關(guān)于三維重建方法3D gaussian splatting與NeRF的區(qū)別和異同的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!