自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

3DGS原理解析 | 我的知識(shí)理解分享

人工智能 新聞
作為一個(gè)連傳統(tǒng)計(jì)算機(jī)圖形學(xué)都沒有完全學(xué)透的學(xué)生,NeRF論文的閱讀難度對(duì)我而言還是較為簡單;但3DGS的論文難度要高得多(難怪相比于NeRF,3DGS的速度與質(zhì)量都要高很多),為了高效地完成對(duì)3DGS的學(xué)習(xí),我在網(wǎng)上找了多篇博客幫助我理解3DGS,再回過頭看論文了解更細(xì)節(jié)的內(nèi)容,這種方法十分奏效。

本文經(jīng)自動(dòng)駕駛之心公眾號(hào)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

Neural Radiance Fields也就是NeRF,是一種新穎的view synthesis方法,通過優(yōu)化一個(gè)MLP,并使用volumetric ray-marching方法實(shí)現(xiàn)了3D場(chǎng)景的隱式表示,但該方法要求costly訓(xùn)練和渲染才能得到較高質(zhì)量的結(jié)果。

3D Gaussian Splatting的出現(xiàn)解決了NeRF的問題,并且同為Radiance Field,3D Gaussian實(shí)現(xiàn)了更快的訓(xùn)練和渲染并且能夠保證渲染圖象的質(zhì)量(equal or better quality than the previous implicit radiance field approaches)。這個(gè)方法在某些數(shù)據(jù)集上實(shí)現(xiàn)了state-of-art質(zhì)量的結(jié)果以及real-time rendering

3D Gaussian

首先需要著重理解3D Gaussian是什么

在光柵化方法中,我們會(huì)將點(diǎn)組裝為一個(gè)個(gè)基本圖元,其中最常用的圖元就是三角形,也就是場(chǎng)景都是由多個(gè)三角形面片組成,我們通過光柵化方法將多個(gè)三角形畫到屏幕上。

但在3DGS算法中,渲染的基本圖元變?yōu)榱?D Gaussian(想象成一個(gè)三維空間的橢球體)

圖片

多個(gè)3D Gaussian會(huì)組合重疊

圖片

物體表面法線對(duì)于場(chǎng)景渲染十分關(guān)鍵,傳統(tǒng)的3D重建方法在使用稀疏數(shù)據(jù)估計(jì)物體表面法線上面臨挑戰(zhàn),而使用3D Gaussian來表示場(chǎng)景時(shí),可以不需要法線就可以捕獲場(chǎng)景的結(jié)構(gòu)。

3D Gaussian的簡單公式表示是:

圖片

3D高斯函數(shù)的形式就是一個(gè)橢球體:

圖片

3D 高斯函數(shù)的中心點(diǎn)由 均值向量(mean vector)決定(上面的公式中默認(rèn)均值是0,所以沒有顯示),橢球體的三個(gè)主軸對(duì)應(yīng)著高斯分布的協(xié)方差矩陣的特征向量,而主軸的長度則對(duì)應(yīng)著特征值的平方根。這也就是說,協(xié)方差矩陣決定了高斯分布在 3D 空間中的形狀、大小以及方向。我們?cè)俳o這個(gè)橢球顏色與透明度,來讓多個(gè)3D Gaussian的組合能夠形成高質(zhì)量圖像。然后我們就得到了3DGS算法中定義一個(gè)3D Gaussian的參數(shù):

  • Position (Mean μ): location (XYZ)
  • Covariance Matrix (Σ): rotation and scaling
  • Opacity ( ): Transparency,這個(gè)參數(shù)會(huì)在alpha blending階段時(shí)與相乘
  • Color (RGB) or Spherical Harmonics (SH) coefficients

3D Gaussian中,協(xié)方差矩陣只有在正半定時(shí)才有物理意義(或者說協(xié)方差矩陣必須是正半定的才行),但傳統(tǒng)梯度下降方法很難去對(duì)矩陣施加此類約束,可能優(yōu)化過程中打破了協(xié)方差矩陣的正半定性,所以不能用傳統(tǒng)梯度下降法?;蛘哒f不能將協(xié)方差矩陣作為一個(gè)優(yōu)化參數(shù)直接優(yōu)化。

