詳解3DGS

4 可微分的3D高斯 splatting

核心目標與表示選擇

我們的目標是從無法線的稀疏SfM點出發,優化出一種能夠實現高質量新視角合成的場景表示。為此,我們選擇3D高斯作為基本圖元,它兼具可微分的體表示特性非結構化的顯式表示優勢,既能支持優化過程,又能實現快速渲染。

高斯參數與投影模型
  1. 3D高斯定義
    高斯由世界空間中的均值(位置) μ \mu μ和協方差矩陣 ∑ \sum 定義,其概率密度函數為:

G ( x ) = e ? 1 2 ( x ? μ ) T ∑ ? 1 ( x ? μ ) G(x) = e^{-\frac{1}{2}(x-\mu)^T \sum^{-1}(x-\mu)} G(x)=e?21?(x?μ)T?1(x?μ)

其中,協方差矩陣 ∑ \sum 描述了高斯的形狀和方向,通過縮放矩陣 S S S和旋轉矩陣 R R R分解為:
∑ = R S S T R T \sum = R S S^T R^T =RSSTRT
這種分解方式將協方差的優化轉化為對縮放向量 s s s(3個自由度)和旋轉四元數 q q q(4個自由度,歸一化后3個自由度)的優化,避免了直接優化協方差矩陣時的正半定性約束問題。

  1. 投影到2D圖像空間
    通過相機變換 V V V和投影雅可比矩陣 J J J,將3D高斯投影為圖像空間中的2D橢圓。投影后的協方差矩陣 ∑ ′ \sum' 為:

∑ ′ = J V ∑ V T J T \sum' = J V \sum V^T J^T ?=JVVTJT

取其左上角2x2子矩陣,即可得到與傳統基于點的方法(如使用法線的平面點)等價的2D方差矩陣,用于渲染時的 α \alpha α混合。

優化與梯度計算
  1. 參數優化
    優化參數包括高斯的位置、縮放、旋轉、不透明度 α \alpha α和球面調和函數(SH)系數(用于表示顏色的視圖相關性)。通過隨機梯度下降(SGD)最小化 L 1 L_1 L1?損失和D-SSIM損失的加權和:

L = ( 1 ? λ ) L L 1 + λ L D - S S I M ( λ = 0.2 ) \mathcal{L} = (1-\lambda)\mathcal{L}_{L1} + \lambda\mathcal{L}_{D\text{-}SSIM} \quad (\lambda=0.2) L=(1?λ)LL1?+λLD-SSIM?(λ=0.2)

采用指數衰減學習率調度,并通過 sigmoid 和指數激活函數約束參數范圍。

  1. 顯式梯度推導
    為避免自動微分的開銷,手動推導了縮放 s s s和旋轉 q q q的梯度。通過鏈式法則,將協方差矩陣的梯度分解為對旋轉矩陣和縮放矩陣的導數,利用四元數與旋轉矩陣的轉換關系,推導出各參數的梯度表達式。
優勢與應用
  • 靈活性與緊湊性:3D高斯的各向異性特性使其能自適應復雜幾何結構(如薄結構、曲面),通過優化協方差矩陣,僅需1-5百萬個高斯即可精確表示場景,遠少于傳統點云方法。
  • 可微分渲染:投影和渲染過程完全可微分,支持端到端優化,結合后續的自適應密度控制和快速光柵化,實現了高質量、實時的新視角合成。
與其他方法的對比

相較于基于神經網絡的NeRF方法(如Mip-NeRF360),3D高斯 splatting無需密集采樣和體積渲染,通過顯式幾何表示和GPU加速的光柵化,顯著提升了訓練和渲染速度;相較于傳統點云方法,其可微分特性和各向異性建模能力顯著提高了重建質量。

5 3D高斯的自適應密度控制優化

一、核心目標與優化框架

目標:通過優化3D高斯的參數(位置、協方差、不透明度、顏色)和動態調整高斯密度,生成精確的場景表示,實現高質量新視角合成。
輸入:SfM(結構從運動)生成的稀疏點云、多視圖圖像。
框架

  1. 初始化:從SfM點云創建初始3D高斯集合,每個高斯由位置、各向同性協方差、初始不透明度和顏色(球面調和函數系數)定義。
  2. 迭代優化:通過可微分渲染將高斯投影為圖像,與真實圖像對比計算損失(L1 + D-SSIM),使用隨機梯度下降(SGD)更新參數。
  3. 自適應密度控制:在優化過程中動態添加或刪除高斯,平衡模型復雜度與重建精度。
