3D Gaussian Splatting for Real-Time Radiance Field Rendering(论文中代码复现)


前言

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.bilibili.com/read/cv26465887/?spm_id_from=333.1007.0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值