3D 高斯点染简介
3D 高斯點(diǎn)染技術(shù)由 3D Gaussian Splatting for Real-Time Radiance Field Rendering 一文首次提出。作為一種柵格化技術(shù),3D 高斯點(diǎn)染可用于實(shí)時(shí)且逼真地渲染從一小組圖像中學(xué)到的場(chǎng)景。本文將詳細(xì)介紹其工作原理并討論其對(duì)圖形學(xué)的未來會(huì)帶來什么影響。
什么是 3D 高斯點(diǎn)染?
3D 高斯點(diǎn)染本質(zhì)上是一種柵格化技術(shù)。也就是說:
- 我們有場(chǎng)景描述數(shù)據(jù);
- 我們會(huì)把這些數(shù)據(jù)在屏幕上渲染出來。
大家可能對(duì)計(jì)算機(jī)圖形學(xué)中的三角形柵格化比較熟悉,其通過在屏幕上渲染許多三角形的方式來繪制圖形。
其實(shí) 3D 高斯點(diǎn)染與三角形柵格化是一樣的,只不過把基本繪圖元素從三角形換成了高斯圖像。下圖給出了高斯圖像的一個(gè)例子,為清晰起見,我們標(biāo)出了它的邊框。
每個(gè)高斯圖像可由以下參數(shù)來描述:
- 位置: 所在位置 (XYZ)
- 協(xié)方差: 縮放程度 (3x3 矩陣)
- 顏色: 顏色 (RGB)
- Alpha: 透明度 (α)
在實(shí)踐中,我們通過在屏幕上繪制多個(gè)高斯圖像,從而畫出想要的圖像。
上圖是由 3 個(gè)高斯圖像渲染出的圖像。那么用 700 萬個(gè)高斯圖像可能會(huì)渲染出怎樣的圖像呢?看看下圖:
如果這 700 萬個(gè)高斯圖像每個(gè)都完全不透明的話,渲染出的圖像又會(huì)怎么樣呢?如下:
以上,我們對(duì) 3D 高斯點(diǎn)染有了一個(gè)初步的認(rèn)識(shí)。接下來,我們了解一下點(diǎn)染的具體過程。
點(diǎn)染過程
1. 從運(yùn)動(dòng)中恢復(fù)出結(jié)構(gòu)
第一步是使用運(yùn)動(dòng)恢復(fù)結(jié)構(gòu) (Structure from Motion,SfM) 方法從一組圖像中估計(jì)出點(diǎn)云。SfM 方法可以讓我們從一組 2D 圖像中估計(jì)出 3D 點(diǎn)云。我們可以直接調(diào)用 COLMAP 庫(kù)來完成這一步。
2. 用高斯圖像對(duì)云中的每個(gè)點(diǎn)進(jìn)行建模
接下來,把每個(gè)點(diǎn)建模成一個(gè) 3D 高斯圖像。從 SfM 數(shù)據(jù)中,我們能推斷出每個(gè)高斯圖像的位置和顏色。這對(duì)于一般的柵格化已經(jīng)夠用了,但如果要產(chǎn)生更高質(zhì)量的表征的話,我們還需要對(duì)每個(gè)高斯圖像進(jìn)行訓(xùn)練,以推斷出更精細(xì)的位置和顏色,并推斷出協(xié)方差和透明度。
3. 訓(xùn)練
與神經(jīng)網(wǎng)絡(luò)類似,我們使用隨機(jī)梯度下降法進(jìn)行訓(xùn)練,但這里沒有神經(jīng)網(wǎng)絡(luò)的層的概念 (都是 3D 高斯函數(shù))。訓(xùn)練步驟如下:
- 用當(dāng)前所有可微高斯圖像渲染出圖像 (稍后詳細(xì)介紹)
- 根據(jù)渲染圖像和真實(shí)圖像之間的差異計(jì)算損失
- 根據(jù)損失調(diào)整每個(gè)高斯圖像的參數(shù)
- 根據(jù)情況對(duì)當(dāng)前相關(guān)高斯圖像進(jìn)行自動(dòng)致密化及修剪
步驟 1-3 比較簡(jiǎn)單,下面我們稍微解釋一下第 4 步的工作:
-
如果某高斯圖像的梯度很大 (即它錯(cuò)得比較離譜),則對(duì)其進(jìn)行分割或克隆
- 如果該高斯圖像很小,則克隆它
- 如果該高斯圖像很大,則將其分割
-
如果該高斯圖像的 alpha 太低,則將其刪除
這么做能幫助高斯圖像更好地?cái)M合精細(xì)的細(xì)節(jié),同時(shí)修剪掉不必要的高斯圖像。
4. 可微高斯柵格化
如前所述,3D 高斯點(diǎn)染是一種 柵格化 方法,即我們可以用其將數(shù)據(jù)渲染到屏幕上。作為眾多柵格化方法的 其中之一 ,它有兩個(gè)特點(diǎn):
- 快
- 可微
你可在 此處 找到可微高斯渲染器的原始實(shí)現(xiàn)。其主要步驟為:
- 針對(duì)給定相機(jī)視角,把每個(gè) 3D 高斯圖像投影到 2D。
- 按深度對(duì)高斯圖像進(jìn)行排序。
- 對(duì)每個(gè)像素,從前到后計(jì)算每個(gè)高斯函數(shù)在該像素點(diǎn)的值,并將所有值混合以得到最終像素值。
更多細(xì)節(jié)及優(yōu)化可參閱 論文。
渲染器可微這一點(diǎn)很重要,因?yàn)檫@樣我們就可以用隨機(jī)梯度下降法來訓(xùn)練它。但這一點(diǎn)僅對(duì)訓(xùn)練階段很重要,訓(xùn)后的高斯函數(shù)是可以用不可微的方式來表示的。
有啥用?
為什么 3D 高斯點(diǎn)染受到如此多的關(guān)注?最直接的原因是其非凡的實(shí)力。有了它,對(duì)高畫質(zhì)場(chǎng)景的實(shí)時(shí)渲染成為了可能。有了這個(gè)能力,我們可以解鎖更多可能的應(yīng)用。
比如說,可以用它來渲染動(dòng)畫嗎?即將發(fā)表的論文 Dynamic 3D Gaussians: tracking by Persistent Dynamic View Synthesis 似乎表明這有戲。還有更多其他問題有待研究。它能對(duì)反射進(jìn)行建模嗎?可以不經(jīng)參考圖像的訓(xùn)練就直接建模嗎……
最后,當(dāng)前人們對(duì) 具身智能 (Embodied AI) 興趣日隆。但作為人工智能的一個(gè)研究領(lǐng)域,當(dāng)前最先進(jìn)的具身智能的性能仍然比人類低好幾個(gè)數(shù)量級(jí),其中大部分的挑戰(zhàn)在 3D 空間的表示上。鑒于 3D 高斯分布可以產(chǎn)生致密的 3D 空間表示,這對(duì)具身智能研究有何影響?
所有這些問題都引發(fā)了人們對(duì) 3D 高斯點(diǎn)染的廣泛關(guān)注。時(shí)間會(huì)告訴我們答案!
圖形學(xué)的未來
3D 高斯點(diǎn)染會(huì)左右圖形學(xué)的未來嗎?我們先來看下該方法的優(yōu)缺點(diǎn):
優(yōu)點(diǎn)
- 高品質(zhì)、逼真的場(chǎng)景
- 快速、實(shí)時(shí)的渲染
- 更快的訓(xùn)練速度
缺點(diǎn)
- 更高的顯存使用率 (4GB 用于顯示,12GB 用于訓(xùn)練)
- 更大的磁盤占用 (每場(chǎng)景 1GB+)
- 與現(xiàn)有渲染管線不兼容
- 僅能繪制靜態(tài)圖像 (當(dāng)前)
到目前為止,3D 高斯點(diǎn)染的 CUDA 原始實(shí)現(xiàn)尚未與 Vulkan、DirectX、WebGPU 等產(chǎn)品級(jí)渲染管道進(jìn)行適配,因此尚不清楚其會(huì)對(duì)現(xiàn)有渲染管線帶來什么影響。
已有的適配如下:
- 遠(yuǎn)程顯示器
- WebGPU 顯示器
- WebGL 顯示器
- Unity 顯示器
- 優(yōu)化過的 WebGL 顯示器
這些顯示器要么依賴于遠(yuǎn)程流式傳輸 (1),要么依賴于傳統(tǒng)的基于 2x2 像素塊的柵格化方法 (2-5)。雖然基于 2x2 像素塊的方法與數(shù)十年來的圖形技術(shù)兼容,但它可能會(huì)導(dǎo)致質(zhì)量/性能的降低。然而,第 5 個(gè)顯示器 的工作又表明,盡管采用基于 2x2 像素塊的方法,通過巧妙的優(yōu)化我們?nèi)钥梢赃_(dá)到高的質(zhì)量及性能。
那么有沒有可能需要針對(duì)生產(chǎn)環(huán)境重實(shí)現(xiàn) 3D 高斯點(diǎn)染代碼呢?答案是 有可能 。當(dāng)前主要的性能瓶頸在對(duì)數(shù)百萬個(gè)高斯圖像進(jìn)行排序上,在論文的原始實(shí)現(xiàn)中,這一過程是通過 CUB 庫(kù)的基數(shù)排序 原語來高效實(shí)現(xiàn)的,但該高性能原語僅在 CUDA 中可用。我們相信,經(jīng)過努力,其他渲染管線也可以達(dá)到相仿的性能水平。
如果你有任何問題或有興趣加入我們的工作,請(qǐng)加入 Hugging Face Discord!
英文原文: https://hf.co/blog/gaussian-splatting
原文作者: Dylan Ebert
譯者: Matrix Yao (姚偉峰),英特爾深度學(xué)習(xí)工程師,工作方向?yàn)?transformer-family 模型在各模態(tài)數(shù)據(jù)上的應(yīng)用及大規(guī)模模型的訓(xùn)練推理。
總結(jié)
以上是生活随笔為你收集整理的3D 高斯点染简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树路径总和系列问题
- 下一篇: 放置江湖花灯奖励是什么(放置play是什