3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程

这篇具有很好参考价值的文章主要介绍了3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目网址

graphdeco-inria/gaussian-splatting: Original reference implementation of “3D Gaussian Splatting for Real-Time Radiance Field Rendering” (github.com)

第一次在自己电脑上配环境(MX350显卡)

环境配置

以下是最初电脑所安装的内容:

Anaconda3

2022.10-Windows-x86_64

CUDA

电脑只支持11.6,所以装的是11.6版本。

虚拟环境配置出错记录

使用git去克隆repository

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive

尽管挂了梯子,但是还是需要多次刷新才能成功克隆,不然会始终报错“网络重置”

创建虚拟环境

在项目文件夹使用conda指令,从.yml文件中创建虚拟环境

SET DISTUTILS_USE_SDK=1 # Windows only
conda env create --file environment.yml

这时可以成功安装以上所有包,并且创建虚拟环境,但是会在安装以下两个模块的时候报错,最开始一直以为是pip版本问题,在pip上花了很长时间都没有解决。

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

submodules无法安装

后来仔细研究报错内容,发现是无法打开CUDA文件夹中nvcc这个可执行文件,所以在CUDA上下功夫,这个时候注意到read me中有个软件要求:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

上面提到CUDA11.6版本存在issue,所以我把CUDA11.6版本删了干净,重新装了CUDA11.8

这个时候再去执行创建虚拟环境指令,还是会出错,不过这次不报错nvcc可执行文件找不到,而是这两个模块依赖的CUDA相关文件根本找不到。这个时候我陷入麻烦,尝试单独去装这两个模块。

read me文件中其实已经给出了一个解决方法,就是在虚拟环境中使用pip指令手动安装这两个模块:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

按照这个方式,在anaconda promote中进入虚拟环境,运行pip,等待了好长时间,终于看到successfully!

activate gaussian_splatting #事实证明在promote中进虚拟环境不需要再敲conda
cd <dir_to_repo>/gaussian-splatting
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn

但是这个时候整个repo已经被我搞得面目全非,而且我的虚拟环境gaussian_splatting经过了大量的报错,有些东西我感觉安装的不太对,所以把虚拟环境删掉,重新克隆repo,打算重头再试一次。

conda env list #这个用来查看以创建过的虚拟环境
conda env remove --name gaussian_splatting

虚拟环境无法创建

这次重新克隆repo之后,在创建虚拟环境这一步就卡住了,它提示在那两个模块中有文件出错,不能创建虚拟环境。出错文件内容和CUDA版本有问题。这下我百思不得其解,因为从11.6转到11.8才正确安装两个模块,现在又因为CUDA版本而无法创建虚拟环境。在这里卡了好久。

于是我暂时停下来,开始阅读论文,同时也看一些网上资料。

改用全局变量

这个时候我阅读到了一位b站博主的分形噪波的文章3D Gaussian Splatting入门指南 - 哔哩哔哩 (bilibili.com),他提到的方法没有创建虚拟环境,而是直接在电脑上用已有的base环境去跑。
3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉
3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

这样看来可以省略很多麻烦。我按照它的方式,在base环境安装pytorch,并且装上了所需的几个库。

在repo文件夹下直接创建data文件夹:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

并且在github上直接把论文作者拍摄的图片当作测试数据下载下来:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

这个时候会得到一个两个文件夹的数据,分别是tandt和db,以下是两个文件夹内容:

📂 data
    ┣ 📂 db
    ┃ ┣ 📂 drjohnson
    ┃ ┃ ┣ 📂 images
    ┃ ┃ ┣ 📂 sparse
    ┃ ┣ 📂 playroom
    ┃ ┃ ┣ 📂 images
    ┃ ┃ ┣ 📂 sparse
    ┣ 📂 tandt
    ┃ ┣ 📂 train
    ┃ ┃ ┣ 📂 images
    ┃ ┃ ┣ 📂 sparse
    ┃ ┣ 📂 truck
    ┃ ┃ ┣ 📂 images
    ┃ ┃ ┣ 📂 sparse

然后执行训练文件。

python train.py -s data/tandt/train

