前言
3D Gaussian Splatting for Real-Time Radiance Field Rendering
https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/
主要研究方法是使用3D高斯光點(diǎn)繪制(3D Gaussian Splatting)方法進(jìn)行實(shí)時(shí)光輻射場(chǎng)渲染。該方法結(jié)合了3D高斯場(chǎng)表示和實(shí)時(shí)可微分渲染器,通過(guò)優(yōu)化3D高斯場(chǎng)的屬性和密度控制,實(shí)現(xiàn)了高質(zhì)量的光輻射場(chǎng)渲染。同時(shí),該方法還采用了基于瓦片的光斑渲染技術(shù),實(shí)現(xiàn)了對(duì)多個(gè)數(shù)據(jù)集的實(shí)時(shí)渲染。通過(guò)這種方法,該研究在保持最佳質(zhì)量的同時(shí),大大提高了場(chǎng)景優(yōu)化和新視圖合成的速度。
項(xiàng)目github地址:
https://github.com/graphdeco-inria/gaussian-splatting
訓(xùn)練3D Gaussian Splatting模型步驟
安裝Anaconda
Anaconda是一種數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的開發(fā)環(huán)境,它包含了大量的Python包、工具和庫(kù),以及可視化界面和集成開發(fā)環(huán)境。(Anaconda可以方便地管理Python環(huán)境和安裝第三方軟件包,同時(shí)也支持多個(gè)操作系統(tǒng)和平臺(tái))
地址:https://www.anaconda.com/download
安裝過(guò)程不再贅述
安裝Pycharm
地址 https://www.jetbrains.com/pycharm/download/#section=windows
安裝過(guò)程不再贅述
安裝git
地址:https://git-scm.com/
安裝過(guò)程不再贅述
拉取github項(xiàng)目
項(xiàng)目github地址:https://github.com/graphdeco-inria/gaussian-splatting
注意:submodules/diff-gaussian-rasterization和submodules/simple-knn是有內(nèi)容的,如果沒(méi)有看看是否網(wǎng)速有問(wèn)題,或者通過(guò)這個(gè):git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive 進(jìn)行拉取,或者自己導(dǎo)入。
數(shù)據(jù)制作
需要場(chǎng)景的各個(gè)角度的圖片,推薦200張以上。數(shù)量過(guò)少會(huì)導(dǎo)致模型質(zhì)量不夠,數(shù)量過(guò)多會(huì)導(dǎo)致過(guò)長(zhǎng)的訓(xùn)練時(shí)間。為了保持更好的效果,每張照片需保持一致的曝光。 也可以錄制視頻提取單幀。
#若采用視頻錄制可采用以下代碼轉(zhuǎn)成批量的單幀圖片
import cv2
def VideotoPicture():
# 視頻地址 創(chuàng)建一個(gè)VideoCapture對(duì)象,指定讀取的視頻文件
cap = cv2.VideoCapture(r'E:\aa_video\v1.mp4')
# 通過(guò)攝像頭的方式
# cap = cv2.VideoCapture(1)
fps = cap.get(cv2.CAP_PROP_FPS) # 獲取幀率 每一秒的視頻幀數(shù)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 獲取寬度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 獲取高度
# 判斷視頻是否讀取成功 成功返回True 失敗返回False
sucess = cap.isOpened()
frame_count = 0
# 視頻得到的圖片名字img_name
img_name = 0
while sucess:
frame_count += 1
# 讀取視頻每一幀圖像
sucess, frame = cap.read()
# TODO 每隔2幀存儲(chǔ)一張圖片
if (frame_count % 2 == 0):
img_name += 1
cv2.imwrite(r'E:\aa_video\a\%d.png' % img_name, frame)
print("幀率(每秒視頻的幀數(shù)):", fps)
# 釋放視頻資源
cap.release
if __name__ == '__main__':
VideotoPicture() # 視頻轉(zhuǎn)圖像
在項(xiàng)目中創(chuàng)建data文件夾,下級(jí)目錄如圖所示:
將照片放入input文件夾
獲取相機(jī)位姿
使用COLMAP獲取相機(jī)位姿
地址:https://github.com/colmap/colmap/releases/tag/3.8
解壓,將colmap添加到環(huán)境變量
終端輸入:
python convert.py -s data
自動(dòng)完成相機(jī)位姿和點(diǎn)云的建立
查看可視化相機(jī)姿勢(shì),可以打開 COLMAP.bat,然后選擇File->Import model 并選擇路徑data/sparse/0
模型訓(xùn)練
CUDA搭建
cuda的下載及安裝
確定自己應(yīng)該下載什么版本的cuda,打開nvidia(桌面右鍵)->選擇左下角的系統(tǒng)信息->組件
我下的是CUDA Toolkit 11.8
地址:https://developer.nvidia.com/cuda-toolkit-archive
解壓,自定義安裝,默認(rèn)選擇即可。
驗(yàn)證是否安裝成功:運(yùn)行cmd,輸入nvcc --version 即可查看版本號(hào)
cuDNN下載及安裝
cuDNN地址:https://developer.nvidia.com/rdp/cudnn-download
不過(guò)要注意的是,我們需要注冊(cè)一個(gè)賬號(hào),才可以進(jìn)入到下載界面,可放心注冊(cè)。
查看適配的 cuDNN:https://developer.nvidia.com/rdp/cudnn-archive
cuDNN配置,先把下載的 cuDNN 解壓。
復(fù)制到CUDA 的安裝目錄中,有和 cuDNN 解壓縮后的同名文件夾,這里注意,不需要擔(dān)心,直接復(fù)制即可。
添加環(huán)境變量(看自己的安裝目錄)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp
配置完成后,我們可以驗(yàn)證是否配置成功,主要使用CUDA內(nèi)置的deviceQuery.exe 和bandwidthTest.exe。首先win+R啟動(dòng)cmd,cd到安裝目錄下的 …\extras\demo_suite,然后分別執(zhí)行bandwidthTest.exe和deviceQuery.exe(進(jìn)到目錄后需要直接輸“bandwidthTest.exe”和“deviceQuery.exe”)
Anaconda Prompt虛擬環(huán)境搭建
#查看環(huán)境
conda env list
#創(chuàng)建新的環(huán)境
conda create -n gs python=3.8
#其中【gs】是環(huán)境的名字,【python=3.8】是使用的Python版本
#注意:如果你的CUDA版本是11.8,要選擇Python3.8版本,
# 我當(dāng)時(shí)用過(guò)CUDA11.8+Python3.7版本后續(xù)的一些配置不上,版本不支持。
# 用CUDA11.6版本的話我當(dāng)時(shí)配出現(xiàn)submodules/diff-gaussian-rasterization與submodules/simple-knn無(wú)法完成配置
#激活環(huán)境
conda activate ps
Pytorch環(huán)境配置
地址:https://pytorch.org/get-started/previous-versions/
如果忘記自己電腦的CUDA版本,可在終端中輸入nvcc --version 進(jìn)行查詢
根據(jù)自己CUDA版本進(jìn)行選擇
pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
#如果出現(xiàn)問(wèn)題,查查是不是Pyhton的版本不匹配,或者其他的版本沖突
pip install plyfile tqdm
#下面這兩步卡了我好久,配置一直出錯(cuò),用CUDA11.6出錯(cuò),
#例如這個(gè)ERROR: Failed building wheel for diff-gaussian-rasterization
#換成CUDA11.8解決了這個(gè)問(wèn)題,之前的版本一定要卸載干凈
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
訓(xùn)練
完成配置后就可以在終端開始訓(xùn)練了
python train.py -s data -m data/output
#如果你的場(chǎng)景是白色背景,可以添加-w選項(xiàng)。這將告訴訓(xùn)練腳本基本背景顏色應(yīng)該是白色(而不是默認(rèn)的黑色)
python train.py -s data -m data/output -w
模型可視化
模型的文件夾結(jié)構(gòu)如下
在windows中,模型可視化工具地址:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip
將該文件解壓到工程文件夾中即可完成安裝
安裝完成,在終端輸入
.\viewers\bin\SIBR_gaussianViewer_app -m data/output
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-771393.html
參考:https://www.bilibili.com/read/cv26465887/?spm_id_from=333.1007.0.0文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-771393.html
到了這里,關(guān)于3D Gaussian Splatting for Real-Time Radiance Field Rendering(論文中代碼復(fù)現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!