3D 高斯溶膠簡介
3D 高斯溶膠是一種光柵化技術,允許從少量圖像樣本中衍生出的寫實場景進行實時渲染。它代表從傳統基於三角形的光柵化向基於高斯的方法轉變,使得 3D 環境的高保真視覺重建成為可能。
3D 高斯溶膠的核心機制
3D 高斯溶膠作為一種光柵化技術運作,意味著它會取得描述場景的資料並將該資料繪製到螢幕上。與依賴三角形光柵化的傳統電腦圖形不同,此方法使用高斯來表示場景。
每個獨立的高斯由四個主要參數定義:
- 位置:高斯的 XYZ 座標。
- 協方差:一個 3x3 矩陣,定義高斯被拉伸或縮放的方式。
- 顏色:高斯的 RGB 值。
- Alpha:高斯的透明度 (α)。
透過將數百萬個這樣的高斯進行光柵化——有時單一場景多達 700 萬——系統能夠創建出密集且寫實的 3D 物體或環境表示。
技術流程
建立一個 3D 高斯溶膠場景的過程包含四個不同的階段:
1. 結構從運動 (SfM)
流程從結構從運動開始,以估算一組 2D 圖像的 3D 點雲。這通常透過 COLMAP 函式庫來實現。
2. 轉換為高斯
估計點雲中的每個點被轉換為一個高斯。雖然這允許立即進行光柵化,但初始轉換僅提供位置和顏色資料。為了獲得高品質結果,該表示必須經歷一個訓練過程。
3. 透過隨機梯度下降進行訓練
訓練使用隨機梯度下降 (SGD) 來優化高斯參數。該過程遵循以下步驟:
- 光柵化:高斯透過可微分光柵器渲染成圖像。
- 損失計算:計算光柵化圖像與地面真實圖像之間的差異。
- 參數調整:根據損失調整高斯參數。
- 密集化與修剪:系統自動管理高斯的數量。如果梯度較大,小高斯會被複製,大高斯會被分割。相反地,如果高斯的 alpha 值變得過低,則會將其移除(修剪)。
4. 可微分高斯光柵化
為了透過 SGD 進行訓練,光柵器必須是可微分的。渲染過程涉及從相機視角將每個高斯投射到 2D,按深度排序,並對每個像素進行前到後的混合。
效能權衡與限縮
雖然 3D 高斯溶膠提供高品質、即時的效能,但它也帶來特定的技術限制:
優點
- 高品質、寫實的場景重建。
- 快速的即時光柵化速度。
- 相對快速的訓練時間。
缺點
- 高 VRAM 使用量:觀看時需要 4GB VRAM,訓練時需要 12GB。
- 大量儲存需求:單一場景在磁碟上可能超過 1GB。
- 管線不相容:原始 CUDA 實作無法原生與現有的生產渲染管線相容,如 Vulkan、DirectX 或 WebGPU。
- 靜態特性:原始方法設計用於靜態場景。
產業影響與未來展望
3D 高斯溶膠提供了 3D 空間的密集表示,這可能對具身 AI 研究產生重大影響,因為準確表示 3D 空間是該領域的主要挑戰。此外,對動態 3D 高斯的研究表明,該技術最終可能支援動畫。
關於生產整合,主要瓶頸是高效排序數百萬個高斯。原始實作使用 CUB 設備基數排序,這是一項 CUDA 特定的優化。然而,已經出現了幾種適配,包括 WebGPU、WebGL 和 Unity 的查看器。儘管其中一些使用基於四邊形的光柵化——這可能會降低品質或效能——但已有優化技巧表明,即使在 CUDA 環境之外也能獲得高品質的結果。