Ubuntu18.04运行NeRF

没有复现成功,重新搞一个22.04的试试看,因为cuda的版本和pytorch不一样,导致后面的操作一直出错,但是总体的流程是没问题的

摘要

        这是一个结合单目稠密SLAM和层次化体素神经辐射场的3D场景重建算法,能实时地用图像序列实现准确的辐射场构建,并且不需要位姿或深度输入。论文的核心思想是,使用一个单目稠密SLAM方法来估计相机位姿和稠密深度图以及它们的不确定度,用上述信息作为监督信号来训练NeRF场景表征。

参考【位姿估计_代码_开源复现】 在Ubuntu20.04安装并运行NeRF-SLAM-CSDN博客

一、下载NeRF源码

        先下载最新的NeRF源码

https://github.com/ToniRV/NeRF-SLAM.git

 二、安装Anaconda

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

        我安装了最新版本的https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.09-0-Linux-x86_64.sh

安装Anaconda3

bash Anaconda3-2022.10-Linux-x86_64.sh

       (错误的做法,会导致ERROR1)他进去之后,要按回车,按了回车之后我不知道怎么办。第一次是第一次按回车,但是不行。然后第二次就ctrl+c,就出现了接受注意事项,输入yes就行。

        后面发现正确的做法是:先按回车,一直按s,就可以下一页,然后就会出现‘yes’ or ‘no’,然后再按回车,就可以安装了。

三、加环境变量

sudo vim ~/.bashrc
//在弹出的文本末尾加上
//记得更改用户名
export PATH="/home/用户名/anaconda3/bin:$PATH"

原作者用的是gedit,我这里改为vim,我使用gedit回出现警告,后面会出现各种问题

        每个人的文档都不是完全一样的,再文档的最后面加入即可。然后:wq保存退出,source一下让它生效。

source ~/.bashrc
//检验下安装成功没
conda --version

ERROR1

不出所料,出问题了

 但是回过头去查看,想重新安装Anaconda的时候,又发现已经存在了

 估计是一开始的安装,被我不小心按了ctrl+c导致,所以我把整个文件rm了,重新安装了一遍

ERROR2

安装Anaconda的时候,出现问题2

concurrent.futures.process._RemoteTraceback:
'''
Traceback (most recent call last):
  File "concurrent/futures/process.py", line 387, in wait_result_broken_or_wakeup
  File "multiprocessing/connection.py", line 256, in recv
TypeError: __init__() missing 1 required positional argument: 'msg'
'''

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "entry_point.py", line 69, in <module>
  File "concurrent/futures/process.py", line 562, in _chain_from_iterable_of_lists
  File "concurrent/futures/_base.py", line 609, in result_iterator
  File "concurrent/futures/_base.py", line 446, in result
  File "concurrent/futures/_base.py", line 391, in __get_result
concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.
[5813] Failed to execute script 'entry_point' due to unhandled exception!

原因是:磁盘空间不足

解决方法:

VMware虚拟机Ubuntu 主分区 /dev/sda1 扩容_新建虚拟机/dev/sda重新分配主分区_liu137756的博客-CSDN博客

四、成功安装Anaconda

安装过程中,会有

我选择了yes,详情查看Linux安装anaconda3是否初始化的区别_初始化anaconda3-CSDN博客

//检验下安装成功没
conda --version

五、添加清华镜像源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
conda config --set show_channel_urls yes

六、安装依赖项

创建并激活虚拟环境

conda create -n NeRF_SLAM
conda activate NeRF_SLAM

ERROR3

 错误:conda: error: argument COMMAND: invalid choice: 'activate' (choose from 'clean', 'compare', 'config', 'create', 'info', 'init', 'install', 'list', 'notices', 'package', 'remove', 'uninstall', 'rename', 'run', 'search', 'update', 'upgrade', 'build', 'content-trust', 'convert', 'debug', 'develop', 'doctor', 'index', 'inspect', 'metapackage', 'render', 'skeleton', 'repo', 'token', 'pack', 'verify', 'server', 'env')

原因:最新版anaconda,conda命令中把activate移除了

解决办法:

新命令:

source activate 环境名

退出环境还是用:

conda deactivate

 

七、安装pytorch

 cuda对应的版本可以用nvcc -V查看

