【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中)

这篇具有很好参考价值的文章主要介绍了【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景/物体三维重建过程:首先用colmap估计图像位姿,而后以图像和位姿作为出入,用NeRF或Gaussian Splatting进行三维重建

一、NeRFStudio安装

  简介:Nerfstudio,一个用于NeRF开发的模块化PyTorch框架。框架中用于实现基于NeRF的方法的组件即插即用,使得研究人员和相关从业者可以轻松地将NeRF集成到自己的项目中。框架的模块化设计支持实时可视化工具,导入用户真实世界捕获的数据集外(in-the-wild)数据,以及导出为视频,点云和网格表示的工具。近期,还导入了InstantNGP、3D Gaussian Splatting等最新重建算法。

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计

1.安装(ubuntu系统)

  下载项目代码到本地:

git clone https://github.com/nerfstudio-project/nerfstudio.git

  可以去github直接下载zip文件,也可以按照以上命令git。网络不好可以去gitee(码云)加速。

cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

2.安装(windows系统)

2.1.安装vs2019 + cuda 11.6;
2.2.通过conda创建虚拟环境nerfstudio,依次执行如下命令:

conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
python -m pip install --upgrade pip

3.3.安装依赖:
  (1).pytorch 1.13.1, 执行如下命令:

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 -f https://download.pytorch.org/whl/torch_stable.html

  (2).tinycudann, 执行如下命令:

pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

3.4.安装nerfstudio,依次执行如下命令:

git clone git@github.com:nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

5.安装ffmpeg, 执行如下命令:

conda install -c conda-forge ffmpeg

6.安装colmap, 执行如下命令:

conda install -c conda-forge colmap
conda install -c conda-forge mpir

7.安装hloc,依次执行如下命令: 可选,windwos上不支持pycolmap

cd ..
git clone --recursive https://github.com/cvg/Hierarchical-Localization/
cd Hierarchical-Localization/
pip install pycolmap # windows不支持
python -m pip install -e .

二、安装tinycudann

pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

  这句命令不成功的,请切换gcc与g++版本,方法见最后

三、Colmap安装与使用

   colmap是用来对一系列图像进行位姿匹配,从而生成场景的三维模型(点云)。也就是你对一个场景拍摄了很多照片,colmap可以估计出每张照片的相机位置(pose,是NeRF的输入),并利用SFM算法生成三维模型。使用NeRF和Gaussian Splatting进行三维重建必备的工具。

1. 安装依赖

sudo apt-get install \
    git \
    cmake \
    ninja-build \
    build-essential \
    libboost-program-options-dev \
    libboost-filesystem-dev \
    libboost-graph-dev \
    libboost-system-dev \
    libeigen3-dev \
    libflann-dev \
    libfreeimage-dev \
    libmetis-dev \
    libgoogle-glog-dev \
    libgtest-dev \
    libsqlite3-dev \
    libglew-dev \
    qtbase5-dev \
    libqt5opengl5-dev \
    libcgal-dev \
    libceres-dev

2. 安装colmap

git clone https://github.com/colmap/colmap.git
cd colmap
mkdir build
cd build
sudo cmake .. \
      -D CMAKE_CUDA_COMPILER="/usr/local/cuda-11.3/bin/nvcc" ../CMakeLists.txt \
      -D CMAKE_CUDA_ARCHITECTURES='89'    
cd ..
sudo make -j24 
sudo make install

  注意:
  更改以上命令中cuda路径,以及最后的显卡算力(75代表Turing架构,如RTX 20系列;80代表Ampere架构,如RTX 30系列;89为RTX4080 显卡等)

3.使用colmap

3.1 可视化界面使用

使用命令打开colmap

colmap gui

打开界面如下:

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计1.创建 project_cat 文件夹,把图片放 project_cat/images 下
2.执行 Automatic reconstruction 重建,如下:‘
【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计
【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计
  需要等待比较久的时间,最开始比较占用CPU,大概执行的是特征点计算和匹配一类的,后面会占用比较大的GPU使用率,GPU内存占用大概2G.

  到下面的界面后表明完成。

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计
  同时介绍了可视化sparse, dense, mesh 模型结果的方法。最终效果如下:

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计
一些参数说明:

