前言
3D Gaussian Splatting for Real-Time Radiance Field Rendering
https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/
主要研究方法是使用3D高斯光点绘制(3D Gaussian Splatting)方法进行实时光辐射场渲染。该方法结合了3D高斯场表示和实时可微分渲染器,通过优化3D高斯场的属性和密度控制,实现了高质量的光辐射场渲染。同时,该方法还采用了基于瓦片的光斑渲染技术,实现了对多个数据集的实时渲染。通过这种方法,该研究在保持最佳质量的同时,大大提高了场景优化和新视图合成的速度。
项目github地址:
https://github.com/graphdeco-inria/gaussian-splatting
训练3D Gaussian Splatting模型步骤
安装Anaconda
Anaconda是一种数据科学和机器学习的开发环境,它包含了大量的Python包、工具和库,以及可视化界面和集成开发环境。(Anaconda可以方便地管理Python环境和安装第三方软件包,同时也支持多个操作系统和平台)
地址:https://www.anaconda.com/download
安装过程不再赘述
安装Pycharm
地址 https://www.jetbrains.com/pycharm/download/#section=windows
安装过程不再赘述
安装git
地址:https://git-scm.com/
安装过程不再赘述
拉取github项目
项目github地址:https://github.com/graphdeco-inria/gaussian-splatting
注意:submodules/diff-gaussian-rasterization和submodules/simple-knn是有内容的,如果没有看看是否网速有问题,或者通过这个:git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive 进行拉取,或者自己导入。
数据制作
需要场景的各个角度的图片,推荐200张以上。数量过少会导致模型质量不够,数量过多会导致过长的训练时间。为了保持更好的效果,每张照片需保持一致的曝光。 也可以录制视频提取单帧。
#若采用视频录制可采用以下代码转成批量的单帧图片
import cv2
def VideotoPicture():
# 视频地址 创建一个VideoCapture对象,指定读取的视频文件
cap = cv2.VideoCapture(r'E:\aa_video\v1.mp4')
# 通过摄像头的方式
# cap = cv2.VideoCapture(1)
fps = cap.get(cv2.CAP_PROP_FPS) # 获取帧率 每一秒的视频帧数
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帧存储一张图片
if (frame_count % 2 == 0):
img_name += 1
cv2.imwrite(r'E:\aa_video\a\%d.png' % img_name, frame)
print("帧率(每秒视频的帧数):", fps)
# 释放视频资源
cap.release
if __name__ == '__main__':
VideotoPicture() # 视频转图像
在项目中创建data文件夹,下级目录如图所示:
将照片放入input文件夹
获取相机位姿
使用COLMAP获取相机位姿
地址:https://github.com/colmap/colmap/releases/tag/3.8
解压,将colmap添加到环境变量
终端输入:
python convert.py -s data
自动完成相机位姿和点云的建立
查看可视化相机姿势,可以打开 COLMAP.bat,然后选择File->Import model 并选择路径data/sparse/0
模型训练
CUDA搭建
cuda的下载及安装
确定自己应该下载什么版本的cuda,打开nvidia(桌面右键)->选择左下角的系统信息->组件
我下的是CUDA Toolkit 11.8
地址:https://developer.nvidia.com/cuda-toolkit-archive
解压,自定义安装,默认选择即可。
验证是否安装成功:运行cmd,输入nvcc --version 即可查看版本号
cuDNN下载及安装
cuDNN地址:https://developer.nvidia.com/rdp/cudnn-download
不过要注意的是,我们需要注册一个账号,才可以进入到下载界面,可放心注册。
查看适配的 cuDNN:https://developer.nvidia.com/rdp/cudnn-archive
cuDNN配置,先把下载的 cuDNN 解压。
复制到CUDA 的安装目录中,有和 cuDNN 解压缩后的同名文件夹,这里注意,不需要担心,直接复制即可。
添加环境变量(看自己的安装目录)
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
配置完成后,我们可以验证是否配置成功,主要使用CUDA内置的deviceQuery.exe 和bandwidthTest.exe。首先win+R启动cmd,cd到安装目录下的 …\extras\demo_suite,然后分别执行bandwidthTest.exe和deviceQuery.exe(进到目录后需要直接输“bandwidthTest.exe”和“deviceQuery.exe”)
Anaconda Prompt虚拟环境搭建
#查看环境
conda env list
#创建新的环境
conda create -n gs python=3.8
#其中【gs】是环境的名字,【python=3.8】是使用的Python版本
#注意:如果你的CUDA版本是11.8,要选择Python3.8版本,
# 我当时用过CUDA11.8+Python3.7版本后续的一些配置不上,版本不支持。
# 用CUDA11.6版本的话我当时配出现submodules/diff-gaussian-rasterization与submodules/simple-knn无法完成配置
#激活环境
conda activate ps
Pytorch环境配置
地址:https://pytorch.org/get-started/previous-versions/
如果忘记自己电脑的CUDA版本,可在终端中输入nvcc --version 进行查询
根据自己CUDA版本进行选择
pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
#如果出现问题,查查是不是Pyhton的版本不匹配,或者其他的版本冲突
pip install plyfile tqdm
#下面这两步卡了我好久,配置一直出错,用CUDA11.6出错,
#例如这个ERROR: Failed building wheel for diff-gaussian-rasterization
#换成CUDA11.8解决了这个问题,之前的版本一定要卸载干净
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
训练
完成配置后就可以在终端开始训练了
python train.py -s data -m data/output
#如果你的场景是白色背景,可以添加-w选项。这将告诉训练脚本基本背景颜色应该是白色(而不是默认的黑色)
python train.py -s data -m data/output -w
模型可视化
模型的文件夹结构如下
在windows中,模型可视化工具地址:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip
将该文件解压到工程文件夹中即可完成安装
安装完成,在终端输入
.\viewers\bin\SIBR_gaussianViewer_app -m data/output
文章来源:https://www.toymoban.com/news/detail-771393.html
参考:https://www.bilibili.com/read/cv26465887/?spm_id_from=333.1007.0.0文章来源地址https://www.toymoban.com/news/detail-771393.html
到了这里,关于3D Gaussian Splatting for Real-Time Radiance Field Rendering(论文中代码复现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!