注意pytorch要下载cuda对应的版本(注意要在NeRF_SLAM下面安装,要不然会出现ERROR6

// CUDA 11.7
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia 
//Pip install requirements:
pip install -r requirements.txt

安装过程中会出现:

The following packages will be SUPERSEDED by a higher-priority channel:

  ca-certificates                                 pkgs/main --> anaconda/pkgs/main
  certifi                                         pkgs/main --> anaconda/pkgs/main
  conda                                           pkgs/main --> anaconda/pkgs/main


Proceed ([y]/n)? 

我的选择是yes,参考The following packages will be SUPERCEDED by a higher-priority channel是什么意思? - 思念殇千寻 - 博客园 (cnblogs.com)

 只是替换了源的优先等级。

ERROR4

ERROR: Could not open requirements file: [Errno 2] 没有那个文件或目录: 'requirements.txt'

解决办法:

1.需要先创建requirements.txt,方法:

sudo pip freeze > requirements.txt

2.重新执行命令:

sudo pip install -r requirements.txt

ERROR5

ERROR: Could not install packages due to an OSError: [Errno 2] 没有那个文件或目录: '/croot/aiobotocore_1682536655331/work'

 解决办法:参考pip 安装requirement 报错 ERROR: Could not install packages due to an OSError: [Errno 2]_error: could not install requirement docxtpl==0.16_凌霜雪的博客-CSDN博客

手动删除requirement.txt文件中的下载链接

 删除的办法可以参考EXCEL如何用查找替换清除特定符号后面的内容-百度经验 (baidu.com)

 300多行删除确实太麻烦了,全选复制到excel里面,ctrl+f寻找,然后替换“ @ *”为“”就可以了

 ERROR6

ERROR: Cannot install clyent==1.2.2 and conda-repo-cli==1.0.75 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested clyent==1.2.2
    conda-repo-cli 1.0.75 depends on clyent==1.2.1

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
解决方法:修改clyent==1.2.1

ERROR7

成功了,但是warning了,

这个警告表明正在使用piproot用户身份运行,这可能会导致权限问题和与系统包管理器冲突。为了避免这些问题,建议您使用虚拟环境(Virtual Environment)来管理Python包。

虚拟环境是Python的一种工具,它允许您在项目之间隔离不同的依赖关系,以及在项目中使用特定版本的包,而不会影响系统范围的Python安装。

就是因为我没有进入虚拟环境,详情查看ERROR3,如何进入虚拟环境

八、编译安装gtsam

 先下载https://github.com/ToniRV/gtsam-1.git

 然后替换掉NeRF_SLAM/thirdparty目录下的gtsam,改好名字,gtsam

pip install -r ./thirdparty/gtsam/python/requirements.txt

要先安装Cmake版本3.22以上的,参考        九、编译ngp

然后编译:

cmake ./thirdparty/gtsam -DGTSAM_BUILD_PYTHON=1 -B build_gtsam 
cmake --build build_gtsam --config RelWithDebInfo -j2
cd build_gtsam
make python-install
cd python
python setup.py install

 这里要等很久,耐心等待

九、编译ngp

要求Cmake版本在3.22以上,参考这篇博客
安装cmake3.22.6,https://cmake.org/files/v3.22/cmake-3.22.6-linux-x86_64.tar.gz,国内源:Index of /files (cmake.org)

删除旧的版本

sudo apt autoremove cmake

ERROR8(有4种cmake的错误)

error8.1        bash:/usr/bin/cmake:是一个目录

error8.2        bash:/usr/bin/cmake:没有那个文件或目录

error8.3        bash:/usr/bin/cmake:符号连接的层数过多

error8.4        ln:无法创建符号链接‘/usr/bin/cmake’:文件已存在

删除,替换为新的cmake过程中,出现的问题解决方法如下

我下载的NeRF_SLAM没有instant-ngp,所以我去作者网站自己下载一个:https://github.com/ToniRV/instant-ngp.git

还是一样,放进去NeRF_SLAM/thirdparty里面,替换掉原来的文件,记得改名字

然后,进入到NeRF_SLAM,运行以下命令

cmake ./thirdparty/instant-ngp -B build_ngp
cmake --build build_ngp --config RelWithDebInfo -j2

ERROR9

CMake Error at /home/zzq/slam/cmake-3.22.6-linux-x86_64/share/cmake-3.22/Modules/CMakeDetermineCUDACompiler.cmake:179 (message):
  Failed to find nvcc.

  Compiler requires the CUDA toolkit.  Please set the CUDAToolkit_ROOT
  variable.
Call Stack (most recent call first):
  CMakeLists.txt:11 (project)

解决办法:

根据提示内容,说nvcc没有找到,但可以通过sudo apt install nvidia-cuda-toolkit命令安装,注意:千万不能使用sudo apt install nvidia-cuda-toolkit命令,否则会重新安装CUDA(而且会安装NVIDIA驱动可以支持的最高版本的CUDA)!!!

其实CUDA已经安装好了,只是没有在环境变量中配置,所以找不到该命令,需要做如下操作:

1)查看CUDA的位置:

cd /usr/local 

一般在/usr/local目录下会有CUDA文件夹或软链

2)打开、编辑环境变量的配置文件:

vim ~/.bashrc

 在文件末尾添加:

# cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin

然后按:wq保存退出编辑模式。

3)刷新~/.bashrc文件使其生效:

source ~/.bashrc

4)重新使用nvcc命令查看CUDA版本:

输入:

nvcc -V

注意:运行到这里,与原文章不同的地方
 

我发现原来的文章,没有安装NeRF_SLAM所需要的依赖项。在编译instant-ngp的会报错。

所以我们要在NeRF_SLAM的目录下,再一次安装依赖项

git submodule update --init --recursive
pip install -r requirements.txt

然后返回主目录

sudo python3 setup.py install

ERROR10
 

 The detected CUDA version (9.1) mismatches the version that was used to compile
PyTorch (10.2). Please make sure to use the same CUDA versions.

解决办法:

  1. 更新torch版本
  2. 更新CUDA版本

我选择第二种,CUDA是向下兼容的所以越高版本的CUDA越兼容低版本的 。

参考:报错解决:RuntimeError:The detected CUDA version mismatches the version that was used to compile PyTorch._AGI_Player的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值