[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering

pdf | proj | code

  • 本文提出一種新的3D數據表達形式3D Gaussians。每個Gaussian由以下參數組成:中心點位置、協方差矩陣、可見性、顏色。通過世界坐標系到相機坐標系,再到圖像坐標系的仿射關系,可將3D Gaussian映射到相機坐標系,通過對z軸積分,可得到對應Splatting 2D分布。
  • 針對3D Gaussians,提出對應的優化方法。去除可見性太低的高斯,對回傳梯度較大的高斯,通過復制,克隆等操作,增強表達能力。
  • 針對3D Gaussians,提出對應的光柵化方法。將圖像切分為16 x 16的塊,每個塊內對高斯根據深度進行排序。光柵時,從前向后遍歷,當可見性累加到某個閾值即停止。梯度回傳時從停止塊開始,有后向前遍歷。

目錄

摘要

引言

近期工作

Traditional Scene Reconstruction and Rendering

Neural Rendering and Radiance Fields

Point-Based Rendering and Radiance Fields

Overview

Differentiable 3D Gaussian Splatting

Optimization with Adaptive Density Control of 3D Gaussians

Fast Differentiable Rasterizer for Gaussians

Implementation, Results and Evaluation

Implementation

Results and Evaluation

Real-World Scenes

Synthetic Bounded Scenes

Ablations

Initialization from SfM

Densification

Unlimited depth complexity of splats with gradients

Anisotropic Covariance?

Limitations


摘要

  • NeRF效果好,但是訓練和渲染很花時間;特別是對1080p分辨率渲染的場景,現有方法無法實現實時渲染。
  • 本文引入三個關鍵部分,實現sota視覺質量、較短訓練時間和1080p分辨率下新視角實時渲染。
    • 3D Gaussians。通過camera calibration中產生的稀疏點進行初始化。這種新的3D表達形式在保存NeRF優點的同時,避免了空白空間不必要的計算開銷;
    • Optimization。實現3D Gaussian的交替優化和密度控制,優化各向異性協方差矩陣實現對場景的準確表達;
    • Rendering。實現快速可見感知渲染算法(fast visibility-aware rendering algorithm),支持各向異性飛濺(anisotropic splatting),同時加速訓練和渲染。
  • 本文在多個數據集上,實現sota視覺質量和實時渲染。

引言

  • Mesh和點云是最常用的3D場景表達,這種顯式表達非常適合快速GPU/CUDA-based rasterization。另一方面,NeRF可建立連續的場景表達,用volumetric ray-marching優化MLP,實現新視角生成。基于NeRF的高效算法,通常會引入一些新的表達形式,用插值的方式實現連續表達,例如:體素(voxel),hash grids,或點云。這些方法效果不錯,但是渲染中要求的隨機采樣計算開銷大、并且會導致噪聲。本文提出的方法:3D Gaussian可以實現sota的視覺質量和具有競爭力的訓練時間;tile-based splatting solution可以實現1080p的實時渲染。
  • 本文所提方法由三個主要部分組成。
    • 3D Gaussians:通過Structure-from-Motion (SfM) 相機標定得到的稀疏點云初始化,對于NeRF-synthetic dataset,本文方法在隨機初始化情況下,也可取得較好的結果。3D Gaussian的優點在于(a)可導的體表示;(b)通過映射至2D,實現高效柵格化;(c)可以實施標準的alpha-blending;
    • 優化:提出一種優化3D Gaussians參數的方法,參數包括:3D position,opacity alpha,anisotropic covariance和球諧系數(spherical harmonic coefficients)。優化方法:交替執行密度控制步,在優化過程中增加或去除3D Gaussians。
    • 渲染:提出一種快速GPU排序算法,受tile-based rasterization方法啟發。實現各向異性紋理飛濺(anisotropic splatting),一種可見性排序(visibility ordering)。受益于排序和alpha-blending,可以實現快速和準確的反向傳播。

近期工作

Traditional Scene Reconstruction and Rendering

  • light fields (1996) -> Structure-from-Motion (SfM,2006) -> multi-view stereo (MVS,2007)
  • MVS-based方法會重投影(re-project)并融合(blend)輸入圖片到新相機視角,使用幾何引導重投影。?

Neural Rendering and Radiance Fields

  • Soft3D (2017,首次提出Volumetric representations) -> 將深度學習技術應用到volumetric ray-marching(2019)-> NeRF (2020,提出importance sampling和postional encoding,但是較大MLP影響了速度) -> MipNeRF360(2022,sota視覺效果,但訓練和渲染時間太長)
  • 為了加速訓練或渲染,現有的探索集中在三個方向:稀疏數據結構存儲特征,不同的編碼器和MLP容量。其中,值得一提的方法是InstantNGP(2022),該方法使用hash grid和occupancy grid來加速計算,用一個較小的MLP表示密度和外觀。Plenoxels(2022),使用稀疏體素網格,插值表示連續密度場,并且能夠不使用MLP。
  • 盡管上述方法產生了很好的結果,這些方法仍然不能高效表示空白區域。

Point-Based Rendering and Radiance Fields

\alpha-blending和體渲染(volumetric rendering)本質上是相同的成像模型。對于體渲染方法:

其中\sigma是密度,T是透光率,c是顏色,\delta是相鄰采樣點的間隙。\sigma_i\delta_i密度越大,\alpha_i越接近1,該點越重要;之前點的密度和越大,T越大,該點越不重要。上式可以被重新組織為:

alpha-blending可以表示為:

其中,所有點根據前后關系排序,c_i是該點顏色,\alpha_i是該點所在2D高斯的概率密度乘以該點的不透明性(opacity)。

相較于之前的\alpha-blending柵格化方法,本文提出可見性(visibility)排序。另外,本文反向傳播梯度到像素點中的所有splats,柵格化所有各向異性splats。

Overview

  • Initialization:給定靜態場景的一組圖片,和對應經過SfM校準的相機參數,以及SfM在校準過程中產生的稀疏點云;
  • 3D Gaussians:給定稀疏點云,初始化3D Gaussians,每個3D Gaussian由位置mean,協方差矩陣和不透明性\alpha決定;輻射場中指向性外觀部分(顏色),通過spherical harmonics (SH) 表征;
  • Optimization:逐步優化3D Gaussians的參數:位置、協方差矩陣、\alpha和SH系數;
  • Rendering:tile-based rasterizer,支持根據可見性順序的各向異性splats的\alpha-blending

Differentiable 3D Gaussian Splatting

在世界坐標系下,3D Gaussians由三個系數定義:均值\mu,3D協方差矩陣\Sigma\alpha

將世界坐標系下的3D Gaussians轉換到相機坐標下:

其中,W是世界坐標系坐標到相機坐標系坐標的轉換矩陣,J是透視變換的Jacobian矩陣。

參考:EWA Volume Splatting

  • View transformation:將世界坐標系下坐標轉換到相機坐標系。假設t = (t_0, t_1, t_2)^T是世界坐標系下坐標,u = (u_0, u_1, u_2)^T是相機坐標系下坐標,則有仿射變換u = Wt + d,可得\Sigma =W{\Sigma}''W
  • Projective Transformation(透視變換):將相機坐標系下坐標轉換到圖像空間,該轉換不是仿射變換。假設x=(x_0, x_1, x_2)是圖像空間下坐標,則有x = m(u) = (u_0/u_2, u_1/u_2, \left \| (u_0, u_1, u_2)^T \right \|)^T。由于該變換不是放射變換,因此考慮:m(u_k)=x_k+J_{u_k}(u-u_k) = J_{u_k}u + (x_k - J_{u_k} u_k),得到局部放射近似,其中x_k=m(u_k),J_{u_k}=\frac{\partial m}{\partial u}(u_k)。最終可得\Sigma = JW{\Sigma}''W^TJ^T

協方差矩陣具有物理含義,需要滿足半正定條件。考慮協方差矩陣描述了一個標準球體向橢球體的變化過程,對標準球體先放縮S,再旋轉R

因此,縮放可以用三維向量描述,也即協方差矩陣的三個特征值。旋轉其實是三個特征向量,它們兩兩正交且模為1,通過分析可由四維向量描述。

綜上,一個3D Gaussian可由三個縮放系數、四個旋轉系數、中心點位置p和不透明率\alpha表示。除了上述提到的參數外,本文還用SH系數表示顏色。

Optimization with Adaptive Density Control of 3D Gaussians

  • 不透明率\alpha通過sigmoid激活函數映射至0到1之間。
  • 損失函數如下:

Gaussian的優化過程中,本文考慮以下兩種情況:

  • \alpha異常:移除\alpha小于閾值\epsilon_\alpha的高斯。
  • 梯度異常:梯度超過閾值\tau_{pos} = 0.0002時,本文認為梯度異常,考慮存在under-reconstruction或over-reconstruction:
    • under-reconstruction:Gaussians太小了,不能覆蓋必要幾何。本文考慮復制相同大小的Gaussian,新Gaussian放至位置梯度所指方向;
    • over-reconstruction:對于方差太大的Gaussians,本文將其拆分為兩個Gaussians,兩個都縮放\phi=1.6,新Gaussian的位置通過在舊Gaussian中采樣決定。
  • 特殊情況:
    • 漂浮物(floaters)會導致Gaussian密度的異常增加。本文提出,每N=3000?iter,將所有\alpha設置為近似為0的值。在優化后,對于\alpha沒有增大的Gaussian,則根據前述規則去除掉。
    • 對于具有非常大worldspace和相機坐標中具有較大footprint的Gaussian也會去除掉。

Fast Differentiable Rasterizer for Gaussians

提出一種tile-based rasterizer

  • 光柵化:
    • 將屏幕劃分為16 x 16塊,一次性預排序所有primitives,避免針對每個像素排序的開銷
    • 僅保留有99%置信度的Gaussians
    • 用保護帶(guard band)拒絕極端位置的高斯,例如:距離平面太近,或在視錐體之外太遠的高斯;
    • 實例化高斯,并賦予每個高斯一個鍵值,包括視覺空間深度和塊ID
    • 根據鍵值排序高斯。對于每個塊,得到一個根據深度由近到深排序的列表
    • 在光柵化過程中,每個塊使用一個線程去處理,每個線程首先將Gaussians加載到shared memory。對于給定像素點,從前往后遍歷列表,根據\alpha加權求和顏色。當\alpha達到目標飽和值時,該進程停止,得到該像素點的顏色。
  • 梯度回傳:從最后一個點,從后往前遍歷列表,選擇對應的Gaussian反傳梯度。

Implementation, Results and Evaluation

Implementation

Pytorch + 用于光柵化的custom CUDA kernels

Results and Evaluation

Real-World Scenes

Synthetic Bounded Scenes

  • 30K迭代后,每個場景由200-500K Gaussians組成

Ablations

Initialization from SfM

Densification

Unlimited depth complexity of splats with gradients

Anisotropic Covariance?

Limitations

  • 對于缺乏訓練數據的場景,存在失真,Mip-NeRF360也存在:

  • 存在拉長失真(elongated artifacts),比較臟的高斯(splotchy Gaussians),Mip-NeRF360也有

  • 相較于NeRF-based方法,內存開銷大,需要20GB GPU memory

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

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

相關文章

.NET面試題2

1.請解釋一下C#中的委托(Delegate)。 委托是一種類型安全的函數指針,它可以將方法作為參數傳遞或存儲在變量中。通過委托,可以實現方法的回調、事件處理等功能。委托在C#中使用delegate關鍵字進行聲明,可以根據方法簽名…

c語言:用迭代法解決遞歸問題

題目&#xff1a; 解釋&#xff1a;題目的意思就是用迭代法的空間和時間復雜的太高了&#xff0c;需要我們減小空間與時間的復雜度&#xff0c;我就想到了迭代法&#xff0c;思路和代碼如下&#xff1a; #include <stdio.h> //這里是遞歸法轉迭代法 int main() {int x,i…

Rust語言特性探秘:宏的魔力

大家好&#xff01;我是lincyang。 今天我們繼續深入探討Rust語言中的一個有趣而強大的特性——宏&#xff08;Macros&#xff09;。 宏在Rust中扮演著特殊的角色&#xff0c;不僅提高了代碼的靈活性&#xff0c;還增強了代碼的可重用性。接下來&#xff0c;我們會通過具體的…

[ 云計算 | AWS 實踐 ] 基于 Amazon S3 協議搭建個人云存儲服務

本文收錄于【#云計算入門與實踐 - AWS】專欄中&#xff0c;收錄 AWS 入門與實踐相關博文。 本文同步于個人公眾號&#xff1a;【云計算洞察】 更多關于云計算技術內容敬請關注&#xff1a;CSDN【#云計算入門與實踐 - AWS】專欄。 本系列已更新博文&#xff1a; [ 云計算 | …

Redis-Redis緩存高可用集群

1、Redis集群方案比較 哨兵模式 在redis3.0以前的版本要實現集群一般是借助哨兵sentinel工具來監控master節點的狀態&#xff0c;如果master節點異常&#xff0c;則會做主從切換&#xff0c;將某一臺slave作為master&#xff0c;哨兵的配置略微復雜&#xff0c;并且性能和高可…

深信服技術認證“SCSA-S”劃重點:信息收集

為幫助大家更加系統化地學習網絡安全知識&#xff0c;以及更高效地通過深信服安全服務認證工程師考核&#xff0c;深信服特別推出“SCSA-S認證備考秘笈”共十期內容&#xff0c;“考試重點”內容框架&#xff0c;幫助大家快速get重點知識~ 劃重點來啦 深信服安全服務認證工程師…

前端相關免查整合-vue、es、工具類等

知識 工具篇 網頁 取色器 F12 之后&#xff0c; style里面選一個顏色&#xff0c;然后點擊鉛筆&#xff0c;復制值 dayjs 用法 const date dayjs(2021-09-01); const formattedDate dayjs(2021-09-01).format(YYYY-MM-DD); console.log(formattedDate); // 輸出&#…

SEO從業人員提問常用的ChatGPT通用提示詞模板

如何提高網站在搜索引擎中的排名&#xff1f; 如何評估網站的SEO效果和優化潛力&#xff1f; 如何運用關鍵詞研究和競爭對手分析來制定SEO策略&#xff1f; 如何優化網站的內容、結構和元數據來提高SEO效果&#xff1f; 如何運用外部和內部鏈接來提高網站的權威性和排名&am…

OpenCvSharp從入門到實踐-(02)圖像處理的基本操作

目錄 圖像處理的基礎操作 1、讀取圖像 1.1、讀取當前目錄下的圖像 2、顯示圖像 2.1、Cv2.ImShow 用于顯示圖像。 2.2、Cv2.WaitKey方法用于等待用戶按下鍵盤上按鍵的時間。 2.3、Cv2.DestroyAllWindows方法用于銷毀所有正在顯示圖像的窗口。 2.4實例1-顯示圖像 2.4實例…

分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測

分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測 目錄 分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測分類效果基本描述程序設計參考資料 分類效果 基本描述 1.多特…

校園圈子論壇,交友,帖子內短視頻,二手市場,APP小程序H5三端交付,源碼交付,支持二開

校園圈子論壇&#xff0c;交友頻道&#xff0c;商城&#xff0c;二手市場&#xff0c;活動專區&#xff0c;短視頻&#xff0c;從校園生活的方方面面展現出了充滿活力和創造力的鏡頭。這個頻道是一個讓學生們相互交流、結識新朋友的平臺&#xff0c;不僅有交友功能&#xff0c;…

【done+重點】劍指Offer56-I:找出數組中2個只出現1次的整數

力扣&#xff0c;https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/description/ 題目&#xff1a;一個整型數組nums里除兩個數字之外&#xff0c;其他數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。要求時間復雜度是O(n)&#xff0c;空間…

啟動Dubbo項目注冊Zookeeper時提示zookeeper not connected異常原理解析

原創/朱季謙 遇到一個很詭異的問題&#xff0c;我在啟動多個配置相同zookeeper的Dubbo項目時&#xff0c;其他項目都是正常啟動&#xff0c;唯獨有一個項目在啟動過程中&#xff0c;Dubbo注冊zookeeper協議時&#xff0c;竟然出現了這樣的異常提示—— Caused by: java.lang.…

OpenAI再次與Sam Altman談判;ChatGPT Voice正式上線

11月22日&#xff0c;金融時報消息&#xff0c;OpenAI迫于超過700名員工聯名信的壓力&#xff0c;再次啟動了與Sam Altman的談判&#xff0c;希望他回歸董事會。 在Sam確定加入微軟后&#xff0c;OpenAI超700名員工簽署了一封聯名信&#xff0c;要求Sam和Greg Brockman&#x…

【尚硅谷】第06章:隨堂復習與企業真題(面向對象-基礎)

第06章&#xff1a;隨堂復習與企業真題&#xff08;面向對象-基礎&#xff09; 一、隨堂復習 1. &#xff08;了解&#xff09;面向過程 vs 面向對象 不管是面向過程、面向對象&#xff0c;都是程序設計的思路。面向過程&#xff1a;以函數為基本單位&#xff0c;適合解決簡單…

解決ElementUI時間選擇器回顯出現Wed..2013..中國標準時間.

使用餓了么組件 時間日期選擇框回顯到頁面為啥是這樣的&#xff1f; 為什么再時間框中選擇日期&#xff0c;回顯頁面出現了這種英文格式呢&#xff1f;&#xff1f;&#xff1f;&#xff1f; 其實這個問題直接使用elementui的內置屬性就能解決 DateTimePicker 日期時間選擇…

程序員指南六:數據平面開發套件

PORT HOTPLUG FRAMEWORK 端口熱插拔框架為DPDK應用程序提供在運行時附加和分離端口的能力。由于該框架依賴于PMD實現&#xff0c;PMD無法處理的端口超出了該框架的范圍。此外&#xff0c;在從DPDK應用程序分離端口后&#xff0c;該框架不提供從系統中移除設備的方法。對于由物…

微信開發:API接口與ipad協議的深度比較及最佳選擇

微信開發&#xff1a;API接口與ipad協議的深度比較及最佳選擇 在深入探索微信開發的過程中&#xff0c;理解不同API接口和協議的特點以及他們的適用場景是非常重要的。本文將詳細對比幾種主流的微信API接口和協議&#xff0c;包括Web版微信協議、iPad協議、PC微信協議/Mac協議…

opencv-圖像梯度

目標 ? 圖像梯度&#xff0c;圖像邊界等 ? 使用到的函數有&#xff1a;cv2.Sobel()&#xff0c;cv2.Schar()&#xff0c;cv2.Laplacian() 等 原理 梯度簡單來說就是求導。 OpenCV 提供了三種不同的梯度濾波器&#xff0c;或者說高通濾波器&#xff1a;Sobel&#xff0c;Schar…

萬界星空科技QMS質量管理系統介紹

QMS&#xff08;Quality Management System&#xff09;質量管理系統是五大基礎系統之一&#xff0c;在工業企業中被廣泛的應用&#xff0c;在質量策劃、生產過程質量監督、體系審核和文檔管理等業務上發揮著不可替代的作用。 一般制造業工廠現狀&#xff1a;質量成本高&#x…