成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

3DGS原理解析 | 我的知識理解分享

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

本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。

Neural Radiance Fields也就是NeRF,是一種新穎的view synthesis方法,通過優化一個MLP,并使用volumetric ray-marching方法實現了3D場景的隱式表示,但該方法要求costly訓練和渲染才能得到較高質量的結果。

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

3D Gaussian

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

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

但在3DGS算法中,渲染的基本圖元變為了3D Gaussian(想象成一個三維空間的橢球體)

圖片

多個3D Gaussian會組合重疊

圖片

物體表面法線對于場景渲染十分關鍵,傳統的3D重建方法在使用稀疏數據估計物體表面法線上面臨挑戰,而使用3D Gaussian來表示場景時,可以不需要法線就可以捕獲場景的結構。

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

圖片

3D高斯函數的形式就是一個橢球體:

圖片

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

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

3D Gaussian中,協方差矩陣只有在正半定時才有物理意義(或者說協方差矩陣必須是正半定的才行),但傳統梯度下降方法很難去對矩陣施加此類約束,可能優化過程中打破了協方差矩陣的正半定性,所以不能用傳統梯度下降法。或者說不能將協方差矩陣作為一個優化參數直接優化。

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

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

圖片

  • 協方差矩陣是一個3 X 3 矩陣
  • Q是由特征向量組成的正交矩陣(旋轉矩陣)。

圖片

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

圖片圖片

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

那么不直接對協方差矩陣優化,而是將R,S作為優化參數優化,就可以保持協方差矩陣的正半定。

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

NeRF的特點就是,它是一個隱式表達的連續的空間,可以使用神經網絡進行優化,但無法完全利用GPU進行rendering的加速;傳統的使用三角形等Mesh進行的渲染,是顯式的離散的空間,可以利用GPU的并行計算來加速渲染,但無法使用神經網絡進行優化。而對于3DGS來說,單個3D Gaussian是連續的,可以使用神經網絡優化,多個3D Gaussian可以利用GPU進行并行渲染,在兩者之間有一個平衡。

Splatting

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

我們需要實現某種方式,能夠將多個3D Gaussian投影到2D image上來渲染結果。

圖片

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

圖片圖片

具體來說,仿照渲染管線的流程,假如一個初始的3D Gaussian是在模型空間的話,協方差矩陣就相當于模型變換,將3D Gaussian轉換到了世界空間。然后W是View Transform Matrix,將3D Gaussian轉換到了相機空間。J是Jocobian Matrix,是用來近似Project Transfor Matrix實現Project Transform。

FAST DIFFERENTIABLE RASTERIZER

假設現在我們已經得到了用于表示整個場景的大量3D Gaussian,現在我們要將其渲染到image上。

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

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

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

圖片圖片

之后,每個Tile分別進行Alpha Blending,計算像素顏色值得到圖像。

INITIALIZATION

假如我們已經有方法對3DGS模型進行一步步的優化,那我們要如何開始呢?

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

得到三維點云結構后,算法會將每個點云轉換為3D Gaussian,以此為基礎訓練模型優化。

OPTIMIZATION

Gradient Descent for Parameter OptimizationDesLoss的計算方法很容易想到,就是用同一個視角下,模型生成的圖片與實際的訓練集圖片的對比。

使用隨機梯度下降SGD,對Mean、Covariance Matrix、α、Color進行參數優化。

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

圖片

原論文中,=0.2

Adaptive Densification

使用SfM算法初始化了一系列稀疏點之后,adaptive densification方法會動態調整3D Gaussians的數量和密度。

圖片

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

圖片

The Process behind 3D Gaussian Splatting

圖片

  • 使用SfM(Structure from Motion)初步創建一組point cloud
  • 將步驟1創建的point cloud轉換為3D Gaussian
  • 使用SGD訓練。訓練過程是將3D Gaussian使用differentiable Gaussian rasterization方法rasterize到圖像上,通過生成圖像與真實圖像來計算loss值,調整參數,實現自動densification調整
  • Differentiable Gaussian Rasterization

Conclusion

這篇文章對3DGS算法進行了簡單的介紹,作為基礎簡單了解。

下篇文章會深入論文,介紹更多的實現細節。

重要資源

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

責任編輯:張燕妮 來源: 自動駕駛之心
相關推薦

2023-02-28 09:07:18

ChatGPTAI

2021-07-05 07:51:43

JVM底層Python

2019-12-06 10:59:20

JavaScript運行引擎

2021-07-12 09:45:36

NameServer 核心Conusmer

2021-01-12 14:46:34

Kubernetes開發存儲

2022-12-28 10:50:34

AI訓練深度學習

2022-07-06 08:30:36

vuereactvdom

2021-12-01 18:36:35

屬性

2023-08-11 07:44:40

TCP滑動窗口數據

2020-05-21 13:25:43

Spring組件架構

2024-08-27 12:32:32

2024-08-14 18:18:47

2021-05-19 15:40:54

HTTPS前端加密

2024-09-20 09:53:11

2010-07-06 10:07:10

jQueryJSON

2015-07-01 13:34:22

Kubernetes應用部署模型

2021-06-16 15:18:03

鴻蒙HarmonyOS應用

2023-11-16 09:01:37

Hadoop數據庫

2015-08-19 10:36:24

Zigbee技術無線通信

2015-08-18 09:40:32

OpenStack Neutron虛擬網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲高清在线播放 | 中文字幕成人在线 | 一级中国毛片 | 精品国产乱码久久久久久蜜柚 | 精品久久久久久久人人人人传媒 | 91社区在线高清 | 日本午夜精品一区二区三区 | 国产美女在线看 | 午夜天堂 | 精品一区二区三区不卡 | 国产一区二区三区免费观看视频 | 亚洲国产免费 | 免费av一区二区三区 | 日本精品免费在线观看 | 欧美天堂在线 | 成人国产精品久久 | 国产在线视频一区二区 | 欧美一级精品片在线看 | 精品一区视频 | 日韩av在线一区二区三区 | 国产激情亚洲 | 免费国产视频在线观看 | 国产资源一区二区三区 | 午夜视频网站 | 成人小视频在线观看 | 精品不卡| 亚洲欧美在线视频 | 国产精品免费在线 | 亚洲高清视频一区二区 | 久久成人国产精品 | 一区精品国产欧美在线 | 亚洲入口 | 在线播放国产一区二区三区 | 免费国产黄 | 欧美精品一区二区在线观看 | 欧美日韩在线综合 | 欧美日韩精品在线一区 | 日韩在线观看网站 | 精品国产一区二区三区久久久蜜月 | 黄片毛片在线观看 | 国产欧美精品一区二区 |