二、優化參數與損失函數
  1. 優化參數
    • 幾何參數:3D位置 (\mathbf{p})、各向異性協方差(縮放 (\mathbf{s})、旋轉 (\mathbf{q}))、不透明度 (\alpha),
    • 外觀參數:球面調和函數(SH)系數,用于表示視角相關的顏色(如漫反射、高光)。
  2. 損失函數
    [
    \mathcal{L} = (1-\lambda)\mathcal{L}{\text{L1}} + \lambda\mathcal{L}{\text{D-SSIM}} \quad (\lambda=0.2)
    ]
    • (\mathcal{L}_{\text{L1}}) 衡量渲染圖像與真實圖像的像素級差異,
    • (\mathcal{L}_{\text{D-SSIM}}) 衡量結構相似性,提升感知質量。
  3. 激活函數與約束
    • sigmoid 約束 (\alpha \in [0, 1)),
    • 指數函數 約束協方差縮放因子為正,
    • 四元數 (\mathbf{q}) 歸一化為單位四元數,確保旋轉矩陣有效。
三、自適應密度控制:克隆與分裂策略

為解決場景中欠重建(幾何缺失)過重建(幾何冗余)問題,通過梯度分析動態調整高斯密度:

  1. 欠重建區域(小高斯,高梯度)
    • 檢測:若高斯在視圖空間的位置梯度均值超過閾值 (\tau_{\text{pos}}=0.0002),且協方差規模較小(低于閾值 (\tau_S)),視為欠重建。
    • 操作克隆高斯,復制當前高斯并沿梯度方向移動,填補幾何缺口(圖4上排)。
  2. 過重建區域(大高斯,高方差)
    • 檢測:若高斯協方差規模較大(高于 (\tau_S)),且覆蓋區域細節復雜,視為過重建。
    • 操作分裂高斯,將一個大高斯拆分為兩個小高斯,縮放因子除以 (\phi=1.6),并在原高斯的概率密度函數(PDF)上采樣初始化新位置(圖4下排)。
  3. 剪枝操作
    • 刪除不透明度 (\alpha < \epsilon_{\alpha})(如 (\epsilon_{\alpha}=1e-4))的透明高斯,
    • 刪除世界空間中尺寸過大或視圖空間中投影面積過大的高斯,避免“飛點”和冗余計算。
四、優化流程與關鍵技術
  1. 分辨率熱身(Warm-up)
    從低分辨率(原圖1/4)開始優化,每250-500次迭代逐步提升至全分辨率,避免高分辨率下的優化震蕩。
  2. 球面調和函數分步優化
    初始僅優化SH零階系數(漫反射顏色),每1000次迭代添加高一階系數,避免因視角覆蓋不足導致的顏色失真。
  3. 快速可微分渲染
    • 基于瓦片(Tile-based)的光柵化器,將屏幕劃分為16×16像素塊,對每個瓦片內的高斯按深度排序,
    • 支持各向異性高斯的 (\alpha) 混合,通過Radix排序和共享內存加速,確保優化階段的渲染速度(135 FPS,文檔表1)。
五、效果與優勢
  1. 緊湊表示:通過自適應密度控制,僅需1-5百萬個高斯即可精確表示復雜場景,遠少于傳統點云方法(如Point-NeRF需數千萬點)。
  2. 幾何適應性:各向異性高斯可擬合薄結構(如葉片)、曲面和遠距離細節,如圖3所示,優化后的高斯通過協方差調整呈現橢球形狀,貼合真實幾何。
  3. 訓練效率:在Mip-NeRF360數據集上,30K次迭代僅需約51分鐘,遠快于Mip-NeRF360的48小時,且PSNR達25.2,超越InstantNGP和Plenoxels(文檔圖1、表1)。
六、局限性與改進方向
  1. 當前局限
    • 極端視角或低重疊區域可能產生“飛高斯”或模糊(圖12),
    • 大規模場景(如城市)需調整位置學習率,避免優化發散。
  2. 未來優化
    • 引入正則化約束高斯形狀,減少“斑點狀” artifacts,
    • 結合壓縮技術(如點云編碼)降低內存消耗,
    • 支持動態場景的在線優化。

總結

自適應密度控制優化是3D高斯 splatting 的核心創新之一,通過“優化-密度控制-渲染”的閉環,實現了幾何細節的自適應建模計算資源的高效分配。該方法在保持高重建質量的同時,將訓練時間和渲染延遲壓縮至實時水平,為大規模場景的實時神經渲染提供了新范式(文檔結論部分)。

6 高斯的快速可微分光柵化器

一、核心目標與設計原則