還有一點(diǎn)是,我們能夠通過三維空間中的三個(gè)點(diǎn)定義任意的三角形一樣,我們想要通過某種方式獲取任意的橢球形狀。

協(xié)方差矩陣的幾何意義是,表示這個(gè)橢圓球在空間中的形狀(縮放)和方向(旋轉(zhuǎn))。協(xié)方差矩陣是一個(gè)正定矩陣,可以通過某種方式進(jìn)行矩陣分解。而3D Gaussian中有一種特征值分解,具體形式為:

圖片

  • 協(xié)方差矩陣是一個(gè)3 X 3 矩陣
  • Q是由特征向量組成的正交矩陣(旋轉(zhuǎn)矩陣)。

圖片

上面提到過,主軸的長度則對(duì)應(yīng)著特征值的平方根,也就是說可以進(jìn)一步分解,那么就得到了3DGS原論文中的形式:

圖片圖片

  • R是四元數(shù)表示的旋轉(zhuǎn)矩陣(此矩陣要保持normalization)

那么不直接對(duì)協(xié)方差矩陣優(yōu)化,而是將R,S作為優(yōu)化參數(shù)優(yōu)化,就可以保持協(xié)方差矩陣的正半定。

通過定義R,S以及l(fā)ocation(也就是均值),我們可以得到三維空間中所有形式的3D Gaussian。

NeRF的特點(diǎn)就是,它是一個(gè)隱式表達(dá)的連續(xù)的空間,可以使用神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化,但無法完全利用GPU進(jìn)行rendering的加速;傳統(tǒng)的使用三角形等Mesh進(jìn)行的渲染,是顯式的離散的空間,可以利用GPU的并行計(jì)算來加速渲染,但無法使用神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。而對(duì)于3DGS來說,單個(gè)3D Gaussian是連續(xù)的,可以使用神經(jīng)網(wǎng)絡(luò)優(yōu)化,多個(gè)3D Gaussian可以利用GPU進(jìn)行并行渲染,在兩者之間有一個(gè)平衡。

Splatting

3D Gaussian是3D物體,要生成圖像(就像常規(guī)光柵化渲染一樣)就需要將其投影到2D平面上。

我們需要實(shí)現(xiàn)某種方式,能夠?qū)⒍鄠€(gè)3D Gaussian投影到2D image上來渲染結(jié)果。

圖片

而論文中給出的方式是,替換協(xié)方差矩陣為:

圖片圖片

具體來說,仿照渲染管線的流程,假如一個(gè)初始的3D Gaussian是在模型空間的話,協(xié)方差矩陣就相當(dāng)于模型變換,將3D Gaussian轉(zhuǎn)換到了世界空間。然后W是View Transform Matrix,將3D Gaussian轉(zhuǎn)換到了相機(jī)空間。J是Jocobian Matrix,是用來近似Project Transfor Matrix實(shí)現(xiàn)Project Transform。

FAST DIFFERENTIABLE RASTERIZER

假設(shè)現(xiàn)在我們已經(jīng)得到了用于表示整個(gè)場(chǎng)景的大量3D Gaussian,現(xiàn)在我們要將其渲染到image上。

為了加速渲染,3DGS選擇使用Tile-based rasterization,將Image切為一個(gè)個(gè)16 * 16的tile,每個(gè)tile像一個(gè)小image一樣獨(dú)立計(jì)算顏色值,最后多個(gè)Tile拼成image的顏色。

考慮到每個(gè)3D Gaussian投影到2D image時(shí)可能會(huì)投影到多個(gè)tile,處理方法是如果一個(gè)Gaussian投影與多個(gè)tile相交,就實(shí)例化多次Gaussian,每個(gè)Gaussian instance都會(huì)得到一個(gè)結(jié)合view space depth和tile ID得到的key。然后基于這些key,使用single fast GPU Radix sort進(jìn)行排序。

如下圖中,黃色Gaussian投影影響了Tile1和2,其他Guassian投影同理;在另一張圖中,我們給出了一個(gè)Gaussian投影到多個(gè)Tile后,多次實(shí)例化以及排序的操作。

圖片圖片

之后,每個(gè)Tile分別進(jìn)行Alpha Blending,計(jì)算像素顏色值得到圖像。

INITIALIZATION

