跑通NeRF-SLAM代码记录

news/2024/11/7 10:41:32/

前言

Install

原文章github链接

  1. 下载代码
git clone https://github.com/ToniRV/NeRF-SLAM.git --recurse-submodules
git submodule update --init --recursive

因为有相关依赖,所以尽量使用命令下载代码。
在这里插入图片描述
2. 新建nerf-slam环境,github上也没提到python是哪个版本,这里就随便选了一个(这个github真的好简陋),下面这几行都是按照mip-nerf-pytorch的代码安装的

conda create --name nerf-slam python=3.9.12
source activate nerf-slam
conda install pip; pip install --upgrade pip

3.安装torch

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
# 切换到NeRF-SLAM文件夹下,安装requirements.txt
pip install -r requirements.txt
pip install -r ./thirdparty/gtsam/python/requirements.txt

4.安装cmake
在这里插入图片描述
到这一步就彻底卡住了

#查看当前cmake版本是不是>3.22
cmake --version # 若不是升级cmake
# 下载cmake
wget https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz
# 解压
tar xzf cmake-3.22.1.tar.gz
cd cmake-3.22.1
./configure
make
# 安装cmake
sudo make install
cmake --version

5.编译,在执行cmake ./thirdparty/instant-ngp -B build_ngp,(以下顺序不太记得了)会出现无数个错误

出现 No CMAKE_CUDA_COMPILER could be found. ,终端输入:

export PATH=/usr/local/cuda/bin:$PATH

接着出现CMake Error: Could not find CMAKE_ROOT !!!,终端输入:

hash -r

然后出现CMake Error at dependencies/glfw/CMakeLists.txt:163 (message): RandR headers not found; install libxrandr development package,需要进行一系列的安装

# 缺哪个安装哪个
sudo apt-get install libxrandr-dev
sudo apt-get install libxinerama-dev
sudo apt-get install libxcursor-dev 
sudo apt-get install libxi-dev
sudo apt install doxygen

接着出现Could NOT find GLEW (missing: GLEW_INCLUDE_DIRS GLEW_LIBRARIES)

sudo apt install libglew-dev

以上全都安装完成后,执行以下命令,应该需要几分钟时间吧

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

6. 编译gtsam
这个步骤遇到过很多奇奇怪怪的错误,以下逐一列出

cmake ./thirdparty/gtsam -DGTSAM_BUILD_PYTHON=1 -B build_gtsam 
# 运行至这里会报错
cmake --build build_gtsam --config RelWithDebInfo -j
cd build_gtsam
make python-install

1.遇到报错“No module named 'pyparsing”时,命令conda install matplotlib (参考链接)
2.运行上述命令后仍然报这个错误,这是可能是因为找不到parsing的包,在找不到包的那个文件中添加以下命令,其中("this\is\the\path")指向你的pypparsing安装路径(参考链接)。

import sys
sys.path.append("this\is\the\path")
import pyparsing

3.ln: failed to create symbolic link ‘XXXXXX’: Operation not supported参考链接,这是因为我使用的是文件夹挂载,最简单的办法就是转到本地再进行编译。
4. CMakeFiles/check.dir/build.make:70: recipe for target 'CMakeFiles/check' faimake check运行后已经几乎100%,但是还是报了错参考链接。
这里按照他的方法使用make代替make check。
在这里插入图片描述
5. 零零碎碎记录一些有点没的:关于解压一定要使用命令解压,nerf-slam提供的gtsam链接不好用要用其他链接gtsam-1,和另一个版本的链接。

总体的命令是

git clone https://bitbucket.org/gtborg/gtsam.git
cd gtsam/
mkdir build &&cd build
cmake ..
make check # 报错
make
sudo make install 

7. 结尾命令
把目录调回主文件下,环境换成nerf-slam环境,运行以下命令

python setup.py install

以上就完成了,接下来下载运行命令。

运行demo

# 下载数据集
./scripts/download_replica_sample.bash  # 这行命令显示权限不够 无法运行
# 打开bash文件可以看到他新建了一个目录,所以我也按照他的命令新建目录Datasets
# 运行
python ./examples/slam_demo.py --dataset_dir=./datasets/Replica/office0 --dataset_name=nerf --buffer=100 --slam --parallel_run --img_stride=2 --fusion='nerf' --multi_gpu --gui

报错ModuleNotFoundError: No module named 'colored_glog',我真想骂一句,作者能不能把他的包写全,数据集无法下载,命令总是找不到包,还不止一次了,到底是什么玩意???使用pip install colored_glog 安装。


http://www.ppmy.cn/news/99982.html

相关文章

OpenCV基础操作(5)图像平滑、形态学转换、图像梯度

import numpy as np import cv2 as cv from matplotlib import pyplot as plt一、图像平滑 1、2D卷积 我们可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。 LPF 帮助我们去除噪音,模糊图像。HPF 帮助…

我用GPT写了一个关于GPT的文章,大家看看写的如何

声明:以下内容来自GPT-3.5大模型(图片除外) 目录 I. 引言 1.1 研究背景和意义 1.2 现有研究综述 II. ChatGPT技术介绍 2.1 ChatGPT技术原理 2.2 ChatGPT技术优势 III. ChatGPT技术在智能客服中的应用和挑战 3.1 ChatGPT技术在智能客…

TOWER 成就徽章 NFT 系列介绍——TOWER 生态系统的第一个灵魂通证(SBT)

2022 年 7 月,团队推出了成就徽章 NFT 系列,记录每个成员在 TOWER 生态系统中的努力。这是第一个不可转让的灵魂 NFT 系列(SBT),代表了每个玩家的独特身份。 关于灵魂通证(SBT) 以太坊联合创始人…

剑指 Offer 12 矩阵中的路径

题目: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那…

Window的创建

Window的创建 上一篇说到了Window和WindowManager的关系并且讲述了WindowManager如何添加Window与Window内部的三个方法的实现 这篇主要讲几个常见的Window的创建比如Activity,Dialog和Toast 其中Activity属于应用Window Dialog属于子Window Toast属于系统Window z-order…

开闭原则正确姿势, 使用AOP优雅的记录日志, 非常的哇塞

👳我亲爱的各位大佬们好😘😘😘 ♨️本篇文章记录的为 JDK8 新特性 Stream API 进阶 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉🙉。 …

【Accessors注解】记录使用 lombook 注解姿势不对导致无法使用 BeanCopier 复制属性的问题

目录 背景定位问题分析原因为什么 BeanUtils.copyProperties() 可以为什么 BeanCopier 不可以 总结 背景 前几天看同事写的代码,发现不同分层对象之间的转换用的 spring 自带的 BeanUtils.copyProperties(),并且复制的还是对象集合。一时技痒&#xff0…

机器学习笔记 - 基于MATLAB的简单车牌识别系统参考代码

1、简述 车牌识别 (NPR) 是一种计算机视觉和模式识别技术,用于提取和解释车辆车牌上的字符。这里的重点是使用 MATLAB 实现一个简单的 NPR 系统,MATLAB 是一种用于科学计算和图像处理的强大编程语言和环境。目标是开发一个自动化系统,该系统可以检测图像中的车牌,从车牌中…