目標:實現3D高斯的實時渲染可微分優化,支持高分辨率(如1080p)下的高質量新視角合成。
設計原則

  1. 利用GPU并行計算:通過瓦片劃分(Tile-based)和快速排序,充分利用GPU的并行處理能力,
  2. 精確性與效率平衡:在保證渲染質量的前提下,避免傳統體積渲染的高采樣成本,
  3. 全流程可微分:確保投影、排序、混合過程的梯度可反向傳播,支持端到端優化。
二、關鍵技術組件
1. 瓦片劃分與視錐體剔除
  • 屏幕劃分:將圖像分為16×16像素的瓦片(Tile),每個瓦片獨立處理,減少內存訪問沖突,
  • 視錐體剔除:對每個高斯進行視錐體檢測,僅保留與視圖 frustum 相交(99%置信區間)的高斯,剔除遠距離或視角外的無效圖元,
  • 保護帶(Guard Band):拒絕近平面附近且嚴重偏離視圖 frustum 的高斯,避免投影時的數值不穩定。
2. 基于深度的快速排序
  • 鍵值生成:為每個高斯生成排序鍵,包含視圖空間深度瓦片ID,其中深度值用于確定前后順序,瓦片ID用于分組,
  • 基數排序(Radix Sort):利用GPU的并行基數排序算法,對所有高斯進行全局排序,確保同瓦片內的高斯按深度有序(近→遠),
  • 瓦片范圍標識:排序后,為每個瓦片標記高斯列表的起始和結束索引,便于后續分塊渲染(如圖6中的算法2)。
3. 各向異性高斯渲染與α混合
  • 投影到2D橢圓:根據3D協方差矩陣,將高斯投影為2D圖像空間中的各向異性橢圓,橢圓的形狀由協方差矩陣的特征值和特征向量決定,
  • α混合公式:按深度順序對橢圓進行從前到后(front-to-back)的混合,累積顏色和不透明度:
    [
    C = \sum_i T_i \alpha_i c_i, \quad T_i = \prod_{j=1}^{i-1} (1 - \alpha_j)
    ]
    其中,(\alpha_i) 為當前高斯的不透明度,(T_i) 為累積透明度,確保遠高斯被近高斯遮擋,
  • 提前終止:當像素的累積不透明度 (T_i < 1 - \epsilon)(如 (\epsilon=1e-4))時,停止混合,加速渲染。
4. 可微分反向傳播
  • 前向記錄:在正向渲染過程中,記錄每個像素的累積不透明度和混合順序,
  • 反向遍歷:反向傳播時,從后到前(back-to-front)遍歷高斯,利用前向記錄的累積值計算梯度,
  • 無限制梯度傳播:支持任意數量高斯的梯度計算,無需限制每個像素的最大混合次數(如Pulsar的N=10限制),避免因截斷導致的優化不穩定(文檔圖9)。
三、性能優化細節
1. 共享內存與數據重用
  • 瓦片級數據加載:每個線程塊處理一個瓦片,協作將高斯數據加載到共享內存,減少全局內存訪問次數,
  • 向量化操作:利用CUDA的向量化指令(如warp-level操作),并行處理同一瓦片內的多個像素,提升計算效率。
2. 數值穩定性保障
  • 不透明度鉗制:將 (\alpha) 限制在 ([0, 0.9999]) 范圍內,避免除以零或數值溢出,
  • 梯度修正:在反向傳播中,通過累積不透明度的除法操作((T_i / \alpha_i))恢復中間透明度,確保梯度計算的穩定性。
3. 與優化階段的協同
  • 訓練時的高效反饋:光柵化器的快速渲染能力(如135 FPS)使優化迭代周期縮短,結合自適應密度控制,實現51分鐘內達到SOTA質量(文檔圖1),
  • 多分辨率支持:在低分辨率下熱身訓練,逐步提升至全分辨率,避免高分辨率下的過擬合和計算過載。
四、與其他方法的對比
特性本文光柵化器傳統體積渲染(如NeRF)點云光柵化(如Pulsar)
渲染速度實時(≥30 FPS,1080p)慢(0.07 FPS,Mip-NeRF360)較快(~10 FPS)
幾何表示3D各向異性高斯隱式密度場2D點+法線
可微分性全流程可微分,支持任意深度可微分,但依賴隨機采樣部分可微分,需限制混合次數
內存消耗數百MB(高斯參數)低(神經網絡權重)取決于點云數量(通常更高)
** artifacts**少(深度排序+α混合)噪聲(需大量采樣)孔洞或閃爍(點分布不均)
五、局限性與未來方向
  1. 當前局限
    • 深度排序為近似排序(基于瓦片而非像素級),可能導致極個別像素的遮擋順序錯誤,
    • 復雜場景中高斯數量過大時(如>500萬),排序和存儲開銷增加。
  2. 改進方向
    • 引入硬件加速的光線追蹤,提升復雜遮擋場景的準確性,
    • 開發高斯壓縮算法(如聚類或稀疏表示),降低內存占用,
    • 支持動態分辨率調整,適應實時交互中的性能需求變化。

