写在最前头!!!配置nerfstudio需要cuda没有cuda请不用往下看了,cuda官方是要求11.3或者11.7我自己用的是阿里云的11.4亲测可用。
一、配置环境
安装anaconda3
去官网或者镜像下载anaconda3 的执行文件
官网:anaconda官网
清华镜像:清华大学开源软件镜像站
下载好之后执行如下代码:
bash Anaconda3-2023.03-1-Linux-x86_64.sh
等待安装完成之后出现(base)字样,然后按照nerfstudio文档 创建虚拟环境:
conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
python -m pip install --upgrade pip
创建完环境之后需要安装torch,这里以cuda11.3为例:
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
如果是cuda11.7的用这个命令:
pip uninstall torch torchvision functorch
pip install torch==1.13.1 torchvision functorch --extra-index-url https://download.pytorch.org/whl/cu117
来自2023.6.20日的更新
nerfstudio官方文档的更新,已经适配cuda11.8,如果是新显卡(如4090等)可以使用cuda11.8
cuda11.8和pytorch2.0.1安装如下:
pip uninstall torch torchvision functorch tinycudann
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
安装tinycudann
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
注意!在安装tinycudann的时候可能会因为在国内的原因导致无法从github拉取,出现
“The TLS connection was non-properly terminated.”这样的报错,我是使用以下命令:
git config --global --unset http.proxy
git config --global --unset https.proxy
但是有时候也会出问题,我也参考了这篇文章:知乎
在安装完tinycudann之后,就可以按照文档安装nerfstudio了:
pip install nerfstudio
注意!使用如上命令的时候会自动把上面的torch卸载安装别的版本(除非你就是11.3),否则在执行上述命令之后再执行一下如下命令重新装回torch1.12:
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
2023.6.20更新:
根据pytorch2.0.1更新文档,functorch的api已经更改,无需额外安装,因此,如果是安装了cuda11.7/11.8+pytorch2.0.1的小伙伴可以不用再安装functorch
如果是cuda11.3+torch1.12则在安装完成之后还需要再安装一个新的依赖:
pip install functorch==0.2.1
注意!不要直接使用pip install functorch,会自动把torch卸载,直接安装制定版本即可。
至此 nerfstudio的基本框架都安装完毕。
可以用官方文档的demo试一下:
# Download some test data:
ns-download-data nerfstudio --capture-name=poster
# Train model
ns-train nerfacto --data data/nerfstudio/poster
在执行第一行命令时因为是直接从google drive上取数据所以服务器在国内的小伙伴可能会出现错误,我的服务器是在国外的所以可以直接用,如果不行的话不要着急,不一定是你装错了!!
这里以我的为例,运行成功之后出现如下画面:
然后我们用给的这个链接使用viewer在我们的电脑上远程查看结果。
首先 将上述链接复制进我们的浏览器(我们的链接可能不一样以自己的为准)
我们还需要将我们的电脑连上远程的服务器,我自己的电脑是windows的,这里也给出了方法:
打开windows的powershell
输入如下,username是服务器的用户名 remote-machine-ip是服务器的公网ip地址
ssh -L 7007:localhost:7007 <username>@<remote-machine-ip>
链接好之后,再打开网页就可以看到demo了:
当然我知道大家可能想用自己的数据,所以官方也给出了方法:
由于我使用的是图片的数据,因此我还要再安装colmap和ffmpeg。
安装ffmpeg执行如下命令即可:
sudo apt install ffmpeg
二、安装colmap
安装colmap是最麻烦的,官方文档给出了安装colmap的方法:
sudo apt install colmap
但是经过我的测试,我使用这个方法安装colmap之后在特征提取的时候会出现“Shader not supported by your hardware!”和“SiftGPU not fully supported!”
于是我参考这篇文章:CSDN 重新下载编译colmap
按照官方的文档,进行如下的操作:
sudo apt-get install \
git \
cmake \
ninja-build \
build-essential \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-system-dev \
libboost-test-dev \
libeigen3-dev \
libflann-dev \
libfreeimage-dev \
libmetis-dev \
libgoogle-glog-dev \
libgflags-dev \
libsqlite3-dev \
libglew-dev \
qtbase5-dev \
libqt5opengl5-dev \
libcgal-dev \
libceres-dev
除此之外,如果是和我一样用的Ubuntu 18版本的,还需要额外加命令:
sudo apt-get install libcgal-qt5-dev
sudo apt -y install liblz4-dev
注意!!!!
然后将anaconda的文件夹改名!将anaconda的文件夹改名!将anaconda的文件夹改名!
这样做是防止之后anaconda的环境会影响后续编译,改好之后重新进一下终端,这时候如果前面的(base)没有了证明已经改了。
更新cmake
上面的命令已经自动安装了cmake了,不过是安装的cmake3.10,如果用这个版本后面编译会出问题,经过我的测试使用cmake 3.26.0可以通过。那就来更新cmake。
首先下载新版本的cmake:
wget https://cmake.org/files/v3.26/cmake-3.26.0-linux-x86_64.tar.gz
解压:
tar zxvf cmake-3.26.0-linux-x86_64.tar.gz
删除旧版本的cmake(这里可以选择直接删除也可以将文件复制走再删除):
sudo rm -rf /usr/bin/cmake #(删除原本cmake 也可复制保存)
注意!我的cmake在这个文件下,请找对自己的cmake的文件目录!
创建软连接:
sudo ln -s /root/cmake-3.26.0-linux-x86_64/bin/cmake /usr/bin/cmake
注意!:/root/cmake-3.26.0-linux-x86_64/bin/cmake是解压之后的cmake路径
/usr/bin/cmake是原本的cmake路径
之后输入cmake --version 可以查看cmake的版本
编译colmap
首先克隆源文件:
git clone https://github.com/colmap/colmap.git
然后:
cd colmap
git checkout dev
mkdir build
cd build
注意!我需要的是cuda版本的colmap,因此需要指定我的cuda,按照官方的文档和参考知乎的方法,在build目录下输入如下命令,**/usr/local/cuda/bin/nvcc 需要改成自己的cuda的文件目录**
sudo cmake .. -D CMAKE_CUDA_COMPILER="/usr/local/cuda-11.4/bin/nvcc" ../CMakeLists.txt -D CMAKE_CUDA_ARCHITECTURES='native'
等待完成之后,会在build目录生成Makefile文件,在这个文件目录下,执行如下命令:
make
sudo make install
make命令的时间很长,需要耐心等待。等到100%之后再执行sudo make install即可
然后试一下colmap命令:
安装成功。
三、使用自己的数据
官方文档给出使用自己数据的命令,如下所示:
ns-process-data {video,images,polycam,record3d} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR}
第一个参数是指定输入的数据格式如image video等,
第二个参数是的指定源数据位置
第三个参数是指定colmap处理后的数据的位置
以我自己的数据为例,我使用图片数据进行:
ns-process-data images --data /root/data/pt007 --output-dir /root/processed_data/pt007
处理完成之后再使用如下命令进行nerf三维重建:
ns-train nerfacto --data {PROCESSED_DATA_DIR}
如果需要重建mesh模型还需要再加上:
ns-train nerfacto --pipeline.model.predict-normals True --data {PROCESSED_DATA_DIR}
参考文章:
1、git报错:The TLS connection was non-properly terminated._蓝雨飞扬7的博客-CSDN博客
2、Linux Colmap出错“Shader not supported by your hardware!“和“SiftGPU .....
3、在Linux上安装其他版本的cmake 或 升级cmake
4、COLMAP3.8在Ubuntu18.04 下的配置 - 知乎
5、nvcc fatal : Unknown option 'fPIC' · Issue #1753 · colmap/colmap · GitHub
6、极智开发 | 解决 linux 上 git clone 慢或失败的方法 - 知乎
7、nerfstudio
8、Installation — COLMAP 3.8-dev documentation
至此nerfstudio安装+使用完毕,我自己摸索两三天才配置完,感觉网络是占了很大的问题,国内git clone经常容易出错。另外就是文档中错误的指引比较少,再加上使用nerfstudio的人也很少,因此我就记录一下我自己安装和踩坑的过程,帮助大家。
版权归原作者 蘭の憂傷 所有, 如有侵权,请联系我们删除。