Rotate model: Left-click and drag.
Shift model: Right-click or -click (-click) and drag.
Zoom model: Scroll.
Change point size: -scroll (-scroll).
Change camera size: -scroll. (红色的表示相机拍摄位置的符号)
Adjust clipping plane: -scroll. (距离观察视点一定距离的点会被 clipped)
Select point: Double-left-click point (change point size if too small). The green lines visualize the projections into the images that see the point. The opening window shows the projected locations of the point in all images.

3.2 Nerfstudio命令行调用Colmap

  除以上可视化界面直接计算图片的pose以外,还可以用Nerfstudio调用colmap:

ns-process-data images --sfm-tool hloc --feature-type superpoint --matcher-type superglue --data '/path/to/IMG'  --output-dir '/path/to/IMG' 

  其优点是利用superpoint 和 superglue深度特征,替代原始的sift提取特征

四、使用NeRFStudio进行三维重建

4.1.通过colmap生成数据集,也可从网上,如https://data.nerf.studio/nerfstudio/ 下载lego 乐高玩具测试集,并拷贝到nerfstudio的data/nerfstudio目录下,data/nerfstudio需自己创建;

4.2.采用colmap生成数据集时,需执行如下命令生成transforms.json:

ns-process-data images --data data/nerfstudio/lego/train --output-dir data/nerfstudio/lego --camera-type perspective --matching-method exhaustive --sfm-tool colmap --crop-factor 0.0 0.0 0.0 0.0

4.3.训练命令如下:迭代产生的checkpoint存储在outputs/lego/nerfacto目录下

ns-train nerfacto --data data/nerfstudio/lego --vis viewer --max-num-iterations 50000

参数为数据路路径,迭代次数等。还可添加其他参数,用命令ns-render --help查看官方文档

  训练进度如下图所示:

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计
训练结束后,会显示本地浏览地址。打开web实时预览: https://viewer.nerf.studio/versions/23-04-10-0/?websocket_url=ws://localhost:7007 ,如下图所示:

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计加载预训练模型,继续训练命令为:

ns-train nerfacto --data data/nerfstudio/person --load-dir outputs/person/nerfacto/2023-08-23_152364/nerfstudio_models

加载预训练模型进行可视化查看:

ns-viewer --load-config outputs/person/nerfacto/2023-04-23_152364/config.yml

训练结果可以导出为 (1).渲染视频; (2).点云;(3).mesh.

支持的自定义数据集类型:https://docs.nerf.studio/en/latest/quickstart/custom_dataset.html
ns-process-data各参数说明:https://docs.nerf.studio/en/latest/reference/cli/ns_process_data.html
官方提供的数据集:https://drive.google.com/drive/folders/19TV6kdVGcmg3cGZ1bNIUnBBMD-iQjRbG

五、3D GaussianSplatting安装与使用(即将到来)

5.1 安装

  首先,克隆代码到本地(–recursive是为了添加SIBR的可视化库,用于显示结果)

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

  然后,cd目录到gaussian-splatting 下,按照yml创建环境:

cd gaussian-splatting
SET DISTUTILS_USE_SDK=1                   # 只有 Windows 需要
conda env create --file environment.yml
conda activate gaussian_splatting

安装整体比较简单,基本一键式安装

5.2 使用

  首先,自带的库可以把视频,处理成图片。例如:

ffmpeg -i -qscale:v1-qmin1-vffps C:Users\data\crane.mov -qscale:v 1 -qmin 1-vf fps= %04d.jpg

  然后,是用colmap处理图像,获得每张图像的pose:

python convert.py -s data/crane

由于我已经用colmap处理好了图像,因此需要修改以上代码。首先,需要创建 ‘ distorted’文件夹,并将 ‘colmap’中的‘spase’ 文件夹复制进去;然后复制 ‘images’文件夹,并重命名为‘input’。然后执行修改后的命令:

python convert.py -s 'data/crane' --skip_matching

得到的数据集格式如下:
【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计
  最后,开始训练:

python train.py -s 'data/crane' --data_device cpu  --iterations  30000

以上参数可选gpu或cpu,一般训练30k就能收敛。想细节更好,建议往100k训练。500张图,4080gup,30k大概需要半小时内(但是colmap需要一小时)。以下是训练截图:
【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计最上面一行output那,显示了保存路径。

  结果可视化:

./SIBR_viewers/install/bin/SIBR_gaussianViewer_app -m ./output/ee33ed94-3

以上命令,需要将路径改为自己的。可视化效果如下:

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计

  可以通过键盘的‘wsad’进行移动,‘ikjl’键来切换视角。只要照片拍的好,效果就好。具体数据采集问题,可以咨询博主。

五* CUDA安装(附C++编译器说明)

提示:安装cuda前,首先要确保gcc与g++编译器的版本,与cuda版本相匹配。不确定的先看第5节

1、查看已安装的CUDA版本

  所有已安装的CUDA版本默认保存在/usr/local路径下,cd到该路径下通过ls命令查看:

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计

2、查看当前使用的CUDA版本

  在/usr/local路径下通过 stat cuda 命令查看当前使用的CUDA版本:

3、安装新的CUDA版本——CUDA11.3为例

3.1、下载对应版本的CUDA安装包: 链接(选择下载runfile文件)

3.2、在下载文件的目录下,通过命令进行安装:

sudo sh cuda_10.0.130_410.48_linux.run
## 安装时去掉对显卡驱动的安装,如下图中去掉第一行

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计
3.3、修改环境变量
  系统环境中修改cuda版本。执行以下命令,打开环境路径,在最后添加并保存:

gedit ~/.bashrc
## 默认为以上软连接的路径
export PATH=/usr/local/cuda/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

## 也可以指定具体路径
export PATH=/usr/local/cuda-11.3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH

保存环境变量:

source ~/.bashrc

4、CUDA版本的切换

4.1、删除原版本的cuda软连接

sudo rm -rf /usr/local/cuda

4.2、建立新的指向cuda-10.0的软连接

sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda

5.切换gcc与g++版本

  cuda支持的最高版gcc与g++如下表,大部分人都需要降级gcc:

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中),三维重建,NeRF,3D GS,NeRFStudio,colmap,SFM,位姿估计

  安装对应版本gcc与g++(这里以cuda11.3对应的9.5为例):

sudo apt-get install gcc-9
sudo apt-get install g++-9

  随后,进入/usr/bin目录下删除旧版本gcc/g++文件(这里只是删除了软连接):

cd /usr/bin
sudo rm gcc g++

  最后,将gcc/g++和新安装的gcc-9/g+±9关联起来:

sudo ln -s gcc-9 gcc
sudo ln -s g++-9 g++

  查看最新版本:

gcc -V

  其他切换版本方法:gcc版,默认使用优先级最高的版本。设置gcc 10优先级为100,设置gcc 9优先级为70。那么默认使用gcc10。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9

  随后,使用以下命令来选择版本(默认选择第1行的,序号为0)文章来源地址https://www.toymoban.com/news/detail-851268.html

sudo update-alternatives --config gcc