總結

快速可微分光柵化器是3D高斯 splatting 實現“實時渲染”的核心引擎,通過瓦片劃分-排序-混合的流水線設計,結合GPU并行計算和可微分技術,在保證高渲染質量的同時,將訓練和推理速度提升至傳統NeRF方法的數十倍。該技術不僅為實時神經渲染提供了新工具,也為顯式幾何表示與可微分渲染的結合開辟了新路徑(文檔結論部分)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84600.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

構建版本沒mac上傳APP方法

在蘋果開發者的app store connect上架Ios應用的時候&#xff0c;發現需要使用xode等軟件來上傳iOS的APP。 但是不管是xcode也好&#xff0c;transporter也好&#xff0c;還是命令行工具也好&#xff0c;都必須安裝在mac電腦才能使用&#xff0c;。 假如沒有mac電腦&#xff0…

Gitee PPM:智能化項目管理如何重塑軟件工廠的未來格局

在數字化轉型浪潮席卷全球的當下&#xff0c;軟件開發行業正經歷著前所未有的變革。隨著企業項目復雜度呈指數級增長&#xff0c;傳統項目管理方式已難以應對多項目并行、跨團隊協作等挑戰。Gitee項目組合管理&#xff08;PPM&#xff09;作為新一代智能化項目管理解決方案&…

node入門:安裝和npm使用

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、安裝npm命令nvm 前言 因為學習vue接觸的&#xff0c;一直以為node是和vue綁定的&#xff0c;還以為vue跑起來必須要node&#xff0c;后續發現并不是。 看…

單例模式,餓漢式,懶漢式,在java和spring中的體現

目錄 餓漢式單例模式 懶漢式單例模式 Spring中的單例模式 關鍵差異對比 在Java和Spring中的應用場景 手寫案例 單例模式是一種創建型設計模式&#xff0c;其核心在于確保一個類僅有一個實例&#xff0c;并提供一個全局訪問點來獲取該實例。下面將詳細介紹餓漢式和懶漢式…

網絡編程——UDP網絡編程

文章目錄 1、sendto()&#xff0c;recvfrom() 與TCP編程不同的是&#xff1a; 無需建立連接&#xff0c;在recvfrom()阻塞等待客戶端的數據&#xff0c;收到數據后進入do something進行數據的處理。 1、sendto()&#xff0c;recvfrom() ssize_t sendto(int socket, void *mes…

OpenSSL詳解

這里寫目錄標題 選項&#xff1a;**通用選項&#xff1a;**1. genrsa&#xff1a;生成RSA密鑰對3. req&#xff1a;生成證書簽名請求4. x509&#xff1a;生成自簽名證書 **證書管理&#xff1a;**1. verify&#xff1a;驗證證書2. x509&#xff1a;查看證書詳情3. crl&#xff…

MySQL的日志和備份

目錄 一. MySQL的日志 1.1 日志的作用 1.2 日志的分類 1.3 事務日志 1.4 錯誤日志 1.5 通用日志 1.6 慢查詢日志 1.7 二進制備份 二. 備份 2.1 數據備份的重要性 2.2 備份的分類 2.3 MySQL備份的內容 2.4 備份的注意點 2.5 備份的工具 2.6 實戰案例 2.7 mysql…

前端性能優化:如何讓網頁加載更快?

摘要 想象一下&#xff0c;滿心期待點開一個網頁&#xff0c;卻等了十幾秒還卡在加載界面&#xff0c;你是不是瞬間就想關掉走人&#xff1f;這可不是個別用戶的 “急性子”&#xff0c;數據顯示&#xff0c;網頁每多延遲 1 秒&#xff0c;用戶流失率可能增加 11%&#xff01;…

[論文閱讀]Prompt Injection attack against LLM-integrated Applications

Prompt Injection attack against LLM-integrated Applications [2306.05499] Prompt Injection attack against LLM-integrated Applications 傳統提示注入攻擊效果差&#xff0c;主要原因在于&#xff1a; 不同的應用對待用戶的輸入內容不同&#xff0c;有的將其視為問題&a…

微信小程序進階第2篇__事件類型_冒泡_非冒泡

