本文為3DGS paper的部分翻譯。
基于點的??混合和 NeRF 風(fēng)格的體積渲染本質(zhì)上共享相同的圖像形成模型。 具體來說,顏色 ?? 由沿射線的體積渲染給出:
其中密度 ??、透射率 ?? 和顏色 c 的樣本是沿著射線以間隔 ?? ?? 采集的。 這可以重寫為
典型的基于神經(jīng)點的方法通過混合與像素重疊的 N 個有序點來計算像素的顏色 ??:
其中 c ?? 是每個點的顏色,?? ?? 是通過評估一個2D 高斯,用協(xié)方差 Σ 乘以學(xué)習(xí)的每點不透明度。
從等式2,3 可以清楚地看到成像模型是相同的。 然而,渲染算法卻有很大不同。 NeRF 是隱式表示空/占用空間的連續(xù)表示; 需要昂貴的隨機抽樣才能找到等式2中的樣本。 隨之而來的噪聲和計算開銷。 相比之下,點是一種非結(jié)構(gòu)化、離散的表示形式,它足夠靈活,可以像 NeRF 一樣創(chuàng)建、破壞和位移幾何圖形。 這是通過優(yōu)化不透明度和位置來實現(xiàn)的,同時避免了完整體積表示的缺點。
最近的一種方法使用點通過徑向基函數(shù)方法來表示輻射場。 他們在優(yōu)化過程中采用點修剪和致密化技術(shù),但使用體積光線行進并且無法實現(xiàn)實時顯示速率。
在人體表演捕捉領(lǐng)域,3D 高斯已被用來表示捕捉到的人體。最近,它們已與體積光線行進一起用于視覺任務(wù)。 神經(jīng)體積基元已在類似的背景下被提出。 雖然這些方法啟發(fā)了我們選擇 3D 高斯作為我們的場景表示,但它們專注于重建和渲染單個孤立對象(人體或面部)的特定情況,從而產(chǎn)生深度復(fù)雜度較小的場景。 相比之下,我們對各向異性協(xié)方差的優(yōu)化、交錯優(yōu)化/密度控制以及用于渲染的高效深度排序使我們能夠處理完整、復(fù)雜的場景,包括室內(nèi)和室外的背景,并且具有較大的深度復(fù)雜性。
輸入是一組靜態(tài)場景的圖像,以及由 SfM校準的相應(yīng)攝像機,這會產(chǎn)生稀疏點云作為副作用。 從這些點出發(fā),我們創(chuàng)建了一組 3D 高斯(第 4 節(jié)),由位置(均值)、協(xié)方差矩陣和不透明度 ?? 定義,這允許非常靈活的優(yōu)化機制。 這會產(chǎn)生 3D 場景的相當緊湊的表示,部分原因是高度各向異性的體積片可用于緊湊地表示精細結(jié)構(gòu)。 輻射場的方向外觀分量(顏色)通過球諧函數(shù) (SH) 表示。 我們的算法繼續(xù)通過 3D 高斯參數(shù)的一系列優(yōu)化步驟來創(chuàng)建輻射場表示(第 5 節(jié)),即位置、協(xié)方差、?? 和 SH 系數(shù)與高斯密度自適應(yīng)控制的操作交織在一起。 我們方法效率的關(guān)鍵是我們基于圖塊的光柵化器(第 6 節(jié)),它允許各向異性圖塊的??混合,通過快速排序尊重可見性順序。 快速光柵化器還包括通過跟蹤累積的 ?? 值進行快速向后傳遞,并且對可以接收梯度的高斯數(shù)量沒有限制。 我們的方法的概述如圖 2 所示。
流程如圖:
可微3d gaussian splatting
我們的目標是優(yōu)化場景表示,從一組沒有法線的稀疏 (SfM) 點開始,實現(xiàn)高質(zhì)量的新穎視圖合成。 為此,我們需要一個基元,它繼承可微分體積表示的屬性,同時是非結(jié)構(gòu)化和顯式的,以允許非??焖俚匿秩尽?我們選擇 3D 高斯,它是可微分的,可以輕松投影到 2D splats,從而允許快速??混合進行渲染。
我們的表示與以前使用 2D 點的方法有相似之處 [Kopanas 等人。 2021 年; 一帆等人。 2019]并假設(shè)每個點都是一個具有法線的小平面圓。 鑒于 SfM 點極其稀疏,很難估計法線。 同樣,從這樣的估計中優(yōu)化非常嘈雜的法線將非常具有挑戰(zhàn)性。 相反,我們將幾何體建模為一組不需要法線的 3D 高斯函數(shù)。 我們的高斯函數(shù)由世界空間中定義的完整 3D 協(xié)方差矩陣 Σ 定義 [Zwicker 等人,2017]。 2001a] 以點(平均值)?? 為中心:
在我們的混合過程中,該高斯乘以 ??。
然而,我們需要將 3D 高斯投影到 2D 進行渲染。 茨威克等人。 [2001a] 演示如何對圖像空間進行投影。 給定觀察變換 ??,相機坐標中的協(xié)方差矩陣 Σ ′ 如下:
其中 ?? 是射影變換的仿射近似的雅可比行列式。 茨威克等人。 [2001a] 還表明,如果我們跳過 Σ ′ 的第三行和第三列,我們將獲得一個具有相同結(jié)構(gòu)和屬性的 2×2 方差矩陣,就好像我們從具有法線的平面點開始一樣,如之前的工作 [Kopanas et 等人。 2021]。
一種明顯的方法是直接優(yōu)化協(xié)方差矩陣 Σ 以獲得表示輻射場的 3D 高斯分布。 然而,協(xié)方差矩陣僅在半正定時才具有物理意義。 為了優(yōu)化所有參數(shù),我們使用梯度下降,它不能輕易地被約束來產(chǎn)生這樣的有效矩陣,并且更新步驟和梯度可以很容易地創(chuàng)建無效的協(xié)方差矩陣。
因此,我們選擇了一種更直觀、但同樣具有表達能力的表示方式來進行優(yōu)化。 3D 高斯的協(xié)方差矩陣 Σ 類似于描述橢球體的配置。 給定縮放矩陣??和旋轉(zhuǎn)矩陣??,我們可以找到相應(yīng)的Σ:
為了允許對這兩個因素進行獨立優(yōu)化,我們將它們分開存儲:用于縮放的 3D 向量 ?? 和表示旋轉(zhuǎn)的四元數(shù) ??。 這些可以簡單地轉(zhuǎn)換為各自的矩陣并組合,確保標準化 ?? 以獲得有效的單位四元數(shù)。
為了避免訓(xùn)練過程中自動微分帶來的巨大開銷,我們顯式地導(dǎo)出所有參數(shù)的梯度。 精確導(dǎo)數(shù)計算的詳細信息在附錄 A 中。各向異性協(xié)方差的這種表示(適合優(yōu)化)允許我們優(yōu)化 3D 高斯以適應(yīng)捕獲場景中不同形狀的幾何形狀,從而產(chǎn)生相當緊湊的表示。 圖 3 說明了這種情況。
通過 3D 高斯自適應(yīng)密度控制進行優(yōu)化
我們方法的核心是優(yōu)化步驟,它創(chuàng)建一組密集的 3D 高斯函數(shù),準確地表示自由視圖合成的場景。 除了位置 ??、?? 和協(xié)方差 Σ 之外,我們還優(yōu)化表示每個高斯顏色 ?? 的 SH 系數(shù),以正確捕獲場景的依賴于視圖的外觀。 這些參數(shù)的優(yōu)化與控制高斯密度的步驟交織在一起,以更好地表示場景。
優(yōu)化
優(yōu)化基于渲染的連續(xù)迭代并將生成的圖像與數(shù)據(jù)集中的訓(xùn)練視圖進行比較。 由于 3D 到 2D 投影的模糊性,幾何圖形不可避免地可能會被錯誤放置。 因此,我們的優(yōu)化需要能夠創(chuàng)建幾何體,并且如果幾何體定位不正確,還需要破壞或移動幾何體。 3D 高斯協(xié)方差參數(shù)的質(zhì)量對于表示的緊湊性至關(guān)重要,因為可以用少量大的各向異性高斯函數(shù)捕獲大的均勻區(qū)域。
我們使用隨機梯度下降技術(shù)進行優(yōu)化,充分利用標準 GPU 加速框架,以及為某些操作添加自定義 CUDA 內(nèi)核的能力。 特別是,我們的快速光柵化(參見第 6 節(jié))對于優(yōu)化的效率至關(guān)重要,因為它是優(yōu)化的主要計算瓶頸。
我們對 ?? 使用 sigmoid 激活函數(shù)將其限制在 [0 ? 1) 范圍內(nèi)并獲得平滑梯度,出于類似的原因,我們對協(xié)方差尺度使用指數(shù)激活函數(shù)。
我們將初始協(xié)方差矩陣估計為各向同性高斯矩陣,其軸等于到最近三個點的距離的平均值。 我們使用類似于 Plenoxels 的標準指數(shù)衰減調(diào)度技術(shù),但僅適用于位置。 損失函數(shù)是 L 1 與 D-SSIM 項的結(jié)合:
高斯自適應(yīng)控制
我們從 SfM 的初始稀疏點集開始,然后應(yīng)用我們的方法自適應(yīng)地控制單位體積 1 上高斯的數(shù)量及其密度,從而使我們能夠從初始的稀疏高斯集變?yōu)楦玫乇硎?場景,并具有正確的參數(shù)。 優(yōu)化預(yù)熱后(參見第 7.1 節(jié)),我們每 100 次迭代進行一次致密化,并刪除任何本質(zhì)上透明的高斯分布,即 ?? 小于閾值 ?? ?? 。 我們對高斯的自適應(yīng)控制需要填充空白區(qū)域。 它專注于缺少幾何特征的區(qū)域(“重建不足”),但也關(guān)注高斯覆蓋場景中大面積的區(qū)域(通常對應(yīng)于“過度重建”)。 我們觀察到兩者都有很大的視圖空間位置梯度。 直觀上,這可能是因為它們對應(yīng)于尚未很好重建的區(qū)域,并且優(yōu)化嘗試移動高斯來糾正這一點。
由于這兩種情況都是致密化的良好候選者,因此我們用高于閾值 ?? 的視空間位置梯度的平均幅度來致密高斯,我們在測試中將其設(shè)置為 0.0002。
接下來我們將詳細介紹該過程,如圖 4 所示。
圖 4.我們的自適應(yīng)高斯致密化方案。 頂行(重建中):當小規(guī)模幾何體(黑色輪廓)未被充分覆蓋時,我們克隆相應(yīng)的高斯。 底行(過度重建):如果小規(guī)模幾何體由一個大的板表示,我們將其分成兩部分。
對于重建區(qū)域中的小高斯,我們需要覆蓋必須創(chuàng)建的新幾何形狀。 為此,最好通過簡單地創(chuàng)建相同大小的副本并將其沿位置梯度的方向移動來克隆高斯。
另一方面,具有高方差的區(qū)域中的大高斯需要被分割成更小的高斯。 我們用兩個新的高斯函數(shù)替換這些高斯函數(shù),并將它們的尺度除以我們通過實驗確定的系數(shù) ?? = 1.6。 我們還通過使用原始 3D 高斯作為 PDF 進行采樣來初始化它們的位置。
在第一種情況下,我們檢測并處理增加系統(tǒng)總體積和高斯數(shù)量的需要,而在第二種情況下,我們保留總體積但增加高斯數(shù)量。 與其他體積表示類似,我們的優(yōu)化可能會因靠近輸入攝像機的浮動體而陷入困境; 在我們的例子中,這可能會導(dǎo)致高斯密度的不合理增加。 調(diào)節(jié)高斯數(shù)量增加的有效方法是每 ?? = 3000 次迭代將 ?? 值設(shè)置為接近于零。 然后,優(yōu)化會在需要時增加高斯的 ??,同時允許我們的剔除方法刪除 ?? 小于 ?? ?? 的高斯,如上所述。 高斯可能會縮小或增長,并且與其他高斯有相當大的重疊,但我們會定期刪除在世界空間中非常大的高斯以及在視空間中具有較大足跡的高斯。 該策略可以總體上很好地控制高斯總數(shù)。 我們模型中的高斯始終在歐幾里得空間中保持原語; 與其他方法不同,我們不需要針對遠距離或大高斯的空間壓縮、扭曲或投影策略。
優(yōu)化和致密化算法如下:
以colmap(sfm) 的稀疏點為起始, 調(diào)節(jié)高斯數(shù)量增加的有效方法是每 ?? = 3000 次迭代將 ?? 值設(shè)置為接近于零。
然后,優(yōu)化會在需要時增加高斯的 ??,同時允許我們的剔除方法刪除 ?? 小于 ?? ?? 的高斯,如上所述。
高斯可能會縮小或增長,并且與其他高斯有相當大的重疊,但我們會定期刪除在世界空間中非常大的高斯以及在視空間中具有較大足跡的高斯。
該策略可以總體上很好地控制高斯總數(shù)。 當小規(guī)模幾何體未被充分覆蓋時,我們克隆相應(yīng)的高斯。
如果小規(guī)模幾何體由一個大的板表示,我們將其分成兩部分。
高斯快速可微光柵化器
我們的目標是實現(xiàn)快速整體渲染和快速排序,以允許近似 ?? 混合(包括各向異性圖片),并避免對先前工作中存在的可以接收梯度的圖片數(shù)量進行硬性限制 [Lassner 和 Zollhofer 2021]。
為了實現(xiàn)這些目標,我們受最新軟件光柵化方法 [Lassner 和 Zollhofer 2021] 的啟發(fā),為高斯圖設(shè)計了一個基于圖塊的光柵化器,一次對整個圖像的圖元進行預(yù)排序,避免了對每個像素進行排序的開銷,而這會阻礙之前的 ??-混合解決方案。 我們的快速光柵化器允許在任意數(shù)量的混合高斯上進行有效的反向傳播,并且附加內(nèi)存消耗低,每個像素只需要恒定的開銷。 我們的光柵化管道是完全可微分的,并且考慮到 2D 投影(第 4 節(jié))可以對各向異性 splats 進行光柵化,類似于以前的 2D splatting 方法。
我們的方法首先將屏幕分割成 16×16 塊,然后根據(jù)視錐體和每個塊剔除 3D 高斯。 具體來說,我們只保留與視錐體相交的置信區(qū)間為 99% 的高斯分布。 此外,我們使用保護帶來簡單地拒絕極端位置處的高斯分布(即那些均值接近近平面且遠離視錐體的位置),因為計算它們的投影 2D 協(xié)方差將不穩(wěn)定。 然后,我們根據(jù)每個高斯重疊的圖塊數(shù)量來實例化它們,并為每個實例分配一個結(jié)合了視圖空間深度和圖塊 ID 的鍵。 然后,我們使用單個快速 GPU 基數(shù)排序根據(jù)這些鍵對高斯進行排序 [Merrill 和 Grimshaw 2010]。 請注意,沒有額外的每像素點排序,并且混合是基于此初始排序執(zhí)行的。 因此,我們的 ?? 混合在某些配置中可以是近似的。 然而,當圖塊接近單個像素的大小時,這些近似值變得可以忽略不計。 我們發(fā)現(xiàn)這種選擇極大地增強了訓(xùn)練和渲染性能,而不會在融合場景中產(chǎn)生可見的偽影。
對高斯進行排序后,我們通過識別第一個和最后一個映射到給定圖塊的深度排序條目來為每個圖塊生成一個列表。 對于光柵化,我們?yōu)槊總€圖塊啟動一個線程塊。 每個塊首先協(xié)作地將高斯數(shù)據(jù)包加載到共享內(nèi)存中,然后對于給定的像素,通過從前到后遍歷列表來累積顏色和??值,從而最大化數(shù)據(jù)加載/共享和處理的并行性增益。 當我們達到像素中的目標飽和度 ?? 時,相應(yīng)的線程就會停止。 每隔一段時間,就會查詢圖塊中的線程,并且當所有像素都飽和時(即 ?? 變?yōu)?1),整個圖塊的處理就會終止。 附錄 C 中給出了排序的詳細信息和總體光柵化方法的高級概述。
在光柵化過程中,??的飽和度是唯一的停止標準。 與之前的工作相比,我們不限制接收梯度更新的混合基元的數(shù)量。 我們強制執(zhí)行此屬性,以允許我們的方法處理具有任意、不同深度復(fù)雜性的場景并準確地學(xué)習(xí)它們,而不必求助于特定于場景的超參數(shù)調(diào)整。 因此,在后向傳遞過程中,我們必須恢復(fù)前向傳遞中每個像素的混合點的完整序列。 一種解決方案是將每個像素的任意長混合點列表存儲在全局內(nèi)存中[Kopanas et al. 2021]。 為了避免隱含的動態(tài)內(nèi)存管理開銷,我們選擇再次遍歷 Pertile 列表; 我們可以重用前向傳遞中的高斯排序數(shù)組和平鋪范圍。 為了便于梯度計算,我們現(xiàn)在從后到前遍歷它們。
遍歷從影響圖塊中任何像素的最后一個點開始,并且將點加載到共享內(nèi)存中再次協(xié)作發(fā)生。 此外,如果每個像素的深度低于或等于前向傳遞過程中對其顏色有貢獻的最后一個點的深度,則每個像素只會開始(昂貴的)點重疊測試和處理。 第 4 節(jié)中描述的梯度計算需要原始混合過程中每個步驟的累積不透明度值。 我們可以通過在前向傳遞結(jié)束時僅存儲累積的總不透明度來恢復(fù)這些中間不透明度,而不是在后向傳遞中遍歷逐漸縮小的不透明度的顯式列表。 具體來說,每個點存儲的是前向過程中最終累積的不透明度??; 我們在從后到前的遍歷中將其除以每個點的??,以獲得梯度計算所需的系數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-821133.html
優(yōu)化細節(jié)。 為了穩(wěn)定性,我們以較低的分辨率“預(yù)熱”計算。 具體來說,我們使用 4 倍小的圖像分辨率開始優(yōu)化,并在 250 次和 500 次迭代后上采樣兩次。
SH 系數(shù)優(yōu)化對角度信息的缺乏很敏感。 對于典型的“類似 NeRF”的捕捉,通過在其周圍的整個半球拍攝的照片來觀察中心物體,優(yōu)化效果很好。 然而,如果捕獲丟失了角度區(qū)域(例如,當捕獲場景的角落或執(zhí)行“由內(nèi)而外”[Hedman et al. 2016]捕獲時)SH 的零階分量可以通過優(yōu)化產(chǎn)生完全不正確的值( 即,基礎(chǔ)顏色或漫反射顏色)。 為了克服這個問題,我們首先僅優(yōu)化零階分量,然后每 1000 次迭代后引入一個 SH 頻帶,直到表示所有 4 個 SH 頻帶。文章來源地址http://www.zghlxwxcb.cn/news/detail-821133.html
到了這里,關(guān)于3d gaussian splatting筆記(paper部分翻譯)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!