GPU剩余内存不够

接下来遇到这样的报错:

D:/Monster_Di/Desktop/Project/PyProj/gaussian-splatting>python train.py -s data/tandt/train
Optimizing
Output folder: ./output/debbe6b4-6 [04/11 23:52:54]
Reading camera 301/301 [04/11 23:52:59]
Converting point3d.bin to .ply, will happen only the first time you open the scene. [04/11 23:52:59]
Loading Training Cameras [04/11 23:53:02]
Traceback (most recent call last):
  File "D:\Monster_Di\Desktop\Project\PyProj\gaussian-splatting\train.py", line 219, in <module>
    training(lp.extract(args), op.extract(args), pp.extract(args), args.test_iterations, args.save_iterations, args.checkpoint_iterations, args.start_checkpoint, args.debug_from)
  File "D:\Monster_Di\Desktop\Project\PyProj\gaussian-splatting\train.py", line 35, in training
    scene = Scene(dataset, gaussians)
  File "D:\Monster_Di\Desktop\Project\PyProj\gaussian-splatting\scene\__init__.py", line 73, in __init__
    self.train_cameras[resolution_scale] = cameraList_from_camInfos(scene_info.train_cameras, resolution_scale, args)
  File "D:\Monster_Di\Desktop\Project\PyProj\gaussian-splatting\utils\camera_utils.py", line 58, in cameraList_from_camInfos
    camera_list.append(loadCam(args, id, c, resolution_scale))
  File "D:\Monster_Di\Desktop\Project\PyProj\gaussian-splatting\utils\camera_utils.py", line 49, in loadCam
    return Camera(colmap_id=cam_info.uid, R=cam_info.R, T=cam_info.T,
  File "D:\Monster_Di\Desktop\Project\PyProj\gaussian-splatting\scene\cameras.py", line 39, in __init__
    self.original_image = image.clamp(0.0, 1.0).to(self.data_device)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB. GPU 0 has a total capacty of 2.00 GiB of which 0 bytes is free. Of the allocated memory 1.54 GiB is allocated by PyTorch, and 148.62 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

卡在这里让我有点不知所措,GPU运行不了是硬伤,而且已经到了周末,项目还没能跑出来让我非常焦虑。这个时候我记得舍友新买的电脑的显卡是RTX4060,就想着借用一下试试。

改用另一台电脑(RTX 4060)

舍友平时忙着考研,一直没用电脑,所以这台新电脑非常干净。接手之后我很快就着手搭建环境。

环境配置

Git

直接在官网上下载最新版

Anaconda3

这里的anaconda也用的2022.10这个版本。

Visual Studio 2019

因为每次安装CUDA的时候会提示有关VS的某些版本是否配置,所以我留了个心眼,在安装CUDA之前就按照read me里面的要求安装了VS2019。并且安装了python和C++桌面开发(主要是有cmake)两个组件。

CUDA

直接在官网上下载11.8版本,并且安装时参照那篇CSDN博客上说*“Visual Studio Intergration这个选项不要勾选,否则会报错。”*,所以唯独没有勾选这个选项,为后来一处错误埋下伏笔。

克隆项目、创建虚拟环境、运行代码

这次基本没有出多少问题,而且在之前一直没有搞明白的虚拟环境报错问题这次也没有出现(现在想来,我估计是因为我的电脑最高允许的CUDA版本是11.6,所以11.8版本根本无法使用

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

训练太慢

在花费半天时间重整环境后,我终于跑起来train.py这个文件,最开始选择db中drjohnson这一组图片作为训练对象。在训练进度4000到5000这个区间,训练速度非常慢,等待了三个小时后,每秒只能以个位数的速度去训练:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

想了很久,因为我看到db文件夹内的图片是在房间里,而tandt文件夹内的图片是针对某个物体,所以我这次改用tandt中的train来作为训练对象。ctrl+Backspace强制中断程序,改用另一个路径。这次只用了三十分钟左右就完成训练:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

训练结果保存在了项目目录里output这个文件夹中。文件格式是这样的:

┣ 📂 output
    ┃ ┣ 📜 一串乱码
        ┃ ┣ 📜 cameras.json
        ┃ ┣ 📜 cfg_args
        ┃ ┗ 📜 input.ply
        ┃ ┣ 📂 point_cloud
            ┃ ┃ ┣ 📂 iteration_7000
                ┃ ┃ ┃ ┗ 📜 point_cloud.ply
            ┃ ┃ ┣ 📂 iteration_30000
                ┃ ┃ ┃ ┗ 📜 point_cloud.ply 

结果可视化过程

read me中给了一个交互式查看器:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

按照要求,我进入repo中的SIBR_vierers这个文件夹,用cmake指令来构建项目。

CMake版本问题和环境变量

这时先出现报错,说是没有cmake环境,但我已经安装了VS2019以及C++桌面开发组件,于是从VS的promote中运行cmake指令。这时报错cmake版本必须在3.22以上,VS2019所带的cmake是3.20。

于是我在官网上下载cmake3.28版本的zip文件,解压后把bin文件夹环境变量添加到PATH中,过了好一会3.28版本才被检测到。

这个时候在repo中运行构建指令:

cd SIBR_viewers
cmake -Bbuild .
cmake --build build --target install --config RelWithDebInfo

主要还是跟CUDA相关,大概内容如下所示:

-- ****************************************************************
-- Adding dataset_tools project
-- BUILD_IBR_DATASET_TOOLS is OFF
-- Adding ulr project
-- BUILD_IBR_ULR is OFF
-- Adding basic project
-- BUILD_IBR_BASIC is ON
-- Adding gaussianviewer project
-- BUILD_IBR_GAUSSIANVIEWER is ON
-- Library CudaRasterizer already available, skipping.
CMake Error at D:/Diyeye/cmake-3.28.0-rc3-windows-x86_64/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:529 (message):
  No CUDA toolset found.
Call Stack (most recent call first):
  D:/Diyeye/cmake-3.28.0-rc3-windows-x86_64/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  D:/Diyeye/cmake-3.28.0-rc3-windows-x86_64/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:53 (__determine_compiler_id_test)
  D:/Diyeye/cmake-3.28.0-rc3-windows-x86_64/cmake-3.28/Modules/CMakeDetermineCUDACompiler.cmake:135 (CMAKE_DETERMINE_COMPILER_ID)
extlibs/CudaRasterizer/CudaRasterizer/CMakeLists.txt:14 (project)
-- Configuring incomplete, errors occurred!

意思是说cmake无法找到CUDA工具集,但我实在不明白,明明安装好CUDA并且添加了环境变量,怎么会在CUDA这里出现问题。这个时候ChatGPT提到了一点引起我注意:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉
3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉

Visual Studio 2019中没有CUDA组件,我当时在安装CUDA时刚好按照CSDN博客的建议没有勾选Visual Studio Intergration。这下我重新打开CUDA的setup,仅勾选Visual Studio Intergration安装,并且再次运行cmake指令。这次没有再报错。VS2019成功帮我创建了交互式查看器SIBR_viewers这个cmake项目。

这期间没有排出这个问题,还走了弯路,去VS2019中用SIBR_viewers中的CMakeList.txt文件去创建cmake项目,其实是多此一举,因为命令行运行cmake指令完全可以创建项目的

成功可视化

创建好了项目,我已经非常紧张了,这一路上一直错误不断,终于走到了显示结果的最后一步。在项目命令行输入以下指令后,viewers打开,训练的3D结果终于可以查看了!

./< SIBR install dir > /bin/SIBR_gaussianViewer_app -m <path to trained model>

这里多一嘴,SIBR_gaussianViewer_app[_config]后面要带上自己的cmake环境配置,比如我的就是rwdi(RelWithDebInfo)

./SIBR_viewers/install/bin/SIBR_gaussianViewer_app_rwdi -m output/<train完的一串乱码>

接下来就能看到结果了:

3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉
3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程,3d,pytorch,计算机视觉文章来源地址https://www.toymoban.com/news/detail-752266.html

到了这里,关于3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3DGS 其一:3D Gaussian Splatting for Real-Time Radiance Field Rendering

    Reference: 深蓝学院:NeRF基础与常见算法解析 GitHub: gaussian-splatting 原文官网 A Survey on 3D Gaussian Splatting 开始弃用NeRF?为什么Gaussian Splatting在自动驾驶场景如此受欢迎? 相关文章: NeRF 其一:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis NeRF 其二:Mip-NeRF NeRF 其三:In

    2024年01月18日
    浏览(63)
  • 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高斯场的属性和密度控制,实现了高质

    2024年02月03日
    浏览(31)
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering论文中代码复现及排错过程

    graphdeco-inria/gaussian-splatting: Original reference implementation of “3D Gaussian Splatting for Real-Time Radiance Field Rendering” (github.com) 以下是最初电脑所安装的内容: Anaconda3 2022.10-Windows-x86_64 CUDA 电脑只支持11.6,所以装的是11.6版本。 使用git去克隆repository 尽管挂了梯子,但是还是需要多次刷

    2024年02月05日
    浏览(47)
  • GPS-Gaussian:Generalizable Pixel-wise 3D Gaussian Splatting for Real-time Human Novel View Synthesis

    1)仿射变换 quad 所谓仿射变换,就是向量经过一次线性变换加一次平移变换,用公式可以表示为: quad 其中,p为变换前原始向量,q为变换后目标向量,A为线性变换矩阵,b为平移变换向量。 quad 对于二维图像而言,p和q分别是某个像素点在原图和仿射变换后的图中的未知(

    2024年02月03日
    浏览(35)
  • NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读

    题目 :NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 作者 :Antoni Rosinol, John J. Leonard, Luca Carlone 代码 :https://github.com/ToniRV/NeRF-SLAM 来源 :arxiv 时间 :2022 我们提出了一种新颖的几何和光度 3D 映射流程,用于从单目图像进行准确、实时的场景重建。 为了实现这一目标

    2024年02月14日
    浏览(39)
  • LiDAR SLAM 闭环——BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM

    标题:BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM 作者:Yunge Cui,Xieyuanli Chen,Yinlong Zhang,Jiahua Dong,Qingxiao Wu,Feng Zhu 机构:中科院沈阳自动化研究所 来源:2022 RAL 现算法已经开源,代码链接: GitHub - YungeCui/BoW3D: [RA-L] BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM.      

    2024年02月12日
    浏览(33)
  • Why choose Flink for real-time processing

    Why choose Flink [1] Streaming data more truly reflects our lifestyle (real-time chat); [2] Traditional data architecture is based on limited data sets (Spark is based on micro-batch data processing); [3] Our goal: low latency, high throughput (distributed architecture, there may be confusion in the order, for example, within 1 hour of statistics, some data

    2024年03月20日
    浏览(39)
  • 【GAMES202】Real-Time Global Illumination(in 3D)—实时全局光照(3D空间)

    上篇我们介绍了PRT,并以Diffuse的BRDF作为例子分析了预计算的部分,包括Lighting和Light transport,如上图所示。 包括我们还提到了SH,可以用SH的有限阶近似拟合球面函数,然后计算。 这里和上篇的推导方式不太一样,我们上篇是把Lighting项用SH分解然后交换积分和求和符号,最

    2024年02月10日
    浏览(31)
  • Training-Time-Friendly Network for Real-Time Object Detection 论文学习

    目前的目标检测器很少能做到快速训练、快速推理,并同时保持准确率。直觉上,推理越快的检测器应该训练也很快,但大多数的实时检测器反而需要更长的训练时间。准确率高的检测器大致可分为两类:推理时间久的的训练时间久的。 推理时间久的检测器一般依赖于复杂的

    2024年02月15日
    浏览(33)
  • 实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking

    论文url https://arxiv.org/abs/2003.11753 提出了一个名为Deep Multi-Camera Tracking (DMCT)的实时3D多摄像机跟踪系统。该系统旨在解决使用多个RGB摄像机进行3D人群跟踪的挑战性任务。 多个RGB摄像机的实时视频帧,每个视频帧是一个彩色图像,具有高度和宽度的像素矩阵。 基础卷积层(Ba

    2024年04月09日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包