在小程序中&#xff0c; 事件分為兩種類型&#xff1a; 冒泡事件&#xff0c; 當一個組件上的事件被觸發后&#xff0c;該事件會向父節點傳遞非冒泡事件&#xff0c; 當一個組件上的事件被觸發后&#xff0c; 該事件不會向父節點傳遞。 一 冒泡事件 tap&#xff0c; touchst…

[免費]SpringBoot+Vue在線教育(在線學習)系統(高級版)【論文+源碼+SQL腳本】

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;看到一個不錯的SpringBootVue在線教育(在線學習)系統(高級版)【論文源碼SQL腳本】&#xff0c;分享下哈。 項目視頻演示 【免費】SpringBootVue在線教育(在線學習)系統(高級版) Java畢業設計_嗶哩嗶哩_bilibili 項目介紹…

TypeScript 針對 iOS 不支持 JIT 的優化策略總結

# **TypeScript 針對 iOS 不支持 JIT 的優化策略總結** 由于 iOS 的 **JavaScriptCore (JSC)** 引擎 **禁用 JIT&#xff08;Just-In-Time 編譯&#xff09;**&#xff0c;JavaScript 在 iOS 上的執行性能較差&#xff0c;尤其是涉及動態代碼時。 **TypeScript&#xff08;T…

項目部署一次記錄

鏈路&#xff1a;&#xff08;用戶&#xff09;客戶端 → Nginx:192.168.138.100→ Tomcat &#xff08;程序&#xff09;:192.168.138.101→ MySQL/Redis 打開數據庫&#xff1a;systemctl start mysqld 重啟網絡&#xff1a; systemctl restart NetworkManager 關閉防火墻&am…

C 語言學習筆記

文章目錄 程序設計入門 --- C 語言第一周 程序設計與 C 語言1 計算機與編程語言&#xff1a;計算機怎么做事情的&#xff0c;編程語言是什么&#x1f4d2; 1.1 計算機的普遍應用 —— 離了它&#xff0c;現代人可能不會“活”了**&#x1f310; 科學計算&#xff1a;計算機的“…

服務器修改/home的掛載路徑

寫在前面&#xff1a;前段時間新裝了一臺服務器&#xff0c;/home目錄原本是掛在在系統盤/dev/sda4的分區下&#xff0c;但是系統盤的空間比較小&#xff0c;為了保證后續使用起來&#xff0c;不會遇到磁盤很快就占滿的情況&#xff0c;現在需要將 /home 獨立出來&#xff0c;掛…

刷機維修進階教程-----沒有開啟usb調試 如何在鎖定機型的撥號界面特殊手段來開啟ADB

有時候我們會遇到一些機型被屏幕鎖 賬號鎖等鎖定。無法進入系統界面。也沒有開啟usb調試的情況下如何通過一些操作來開啟adb調試。然后通過adb指令來禁用對應的app順利進入系統。以此來操作保數據等操作. 通過博文了解?????? 1??????----了解一些品牌機型鎖定狀態…

虛擬文件(VFS)

核心知識點&#xff1a;虛擬文件系統&#xff08;VFS&#xff09; 1. 通俗易懂的解釋 想象一下你家里的冰箱。你把食物放進去&#xff0c;不用管它是放在塑料盒里、玻璃罐里還是直接用保鮮膜包著&#xff0c;你只需要知道它在冰箱的哪個位置&#xff08;比如“蔬菜抽屜里”&a…

前后端聯調實戰指南:Axios攔截器、CORS與JWT身份驗證全解析

前言 在現代Web開發中&#xff0c;前后端分離架構已成為主流&#xff0c;而前后端聯調則是開發過程中不可避免的關鍵環節。本文將深入探討前后端聯調中的三大核心技術&#xff1a;Axios攔截器的靈活運用、CORS跨域問題的全面解決方案以及JWT身份驗證的安全實現。通過本文&…

Postman基礎操作

1.Postman是什么&#xff1f; Postman是接口測試的工具&#xff0c;簡單來說它能模擬瀏覽器對服務器的某個接口發起請求并接收響應數據。 1.1 Postman工作原理 2.Postman發送請求 2.1 發送GET請求 我們知道GET請求是沒用請求體的&#xff0c;所以我們需要將請求參數寫在Param…

Elasticsearch Synthetic _source

_source 字段包含索引時傳入的原始 JSON 文檔體。_source 字段本身不被索引&#xff08;因此不可搜索&#xff09;&#xff0c;但會被存儲&#xff0c;以便在執行獲取請求&#xff08;如 get 或 search&#xff09;時返回。 如果磁盤使用很重要&#xff0c;可以考慮以下選項&a…