NICE-SLAM学习

NICE-SLAM简介:

是浙大和ETH提出的一种神经隐式SLAM方法主要创新点在于解决了基于传统nerf的方案如imap无法应用在较大场景的问题。

一.论文阅读:

Nice-slam的四个目标

  • 实时
  • 合理预测:传统方法无法做到
  • 大场景有效:iMAP或是learning-based方法均未能实现的
  • robust(同2):对nosie和未观测到的位置鲁棒
    总之就是传统方法+learning-based方法+最新的iMAP都只做到了以上的一项或几项,都没我考虑的全面
    创新点

multilevel grid-based features(基于网格的多层特征):替换了iMAP中的单层MLP,分为四个部分表示场景结构。局部特征网格能够保留更多的几何细节,并表示更大的场景,此外,还可以对空洞进行预测。而iMAP中的单层MLP表示整个场景,会被不断地全局更新(换句话说:MLP更倾向于学习后来的数据),导致其不仅不能预测空洞还不能表示大场景。

最大的创新点应该就是这个,其余的是一些非常零散的idea,比如:优化方法,如何mapping和tracking,如何加速训练,联合训练+分层训练,nerf采样方法等等。(纯属个人理解)

NICE-SLAM相当于采用了三维栅格地图,每个栅格保存局部的特征,用decoder将特征解码即可恢复出场景,因此即使场景面积很大也不存在网络遗忘的问题。

(原文:NICE-SLAM: Neural Implicit Scalable Encoding for SLAM论文阅读记录




另一个来自秦通的:[基于神经辐射场的(NeRF-based) SLAM 综述](https://zhuanlan.zhihu.com/p/555996624

NICE-SLAM在iMAP的基础上做改动,作者不仅开源了自己这部分,也把iMAP的实现开源了出来。作者的主要改动是使用了特征格网(Feature
Grid)+MLP这种显式+隐式混合的方法来表达环境。环境信息编码为多维向量,放在体素特征格网内,MLP作为decorder,将特征格网内蕴含的信息解码成occupancy和rgb,使用辐射渲染的积分方式,渲染出像素的深度及rgb值。同时,作者还用了course-to-fine的思想,将特征格网分成粗、中和精细,以便更细致的表达。该方法比iMAP快了2-3倍,虽然具备了一定的实时性,但真正用起来还是离实时有一些距离。这是当前看到的最好、最完善的NeRF-based
SLAM工作。

二.代码简析

(知乎:stella)
NICE-SLAM 代码简析

三.环境配置(待续)

  1. 原项目README配置:
    根据NICE-SLAM的README直接使用environment.yml文件在annoconda中配置,执行以下命令来编译和安装依赖项:
conda env create -f environment.yml

出现大量问题,按照教程( pycharm配置深度学习环境:conda env create -f environment.yml报错
)解决,未成功

  1. NICE-SLAM相关工程(
    NICE-SLAM-with-Adaptive-Feature-Grids
    ) 中的README的配置方法:
**Installation
//First you have to make sure that you have all dependencies in place. 
//The simplest way to do so, is to use Anaconda.

//You can create an anaconda environment called nice-slam. 
//For linux, you need to install libopenexr-dev before creating the environment.

sudo apt-get install libopenexr-dev
conda env create -f spare_nice_slam.yaml
conda activate nice-slam
**Or you can use

sudo apt-get install libopenexr-dev
conda env create -f ./nice-slam-1.0-alpha/environment.yaml
conda activate nice-slam
pip install einops
pip install torch torchvision

未成功

  1. 按照1.中解决教程提到的:

    但是NICE_SLAM中并没有requirements.txt文件,gg了。
  2. 又找来一个教程:
    conda env create -f environment.yml报错ResolvePackageNotFound和Found conflicts的解决方案【已解决】
    告诉我们

12 最终解决方案

以上就是我每天碰壁碰出来的结果,事实发现,这些办法都不能解决我的问题。
pip安装和conda安装配置环境我都试了,packagenotfound可以通过添加源来解决。而conflicts涉及到源码之类的,简直无能为力。因此决定暂时放弃这个方法。
开始使用,一次一安装的方式去干。 就是程序需要用到什么就安装什么。 尽可能的减少环境内包的数量和可能产生的冲突。
使用这个方法需要注意以下几点:
(1)你的源环境是否使用TensorFlow,如果使用一定要安装正确版本的TensorFlow,然后再安装其它包。
(2)可以先安装一些常用的包,比如numpy,pandas,matplotlib,scipy等等。也要根据你自己常用的情况去选择。
(3)可以看一下你程序内导入的包。
万万没想到,当我不使用这两种整体方式配置环境时候,之前的那些奇形怪状的死活有冲突安装不上的包一股脑都安装了。


    conda env create -f environment.yml
     
    pip install -r requirements.txt
  1. 网上关于深度学习SLAM 的配置方法
0.可以用以下命令罗列出当前已经创建的python虚拟环境:
conda env list
(终端输出:左边是虚拟环境的名称,右边是其所在路径,带星号的表示是默认环境。)
1.	创建新环境(时在命令中指定环境名称,不过一般也用不到,因为在environment.yml中会有项目的名字)
//注意:environment.yml应该替换为绝对路径下的文件
conda env create -f environment.yml -n new_env_name
2.进入环境:
source activate my_py_env
3. 使用环境文件遇到一些缺失的包使用anaconda单独安装命令:
conda install your-package


创建未成功,重新创建时候,显示** prefix **,是因为已经存在同名的废物虚拟环境了,因此删除该同名废物环境:

conda env list
(终端输出:左边是虚拟环境的名称,右边是其所在路径,带星号的表示是默认环境。)
conda env remove -p /home/s/.conda/envs/vmap

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值