Bernhard Kerbl*、Georgios Kopanas*、Thomas Leimkühler、George Drettakis(* 表示同等貢獻)
|網頁|全文 |影片 |其他 GRAPHDECO 出版品 | FUNGRAPH 專案頁面 |
| T&T+DB 列圖 (650MB) |預訓練模型 (14 GB) | Windows 檢視器 (60MB) |評估影像 (7 GB) |
該存儲庫包含與論文“3D Gaussian Splatting for Real-Time Radiance Field Rendering”相關的官方作者實現,可以在此處找到。我們進一步提供了用於創建論文中報告的誤差指標的參考圖像,以及最近創建的預訓練模型。
摘要:輻射場方法最近徹底改變了用多張照片或影片捕捉的場景的新穎視圖合成。然而,要實現高視覺品質仍然需要訓練和渲染成本高昂的神經網絡,而最近更快的方法不可避免地會犧牲速度來換取品質。對於無界且完整的場景(而不是孤立的物體)和1080p解析度渲染,目前沒有方法可以達到即時顯示速率。我們引入了三個關鍵要素,使我們能夠在保持有競爭力的訓練時間的同時實現最先進的視覺質量,並且重要的是允許在1080p 分辨率下進行高質量實時(≥ 30 fps)新穎的視圖合成。首先,從相機校準期間產生的稀疏點開始,我們用 3D 高斯表示場景,保留連續體積輻射場的所需屬性以進行場景優化,同時避免在空白空間中進行不必要的計算;其次,我們對 3D 高斯進行交錯優化/密度控制,特別是優化各向異性協方差以實現場景的準確表示;第三,我們開發了一種快速可見性感知渲染演算法,該演算法支援各向異性潑濺,既加速訓練又允許即時渲染。我們在幾個已建立的資料集上展示了最先進的視覺品質和即時渲染。
@Article{kerbl3Dgaussians, author = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{"u}hler, Thomas and Drettakis, George}, title = {3D Gaussian Splatting for Real-Time Radiance Field Rendering}, journal = {ACM Transactions on Graphics}, number = {4}, volume = {42}, month = {July}, year = {2023}, url = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/} }
這項研究由 ERC Advanced 撥款 FUNGRAPH No 788065 資助。作者感謝匿名審查者的寶貴回饋,感謝 P. Hedman 和 A. Tewari 校對早期草稿,感謝 T. Müller、A. Yu 和 S. Fridovich-Keil 協助進行比較。
我們用於維護和更新程式碼的資源有限。然而,自最初版本以來,我們添加了一些新功能,這些功能的靈感來自許多其他研究人員在 3DGS 方面所做的一些出色工作。我們將在我們的資源能力範圍內添加其他功能。
2024 年 10 月更新:我們整合了訓練速度加速,並使其相容於深度正則化、抗鋸齒和曝光補償。我們透過修正錯誤並在頂視圖中新增允許輸入和使用者攝影機視覺化的功能來增強 SIBR 即時檢視器。
2024 年春季更新:Orange Labs 善意地添加了對 VR 觀看的 OpenXR 支援。
Jonathan Stephens 製作了一個精彩的分步教程,用於在您的電腦上設定高斯分佈,以及從影片建立可用資料集的說明。如果下面的說明對您來說太枯燥,請繼續查看此處。
使用者camenduru 非常好心地提供了一個使用此儲存庫來源(狀態:2023 年 8 月!)的 Colab 模板,以便快速輕鬆地存取該方法。請在這裡查看。
此儲存庫包含子模組,因此請使用以下命令查看它
# SSHgit 克隆 [email protected]:graphdeco-inria/gaussian-splatting.git --recursive
或者
# HTTPSgit 克隆 https://github.com/graphdeco-inria/gaussian-splatting --recursive
程式碼庫有 4 個主要元件:
基於 PyTorch 的最佳化器,用於根據 SfM 輸入產生 3D 高斯模型
允許連接並視覺化優化過程的網路檢視器
基於 OpenGL 的即時檢視器,用於即時渲染經過訓練的模型。
協助您將自己的映像轉換為可最佳化的 SfM 資料集的腳本
這些組件對硬體和軟體都有不同的要求。它們已在 Windows 10 和 Ubuntu Linux 22.04 上進行了測試。以下部分提供了設定和運行它們的說明。
優化器在 Python 環境中使用 PyTorch 和 CUDA 擴充來產生經過訓練的模型。
具有運算能力 7.0+ 的 CUDA 就緒 GPU
24 GB VRAM(用於訓練論文評估品質)
請參閱常見問題以了解較小的 VRAM 配置
Conda(建議使用,以便於設定)
用於 PyTorch 擴充功能的 C++ 編譯器(我們使用 Visual Studio 2019 for Windows)
用於 PyTorch 擴充功能的 CUDA SDK 11,在 Visual Studio之後安裝(我們使用11.8,11.6 有已知問題)
C++編譯器和CUDA SDK必須相容
我們預設提供的安裝方法是基於 Conda 套件和環境管理:
SET DISTUTILS_USE_SDK=1 # 僅 Windowsconda env create --fileenvironment.yml conda 活化 gaussian_splatting
請注意,此過程假設您安裝了 CUDA SDK 11 ,而不是12 。有關修改,請參見下文。
提示:下載軟體包並使用 Conda 建立新環境可能需要大量磁碟空間。預設情況下,Conda 將使用主系統硬碟。您可以透過指定不同的套件下載位置和不同磁碟機上的環境來避免這種情況:
conda config --add pkgs_dirs <磁碟機>/conda env create --fileenvironment.yml --prefix <磁碟機>/ /gaussian_splatting conda activate <驅動器>/ /gaussian_splatting
如果您有足夠的磁碟空間,我們建議您使用我們的環境文件來設定與我們相同的培訓環境。如果您想進行修改,請注意主要版本變更可能會影響我們方法的結果。然而,我們的(有限的)實驗表明,程式碼庫在更新的環境(Python 3.8、PyTorch 2.0.0、CUDA 12)中運作得很好。確保建立一個 PyTorch 及其 CUDA 運行時版本相符的環境,並且安裝的 CUDA SDK 與 PyTorch 的 CUDA 版本沒有主要版本差異。
有些使用者在 Windows 上建置子模組時遇到問題( cl.exe: File not found
或類似問題)。請考慮常見問題中解決此問題的方法。
要運行優化器,只需使用
python train.py -s
包含 COLMAP 或 Synthetic NeRF 資料集的來源目錄的路徑。
訓練模型的儲存路徑(預設為output/
)。
COLMAP 影像的替代子目錄(預設為images
)。
新增此標誌以使用 MipNeRF360 樣式的訓練/測試分割進行評估。
指定訓練前載入影像的解析度。如果提供1, 2, 4
或8
,則分別使用原始解析度、1/2、1/4 或 1/8 解析度。對於所有其他值,將寬度重新調整為給定數字,同時保持影像寬高比。如果未設定且輸入影像寬度超過 1.6K 像素,則輸入將自動重新縮放至此目標。
指定放置來源影像資料的位置,預設為cuda
,如果在大型/高解析度資料集上訓練,建議使用cpu
,將減少 VRAM 消耗,但會稍微減慢訓練速度。感謝 HrsPythonix。
新增此標誌以使用白色背景而不是黑色(預設),例如,用於評估 NeRF 合成資料集。
要使用的球諧函數的階數(不大於 3)。預設為3
。
標記為使用 PyTorch 而不是我們的來使 SH 的管道向前和向後計算。
標記以使用 PyTorch 而不是我們的管道來向前和向後計算 3D 協方差。
如果遇到錯誤,請啟用偵錯模式。如果光柵化器失敗,則會建立一個dump
文件,您可以在問題中將其轉發給我們,以便我們可以查看。
調試速度慢。您可以指定一個迭代(從 0 開始),之後上述偵錯將變為活動狀態。
訓練的總迭代次數,預設為30_000
。
啟動 GUI 伺服器的 IP,預設為127.0.0.1
。
GUI 伺服器使用的端口,預設為6009
。
訓練腳本計算測試集上的 L1 和 PSNR 的空間分隔迭代,預設為7000 30000
。
訓練腳本保存高斯模型的以空格分隔的迭代,預設為7000 30000
。
以空格分隔的迭代,用於儲存檢查點以便稍後繼續,並保存在模型目錄中。
儲存的檢查點的路徑以繼續訓練。
標記以省略寫入標準輸出管道的任何文字。
球諧函數具有學習率,預設為0.0025
。
不透明度學習率,預設0.05
。
縮放學習率,預設為0.005
。
旋轉學習率,預設0.001
。
位置學習率從initial
到final
步數(從 0 開始)。預設為30_000
。
初始3D位置學習率,預設為0.00016
。
最終3D位置學習率,預設為0.0000016
。
位置學習率乘數(參見 Plenoxels),預設為0.01
。
緻密化開始的迭代,預設為500
。
緻密化停止的迭代,預設為15_000
。
決定是否應基於 2D 位置梯度對點進行緻密化的限制,預設為0.0002
。
緻密化的頻率,預設為100
(每 100 次迭代)。
重置不透明度的頻率,預設為3_000
。
SSIM對總損失的影響從0到1,預設0.2
。
點必須超過場景範圍的百分比 (0--1) 才能強制緻密,預設為0.01
。
請注意,與 MipNeRF360 類似,我們的目標影像解析度在 1-1.6K 像素範圍內。為了方便起見,可以傳遞任意大小的輸入,如果輸入的寬度超過 1600 像素,則會自動調整大小。我們建議保留此行為,但您可以透過設定-r 1
強制訓練使用更高解析度的影像。
MipNeRF360 場景由此處的論文作者主持。您可以在此處找到我們的 Tanks&Temples 和 Deep Blending 的 SfM 資料集。如果您不提供輸出模型目錄 ( -m
),訓練後的模型將寫入output
目錄內具有隨機唯一名稱的資料夾中。此時,可以使用即時檢視器查看經過訓練的模型(進一步參見下文)。
預設情況下,訓練後的模型使用資料集中的所有可用影像。要在保留測試集進行評估的同時訓練它們,請使用--eval
標誌。這樣,您可以渲染訓練/測試集並產生錯誤指標,如下所示:
python train.py -s--eval # 使用訓練/測試split 進行訓練python render.py -m <訓練模型的路徑> # 產生效果圖pythonmetrics.py -m <訓練模型的路徑> # 計算渲染的誤差指標
如果您想評估我們的預訓練模型,則必須下載對應的來源資料集,並使用附加的--source_path/-s
標誌指示它們在render.py
中的位置。注意:預訓練模型是使用發布程式碼庫建立的。該程式碼庫已被清理並包含錯誤修復,因此您從評估它們中獲得的指標將與論文中的指標不同。
python render.py -m <預訓練模型的路徑> -spythonmetrics.py -m <預訓練模型的路徑>
您要為其建立渲染的訓練模型目錄的路徑。
標記以跳過渲染訓練集。
標記以跳過渲染測試集。
標記以省略寫入標準輸出管道的任何文字。
根據用於訓練的參數,將自動從模型路徑中讀取以下參數。但是,您可以透過在命令列上明確提供它們來覆蓋它們。
包含 COLMAP 或 Synthetic NeRF 資料集的來源目錄的路徑。
COLMAP 影像的替代子目錄(預設為images
)。
新增此標誌以使用 MipNeRF360 樣式的訓練/測試分割進行評估。
在訓練前更改載入影像的解析度。如果提供1, 2, 4
或8
,則分別使用原始解析度、1/2、1/4 或 1/8 解析度。對於所有其他值,將寬度重新調整為給定數字,同時保持影像寬高比。預設為1
。
新增此標誌以使用白色背景而不是黑色(預設),例如,用於評估 NeRF 合成資料集。
標記為使用 PyTorch 計算的 SH(而不是我們的 SH)進行管道渲染。
標記以使用 PyTorch(而不是我們的)計算的 3D 協方差進行管道渲染。
應計算指標的模型路徑的空格分隔清單。
我們進一步提供full_eval.py
腳本。該腳本指定了我們評估中使用的例程,並演示了一些附加參數的使用,例如, --images (-i)
來定義 COLMAP 資料集中的替代圖像目錄。如果您已經下載並提取了所有訓練數據,您可以像這樣運行它:
python full_eval.py -m360-tat <坦克和寺廟文件夾> -db <深度混合文件夾>
在目前版本中,在包含 A6000 的參考機器上,此過程大約需要 7 小時。如果您想對我們的預訓練模型進行全面評估,您可以指定其下載位置並跳過訓練。
python full_eval.py -o <包含預訓練模型的目錄> --skip_training -m360-tat -db <深度混合資料夾>
如果您想計算我們論文的評估圖像的指標,您也可以跳過渲染。在這種情況下,無需提供來源資料集。您可以一次計算多個影像集的指標。
python full_eval.py -m <包含評估圖像的目錄>/garden ... --skip_training --skip_rendering
我們為我們的方法提供了兩種互動式檢視器:遠端檢視器和即時檢視器。我們的檢視解決方案基於 SIBR 框架,該框架由 GRAPHDECO 小組為多個新穎的視圖合成專案開發。
支援 OpenGL 4.5 的 GPU 和驅動程式(或最新的 MESA 軟體)
建議使用 4 GB 顯存
具有運算能力 7.0+ 的 CUDA 就緒 GPU(僅適用於即時檢視器)
Visual Studio 或 g++,而不是 Clang (我們使用 Visual Studio 2019 for Windows)
CUDA SDK 11,在Visual Studio之後安裝(我們使用11.8)
CMake(最新版本,我們使用3.24)
7zip(僅在 Windows 上)
我們在這裡提供適用於 Windows 的預先建置二進位檔案。我們建議在 Windows 上使用它們以實現高效的設置,因為 SIBR 的建置涉及多個必須即時下載和編譯的外部相依性。
如果您使用子模組進行克隆(例如,使用--recursive
),則檢視器的原始程式碼可在SIBR_viewers
中找到。網路檢視器在基於影像的渲染應用程式的 SIBR 框架內運作。
CMake 應該照顧你的依賴關係。
cd SIBR_viewers cmake -Bbuild .cmake --build build --target install --config RelWithDebInfo
您可以指定不同的配置,例如,如果您在開發過程中需要更多控制,則可以Debug
。
在運行專案設定之前,您需要安裝一些依賴項。
# 相依性sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86-dev libxreew-devm-g:g3-dev libxxf86-dev cmake -Bbuild 。 -DCMAKE_BUILD_TYPE=Release # 新增 -G Ninja 建置 fastcmake --build build -j24 --target install
與 Focal Fossa 的向後相容性尚未經過充分測試,但使用 CMake 建置 SIBR 在呼叫後應該仍然可以工作
git checkout fossa_compatibility git checkout fossa_compatibility
SIBR 介面提供了多種場景導航方法。預設情況下,您將從 FPS 導航器開始,您可以使用W, A, S, D, Q, E
控制攝影機平移,使用I, K, J, L, U, O
控制旋轉。或者,您可能想要使用軌跡球式導航器(從浮動選單中選擇)。您也可以使用Snap to
」按鈕從資料集中捕捉到攝影機,或使用Snap to closest
尋找最近的攝影機。浮動選單還允許您更改導航速度。您可以使用Scaling Modifier
來控制顯示的高斯的大小,或顯示初始點雲。
解壓縮或安裝檢視器後,您可以在
中執行已編譯的SIBR_remoteGaussian_app[_config]
應用程序,例如:
.//bin/SIBR_remoteGaussian_app
網路檢視器可讓您連接到同一台或不同機器上正在執行的訓練進程。如果您在同一台機器和作業系統上進行訓練,則不需要命令列參數:優化器將訓練資料的位置傳達給網路檢視器。預設情況下,優化器和網路檢視器將嘗試在連接埠6009上的localhost上建立連線。您可以透過向優化器和網路檢視器提供相符的--ip
和--port
參數來變更此行為。如果由於某種原因,網路檢視器無法存取優化器用於查找訓練資料的路徑(例如,由於它們在不同的(虛擬)機器上運行),您可以使用-s
.
用於覆蓋模型到來源資料集的路徑的參數。
用於連接正在執行的訓練腳本的 IP。
用於連接到正在執行的訓練腳本的連接埠。
採用兩個空格分隔的數字來定義網路渲染發生的分辨率,預設寬度為1200
。請注意,要強制執行與輸入影像不同的方面,您還需要--force-aspect-ratio
。
用於載入要在每個攝影機的頂視圖中顯示的來源資料集影像的標記。
解壓縮或安裝檢視器後,您可以在
中執行已編譯的SIBR_gaussianViewer_app[_config]
應用程序,例如:
.//bin/SIBR_gaussianViewer_app -m <訓練模型的路徑>
提供指向經過訓練的模型目錄的-m
參數就足夠了。或者,您可以使用-s
指定訓練輸入資料的覆蓋位置。若要使用自動選擇的分辨率以外的特定分辨率,請指定--rendering-size
。如果您想要精確的解析度且不介意影像失真,請將其與--force-aspect-ratio
結合使用。
若要解鎖全幀速率,請在您的電腦和應用程式中停用垂直同步(選單 → 顯示)。在多 GPU 系統(例如筆記型電腦)中,您的 OpenGL/顯示 GPU 應與 CUDA GPU 相同(例如,透過在 Windows 上設定應用程式的 GPU 首選項,請參閱下文)以獲得最佳效能。除了初始點雲和圖塊之外,您還可以選擇從浮動選單將高斯函數渲染為橢球體來視覺化高斯函數。 SIBR 還有許多其他功能,請參閱文件以了解有關檢視器、導覽選項等的更多詳細資訊。請注意,啟用頂視圖會減慢渲染速度。即時檢視器還使用稍微更激進的快速剔除,可以在浮動選單中切換。如果您遇到可以透過關閉快速剔除來解決的問題,請告訴我們。
我們的 COLMAP 載入器期望來源路徑位置具有以下資料集結構:
|---images | |--- | |--- | |---... |---sparse |---0 |---cameras.bin |---images.bin |---points3D.bin
對於光柵化,相機模型必須是 SIMPLE_PINHOLE 或 PINHOLE 相機。我們提供了一個轉換器腳本convert.py
,用於從輸入影像中提取未失真的影像和SfM資訊。或者,您可以使用 ImageMagick 調整未扭曲影像的大小。這種重新縮放與MipNeRF360類似,即它在對應的資料夾中建立原始解析度的1/2、1/4和1/8的映像。要使用它們,請先安裝最新版本的 COLMAP(最好是由 CUDA 驅動)和 ImageMagick。將要使用的影像放在目錄
中。
|---input |--- |--- |---...
如果您的系統路徑上有 COLMAP 和 ImageMagick,您只需執行
python Convert.py -s[--resize] #如果不調整大小,則不需要ImageMagick
或者,您可以使用可選參數--colmap_executable
和--magick_executable
指向各自的路徑。請注意,在 Windows 上,可執行檔應指向負責設定執行環境的 COLMAP .bat
檔案。完成後,
將包含預期的 COLMAP 資料集結構,以及未扭曲、調整大小的輸入影像,此外還有原始影像和目錄中的一些臨時(扭曲)資料distorted
。
如果您有自己的沒有不失真的 COLMAP 資料集(例如,使用OPENCV
相機),您可以嘗試只執行腳本的最後部分:將影像放入input
中,將 COLMAP 資訊放入子目錄distorted
中:
|---input | |--- | |--- | |---... |---distorted |---database.db |---sparse |---0 |---...
然後運行
python Convert.py -s--skip_matching [--resize] #如果不調整大小,則不需要ImageMagick
標記以避免在 COLMAP 中使用 GPU。
指示 COLMAP 資訊可用於影像的標誌。
輸入的位置。
早期配對步驟使用哪種相機模型,預設為OPENCV
。
用於建立輸入影像的調整大小版本的標誌。
COLMAP 執行檔的路徑(Windows 上為.bat
)。
ImageMagick 可執行檔的路徑。
我們將 Taming-3dgs 1中的直接替代品與 fused ssim 整合到原始程式碼庫中,以加快訓練時間。安裝後,加速光柵器可提供--optimizer_type default
和 a來加速訓練時間--optimizer_type sparse_adam
加速訓練時間。
為了獲得更快的訓練時間,您必須先將加速光柵器安裝到您的環境中:
pip uninstall diff-gaussian-rasterization -ycd 子模組/diff-gaussian-rasterization rm -r 構建 git checkout 3dgs_accel 點安裝。
然後,您可以在執行train.py
時新增以下參數以使用稀疏 adam 優化器:
--optimizer_type稀疏亞當
請注意,此自訂光柵器的行為與原始版本不同,有關訓練時間的更多詳細信息,請參閱訓練時間統計資料。
1. 馬利克和戈埃爾等人。 「馴服 3DGS:利用有限資源實現高品質輻射場」。 SIGGRAPH Asia 2024 會議論文,2024 年,https://doi.org/10.1145/3680528.3687694,github
為了獲得更好的重建場景,我們在每個輸入影像的最佳化過程中使用深度圖作為先驗。它最適用於無紋理的部分,例如道路,並且可以去除漂浮物。有幾篇論文使用了類似的想法來改進 3DGS 的各個方面; (例如 DepthRegularizedGS、SparseGS、DNGaussian)。我們整合的深度正則化是在我們的分層 3DGS 論文中使用的,但應用於原始 3DGS;對於某些場景(例如 DeepBlending 場景),它顯著提高了品質;對於其他人來說,它要么產生很小的影響,甚至可能更糟。有關顯示潛在收益和品質統計資料的範例結果,請參閱此處:深度正規化統計資料。
在合成資料集上進行訓練時,可以產生深度圖,並且不需要進一步處理即可在我們的方法中使用。
對於現實世界的資料集,應為每個輸入影像產生深度圖,要產生它們,請執行以下操作:
克隆深度任意 v2:
git clone https://github.com/DepthAnything/Depth-Anything-V2.git
從 Depth-Anything-V2-Large 下載權重並將其放置在Depth-Anything-V2/checkpoints/
下
生成深度圖:
python Depth-Anything-V2/run.py --encoder vitl --pred-only --grayscale --img-path--outdir
使用以下命令產生depth_params.json
檔案:
python utils/make_depth_scale.py --base_dir--depths_dir
如果要使用深度正則化-d
則應在訓練時設定新參數。
為了補償不同輸入影像中的曝光變化,我們優化每個影像的仿射變換,就像分層 3dgs 中一樣。
這可以大大改善「野外」捕捉的重建結果,例如,當相機的曝光設定不固定時使用智慧型手機。有關顯示潛在效益和品質統計資料的範例結果,請參閱此處:曝光補償統計資料。
添加以下參數以啟用它:
--exposure_lr_init 0.001 --exposure_lr_final 0.0001 --exposure_lr_delay_steps 5000 --exposure_lr_delay_mult 0.001 --train_test_exp
同樣,其他優秀論文也使用了類似的想法,例如 NeRF-W、URF。
我們在程式碼庫中新增了 Mip Splatting 的 EWA 過濾器,以消除混疊。預設情況下它是禁用的,但您可以在使用train.py
對場景進行訓練或使用render.py
進行渲染時通過添加--antialiasing
來啟用它。可以在 SIBR 檢視器中切換抗鋸齒功能,預設會停用它,但在查看使用--antialiasing
訓練的場景時應啟用它。 該場景是使用--antialiasing
進行訓練的。
Views > Top view
Top view
使用對應的輸入攝影機和Point view
使用者攝影機在另一個視圖中渲染 SfM 點雲。例如,這可以視覺化觀察者與輸入攝影機的距離。
它是一個 3D 視圖,因此使用者可以像在Point view
中一樣在其中導航(可用模式:FPS、軌跡球、軌道)。
可以使用選項來自訂此視圖,可以停用/啟用網格,並且可以修改它們的比例。
一個有用的附加功能是移動到輸入影像的位置,並逐漸淡出到該位置的 SfM 點視圖(例如,驗證相機對準)。輸入攝影機的視圖可以顯示在Top view
中(請注意,必須在命令列中設定--images-path
)。透過點擊Top view settings > Cameras > Snap to closest
.OpenXR 支持,可以將Top view
攝影機捕捉到點Point view
中距用戶攝影機最近的輸入攝影機
gaussian_code_release_openxr
分支支援 OpenXR 在該分支中,您可以在此處找到 VR 支援的文檔。
我在哪裡取得資料集,例如full_eval.py
中引用的資料集? MipNeRF360資料集由專案網站上原始論文的作者提供。請注意,其中兩個資料集無法公開分享,需要您直接諮詢作者。對於 Tanks&Temples 和 Deep Blending,請使用頁面頂部提供的下載連結。或者,您可以從 HuggingFace 存取克隆資料(狀態:2023 年 8 月!)
如何將其用於更大的數據集,例如城區?目前的方法不是為這些而設計的,但如果有足夠的內存,它應該可行。然而,該方法在多尺度細節場景(極端特寫,與遠距離鏡頭混合)中可能會遇到困難。例如,在駕駛資料集(汽車靠近,建築物遠離)通常就是這種情況。對於此類場景,您可以降低--position_lr_init
、 --position_lr_final
和--scaling_lr
(x0.3, x0.1, ...)。場景越廣泛,這些值應該越低。下面,我們使用預設學習率(左)和--position_lr_init 0.000016 --scaling_lr 0.001"
(右)。
我使用的是 Windows,但無法建立子模組,我該怎麼辦?請考慮按照此處精彩影片教學中的步驟進行操作,希望它們會對您有所幫助。步驟完成的順序很重要!或者,考慮使用連結的 Colab 模板。
它仍然不起作用。它說了一些關於cl.exe
的事情。我該怎麼辦?使用者 Henry Pearce 找到了一個解決方法。您可以嘗試將 Visual Studio 路徑新增至環境變數(您的版本號碼可能不同); C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.29.30133binHostx64x64
然後確保啟動新的 conda 提示符號並 cd 到您的儲存庫位置並嘗試此操作;
conda activate gaussian_splatting cd/gaussian-splatting pip install submodulesdiff-gaussian-rasterization pip install submodulessimple-knn
我使用的是 macOS/Puppy Linux/Greenhat,但無法構建,我該怎麼辦?抱歉,我們無法為本自述文件中列出的平台之外的平台提供支援。考慮使用連結的 Colab 模板。
我沒有 24 GB 的 VRAM 用於訓練,我該怎麼辦? VRAM 消耗由正在優化的點的數量決定,隨著時間的推移而增加。如果您只想訓練 7k 次迭代,則需要的次數會少得多。要執行完整的訓練例程並避免記憶體不足,您可以增加--densify_grad_threshold
、 --densification_interval
或減少--densify_until_iter
的值。但請注意,這會影響結果的品質。也可以嘗試將--test_iterations
設為-1
以避免測試期間出現記憶體峰值。如果--densify_grad_threshold
非常高,則不應發生緻密化,並且如果場景本身載入成功,則訓練應完成。
24 GB VRAM 用於參考品質訓練仍然很多!難道我們不能用更少的錢做到這一點嗎?是的,很有可能。透過我們的ca