到了这里,关于【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C#开发PACS医学影像三维重建(一):使用VTK重建3D影像

    VTK简介:   VTK是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的。 因为使用C#语言开发,而VTK是C++的,所以推荐使用VTK的.Net开发库:ActiViz。 本系列文章主要以技术和代码讲解为

    2024年02月09日
    浏览(66)
  • Adobe的3D材质扫描和重建工具Substance 3D Sampler 4.2.2版本下载与安装配置

    Adobe Substance 3D Sampler 是Adobe Substance Suite的一个组成部分,是一款功能强大的材质扫描和重建工具。它可以帮助用户从现实世界中捕捉物体并将其转化为高质量的数字材质。该工具提供了先进的算法和工作流程,使用户能够轻松创建逼真的材质,并在三维项目中使用。 注:文末

    2024年02月02日
    浏览(78)
  • 【三维重建】3D Gaussian Splatting:实时的神经场渲染

    辐射场方法 改变了多张照片或视频主导的场景新视角合成。 Gaussian Splatting引入了三个关键元素 ,在保持有竞争力的训练时间的同时实现最先进的视觉质量,重要的是 允许在1080p分辨率下实现高质量的实时(≥30 fps)的新视图合成 。 1.首先, 从摄像机校准过程中产生的稀疏

    2024年02月08日
    浏览(46)
  • 三维人脸实践:基于Face3D的人脸生成、渲染与三维重建 <二>

    git code: https://github.com/yfeng95/face3d paper list: PaperWithCode 3DMM方法,基于平均人脸模型,可实现线性的人脸生成。此外,基于人脸关键点,还能渲染对应的三维人脸模型。 基于3DMM模型的生成1:正常 基于3DMM模型的生成2:微笑 3DMM模型的原理是怎样的?如何实现二维与三维的生成呢

    2024年02月05日
    浏览(47)
  • 三维人脸实践:基于Face3D的人脸生成、渲染与三维重建 <一>

    git code: https://github.com/yfeng95/face3d paper list: PaperWithCode 该方法广泛用于基于三维人脸关键点的人脸生成、属性检测(如位姿、深度、PNCC等),能够快速实现人脸建模与渲染。推荐!!! 相机坐标下的人脸变换 光照渲染 3DMM模型 提示:对于初学者来说,作者强烈建议按照这个顺

    2024年01月21日
    浏览(42)
  • 三维重建方法3D gaussian splatting与NeRF的区别和异同

    最近学习了一些三维重建相关的内容,目前比较主要的重建流派就是3DGS以及NeRF,NeRF作为2020年发布的文章轰动一时,影响深远,有很多NeRF based的相关工作在这些年涌现。3DGS作为2023年的new talk of the town,其在保证合成质量的情况下能够以数倍乃至数十倍的速度碾压许多NeRF b

    2024年02月01日
    浏览(42)
  • 【三维重建】DreamGaussian:高斯splatting的单视图3D内容生成(原理+代码)

    项目主页:https://dreamgaussian.github.io/ (包含论文和代码) 提示:以下是本篇文章正文内容,下面案例可供参考 常用的3D内容创建方式,主要是 利用基于优化的通过分数蒸馏采样(SDS)进行的3D生成 。该方法每个样本优化较慢,很难实际应用。本文提出了DreamGaussian,兼顾效率

    2024年02月06日
    浏览(52)
  • 三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

    此系统实现了常见的VTK四视图,实现了很好的CT图像分割,可以用于骨骼,头部,肺部,脂肪等分割,,并且通过三维重建实现可视化。使用了第三方库 VTK,ITK 实现分割和生不重建。 窗口分为 (横断面)、冠状面、矢状面,和3D窗口;包含了体绘制和面绘制; 效果: CT分割

    2024年02月08日
    浏览(57)
  • 三维重建 PyQt Python MRP 四视图(横断面,冠状面,矢状面,3D)

    本文实现了 Python MPR 的 四视图,横断面,冠状面,矢状面,3D MPR(multi-planner reformation)也称多平面重建,多重面重建是将扫描范围内所有的轴位图像叠加起来再对某些标线标定的重组线所指定的组织进行冠状、矢状位、任意角度斜位图像重组。 主要功能: 1:实现了 所有切面与

    2024年02月12日
    浏览(40)
  • 基于3D Gaussian Splatting与NeRF实现三维重建(使用IPhone创建数据集)

    本项目参考YouTube中博主( Spectacular AI ) 详细可了解:SpectacularAI官网 本文项目构建在Windows与Ubuntu中,二者在项目构建中并未有实质性的差距,可相互参考环境与参数的配置,本文即在Windows11(已配置好CUDA)中进行。 Windows下配置CUDA的方法可参考 :《TensorFlow-GPU-2.4.1与CUDA安

    2024年01月17日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包