NICE-SLAM学习

news2025/1/16 21:00:02

NICE-SLAM简介:

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

  • 关于该工程的前身和当前领域的主要研究现状见:(知乎:秦通)基于神经辐射场的(NeRF-based) SLAM 综述
  • 作者:Zihan Zhu, Songyou Peng, Viktor Larsson, Weiwei Xu, Hujun Bao, Zhaopeng Cui, Martin R. Oswald, Marc Pollefeys
  • GitHub地址:https://github.com/cvg/nice-slam
  • 论文:https://arxiv.org/abs/2112.12130

一.论文阅读:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

接口自动化测试-Pytest核心固件Fixture详解以及应用实战

目录 前言: 一、Fixture概述 二、Fixture分类 在Pytest中,Fixture可以分为4类: 三、Fixture使用 下面结合实例说明如何使用Fixture。 3.1 session级别的Fixture 3.2 module级别的Fixture 3.3 function级别的Fixture 3.4 class级别的F…

2023.5.13前端设计

SpringbootVue架构设计(一) 项目中的文件来自B站视频(程序员青戈) https://www.bilibili.com/video/BV1U44y1W77D 前端设计 assets 文件夹通常用于存放静态资源文件,例如图像、CSS、字体等。components 文件夹通常用…

2023.5.14数据库设计

SpringbootVue架构设计(二) 项目中的文件来自B站视频(程序员青戈) https://www.bilibili.com/video/BV1U44y1W77D 数据库设计 1、article 在关系型数据库中,text类型和varchar类型都是用来存储字符串的数据类型。它…

【ShaderToy中图形效果转译到UnityShaderlab案例分享_Flame】

ShaderToy内的源码与效果图如下: float noise(vec3 p) //Thx to Las^Mercury {vec3 i = floor(p);vec4 a = dot(i

电动力学专题:电磁波传播时的色散效应

本文中假定波动方程的性质足够好,不要杠,杠你就输了 数学分析中的问题和XX 波动方程:\frac{\partial^2 u}{\partial t^2} - a^2 \frac{\partial^2 u}{\partial x^2} 0......(1) 波的色散 波动方程描写的是以恒定速度a传播的非衰减波。方程&…

【电厂用 交流三相电流继电器HJL-F93/AY 导轨安装 JOSEF约瑟供应 】

名称:交流三相电流继电器,品牌:JOSEF约瑟,型号:HJL-F93/AY,功率消耗:≤5W,触点容量:250V/5A,额定电压:58、100、110、220V 上海约瑟供应 交流三相…

第十四届蓝桥杯青少组选拔赛Python真题 (2022年10月30日),包含答案

目录 一、选择题 二、编程题 第十四届蓝桥杯青少组选拔赛Python真题 (2022年10月30日) 一、选择题 第 1 题 单选题 执行print (5%3) 语句后,输出的结果是 ( ) 答案:C 第2题单选题 以下选项中,哪一个是乘法运算符?() 答案:C 第3题 单选题 已知x-3,求x//2+x”2的…

PCIE结构拓扑(RC、EP、SWITCH)介绍

1、PCIE典型结构拓扑 (1)个人理解:红色方框部分一般是在芯片内部集成,对外可提供多个PCIE接口; (2)芯片提供的PCIE接口,可以接EP设备、PCI桥、Switch设备; 2、RC(Root Complex) 个人理解&#x…

【一文吃透归并排序】基本归并·原地归并·自然归并 C++

目录 1 引入情境基本归并排序实现 C 2 原地归并排序2-1 死板的解法2-2 原地工作区2-3 链表归并排序 3 自底向上归并排序4 两路自然归并排序4-1 形式化描述4-2 代码实现 1 引入情境 归并思想:假设有两队小孩,都是从矮到高排序,现在通过一扇门后…

微服务#3 Docker常用命令

Docker 一.初识docker Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题? Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离 Docker如何解决开…

在树莓派上搭建WordPress博客网站,并内网穿透发布到公网

✨个人主页:bit me👇 目 录 🐾概述💐安装 PHP🌸安装MySQL数据库🌷安装 Wordpress🍀设置您的 WordPress 数据库🌹设置 MySQL/MariaDB🌻创建 WordPress 数据库 &#x1f33…

pga_aggregate_limit和process关系

之前部署19c时,配置pga_aggregate_limit都是直接配置成0了,配置processes的大小也比较随意,上周维护一个客户安装的环境,重启数据库数据库时告警了,才第一次认真对面了 SYSorcl1> startup ; ORA-00093: pga_aggreg…

鼠标拆卸方法、鼠标按键噪声大解决办法(为按钮加润滑脂)

文章目录 今天我买了一款acer鼠标,发现按键声音有点大,想给它的按钮上一点缓冲脂,这个缓冲脂本来我是买来润滑机械键盘轴体用的,刚好也能用上。 这是我的鼠标外壳结构,我拆卸的时候没注意,给我拆坏了&…

SRP中的shader

SRP中的shader 在Unity中使用SRP时,我们需要使用HLSL来编写shader。HLSL语法与GLSL类似,在使用HLSL的地方我们需要用HLSLPROGRAM和ENDHLSL来包裹: Shader "My Pipeline/Unlit" {Properties {}SubShader {Pass{HLSLPROGRAM#pragma …

MySQL访问方法

访问方法(访问类型) Const 通过主键或者唯一二级索引来定位到唯一一条满足条件的数据的访问方法称为const。特别指出,如果主键中有两个列l1和l2,查询条件中只有l1的话访问方法就不是const,因为通过l1并不能确定唯一一条…

VisualStudio如何配置PCL点云库?

文章目录 0.引言1.准备PCL点云库2.VisualStudio相关设置3.配置PCL点云库4.测试PCL 0.引言 因笔者课题涉及点云处理,需要通过PCL进行点云数据分析处理,查阅现有网络资料,实现了VisualStudio2015(x86)配置PCL1.8.1点云库,本文记录实…

Python——pyqt-auto-tool自动化小工具(源码)

目录 一、演示视频 二、代码包 三、使用步骤 四、总结 一、演示视频 pyqt-auto-tool自己乱改的自动化小工具_哔哩哔哩_bilibili今天教资考试完,花半天自己乱改的自动化小工具pyqt-auto-tool,二开1、auto-tool原作者:https://www.bilibil…

学习通项目需要用到的

思路: 把长连接弄好课堂详细页面可以看到班级的所有学生,双击学生弹窗,可以确认从该课程中移除学生教师可以在班级详细页面通过输入学生的id,将学生加入该班级做好签到的页面,输入签到标题,选择签到的结束…

玩转计算机组成原理--指令系统

目录 一、机器指令 1.1指令的一般格式 1.操作码: 2.地址码 1.2指令字长 二、操作数类型和操作类型 2.1操作数类型 2.2操作类型 三、寻址方式(重要) 3.1指令寻址 1.顺序寻址 2.跳跃寻址 3.2数据寻址 1.立即寻址 2.直接寻址 3.隐含寻址 4.间接寻址 5.寄存器寻址 …

创作星-创意大爆发!AI文案生成器让创作轻松快捷,轻松撰写出热门标题。

一、创作星-创意大爆发!AI文案生成器让创作轻松快捷,轻松撰写出热门标题。 ✨使用“创作星”,让AI帮你生成惊艳的文案! ✨创意大爆发!AI文案生成器让创作轻松快捷,轻松撰写出热门标题。 ✨AI文案神器&…