假如我們已經(jīng)有方法對(duì)3DGS模型進(jìn)行一步步的優(yōu)化,那我們要如何開始呢?

在3DGS中,使用的是一種cv算法,Structure from Motion SfM算法來從輸入圖像中得到一組點(diǎn)云。SfM的基本思路是利用多張包含相同場(chǎng)景不同部分的圖像,通過追蹤圖像中的共同特征,估算出相機(jī)的運(yùn)動(dòng)路徑(即相機(jī)的外參,包括位置和平移)以及場(chǎng)景的三維點(diǎn)云結(jié)構(gòu)。而3DGS算法就要利用從SfM算法中得到的初始點(diǎn)云進(jìn)行初始化。

得到三維點(diǎn)云結(jié)構(gòu)后,算法會(huì)將每個(gè)點(diǎn)云轉(zhuǎn)換為3D Gaussian,以此為基礎(chǔ)訓(xùn)練模型優(yōu)化。

OPTIMIZATION

Gradient Descent for Parameter OptimizationDesLoss的計(jì)算方法很容易想到,就是用同一個(gè)視角下,模型生成的圖片與實(shí)際的訓(xùn)練集圖片的對(duì)比。

使用隨機(jī)梯度下降SGD,對(duì)Mean、Covariance Matrix、α、Color進(jìn)行參數(shù)優(yōu)化。

Loss結(jié)合了L1和D-SSIM(Structural Dissimilarity Index)。

圖片

原論文中,=0.2

Adaptive Densification

使用SfM算法初始化了一系列稀疏點(diǎn)之后,adaptive densification方法會(huì)動(dòng)態(tài)調(diào)整3D Gaussians的數(shù)量和密度。

圖片

densify簡單來說就是,under-reconstructed區(qū)域克隆small Gaussians以及在high-variance(我覺得就是Over-reconstructed)區(qū)域分離large Gaussian。

圖片

The Process behind 3D Gaussian Splatting

圖片

  • 使用SfM(Structure from Motion)初步創(chuàng)建一組point cloud
  • 將步驟1創(chuàng)建的point cloud轉(zhuǎn)換為3D Gaussian
  • 使用SGD訓(xùn)練。訓(xùn)練過程是將3D Gaussian使用differentiable Gaussian rasterization方法rasterize到圖像上,通過生成圖像與真實(shí)圖像來計(jì)算loss值,調(diào)整參數(shù),實(shí)現(xiàn)自動(dòng)densification調(diào)整
  • Differentiable Gaussian Rasterization

Conclusion

這篇文章對(duì)3DGS算法進(jìn)行了簡單的介紹,作為基礎(chǔ)簡單了解。

下篇文章會(huì)深入論文,介紹更多的實(shí)現(xiàn)細(xì)節(jié)。

重要資源

https://github.com/MrNeRF/awesome-3D-gaussian-splatting

責(zé)任編輯:張燕妮 來源: 自動(dòng)駕駛之心
相關(guān)推薦

2023-02-28 09:07:18

ChatGPTAI

2022-12-28 10:50:34

AI訓(xùn)練深度學(xué)習(xí)

2019-12-06 10:59:20

JavaScript運(yùn)行引擎

2021-07-12 09:45:36

NameServer 核心Conusmer

2021-01-12 14:46:34

Kubernetes開發(fā)存儲(chǔ)

2021-07-05 07:51:43

JVM底層Python

2022-07-06 08:30:36

vuereactvdom

2023-08-11 07:44:40

TCP滑動(dòng)窗口數(shù)據(jù)

2021-12-01 18:36:35

屬性

2020-05-21 13:25:43

Spring組件架構(gòu)

2021-05-19 15:40:54

HTTPS前端加密

2024-08-14 18:18:47

2024-08-27 12:32:32

2024-09-20 09:53:11

2015-08-18 09:40:32

OpenStack Neutron虛擬網(wǎng)絡(luò)

2023-11-16 09:01:37

Hadoop數(shù)據(jù)庫

2015-08-19 10:36:24

Zigbee技術(shù)無線通信

2015-07-01 13:34:22

Kubernetes應(yīng)用部署模型

2021-06-16 15:18:03

鴻蒙HarmonyOS應(yīng)用

2010-07-06 10:07:10

jQueryJSON
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)