传统与深度学习SLAM技术杂谈
这几个月在再次深度学习了SLAM技术后,感觉SLAM技术中无论是传统派还是目前的learning派,本质上都是在回答一个问题:如何在多种传感器中获取到最准确的信息,并基于这些信息进行运动和定位的估计。并在这个基础上得出一个各个传感器的关系,并基于这个关系进行运动和定位的估计。这个过程完全基于运动学,只不过传统SLAM技术是对这个传感器进行一个精确的数学建模,而learningSLAM技术则更加模糊,通过学习传感器的参数,来对传感器进行建模。但是他们无一例外都保持了一个核心:偏导与损失函数,这里我们详细讲述一下。 两代SLAM技术的藕断丝连我们都知道传统SLAM存在两种技术路线:滤波器与图优化方法。目前的传统SLAM路线中图优化已经压倒了滤波器方法,滤波器方法已经退回到IMU等导航方案发挥余热,因此我们在传统SLAM中主要介绍图优化方法。 图优化为代表的传统SLAM如图所示,这个图中每个节点都对应一个机器位姿,两个节点之间的边表示两个位姿的空间约束(相对位姿关系以及对应方差或线性矩阵)。当然边分为了两种边:回环边和帧间边。回环边会表示两个不同的node出现了相同的环境结果,正是因为...
卡尔曼滤波方法介绍
卡尔曼滤波及其他的衍生算法在SSM体系里是一个极其重要的存在,这里比这就稍微介绍一下这个传统版本的卡尔曼滤波。先给出我们熟知的卡尔曼滤波的公式: 卡尔曼滤波公式1. 预测步骤(Predict)状态预测(先验估计): \hat{x}_k^- = F_k \hat{x}_{k-1}^+ + B_k u_k + w_k协方差预测: P_k^- = F_k P_{k-1}^+ F_k^T + Q_k2. 更新步骤(Update)新息(测量残差): y_k = z_k - H_k \hat{x}_k^-新息协方差: S_k = H_k P_k^- H_k^T + R_k卡尔曼增益: K_k = P_k^- H_k^T S_k^{-1}状态更新(后验估计): \hat{x}_k^+ = \hat{x}_k^- + K_k y_k协方差更新: P_k^+ = (I - K_k H_k) P_k^-变量说明(Notation) 符号 含义 $x$ 系统状态向量 $u$ 控制输入向量 $z$ 实际观测值 $F$ 状态转移矩阵 $B$ 控制输入矩阵 $...
人工智能深度学习入门指南
在这里是给人工智能学习者的入门指南 1.环境配置(基础)现在的深度学习环境已经是很好配置了,这里我推荐使用Linux作为主系统进行学习(不熟练的可以使用wsl2),我个人常用的是deb系(这个看个人喜好)。在linux内部一般会预置的python,你只需要下载自己需要的代码编辑器(例如vscode)或者IDE(例如pycharm)就可以了。之后你需去拿到一个常用的深度学习框架,现在有四个框架:tensorflow,pytorch,jax,飞浆,最常用的是pytorch,他的网址是pytorch网址,请按照在自己的显卡品类选择合适的算子加速版本(如果是inter显卡请使用ubuntu及其下游版本并参考Intel A770 GPU深度学习环境搭建(Linux)(jax对windows系统不提供cuda套件加速包pip安装)。使用pip安装完成之后可以安装其他经常使用的包例如numpy,scipy,h5py,tdpm等完善环境。 2.常用技术社区人工智能相信开源,所以自然少不了优秀的开源社区与技术社区,在这里我推荐几个:huggingfacerebbitarxiv科学空间(苏佬个人博客...
源于进制转换的数据预处理方法
我们在训练模型的时候又是会遇到抱团的极端数据,他们的存在真是难受的要死:归一化的时候直接压在了一起,最后训练直接精度爆炸(笑啦),那我们怎么做才能避免这个麻烦呢? 我在看苏佬的ROPE编码的时候看到了他对于进制转换的一个独到的理解:数据中可以进行进制转换让他从数值域转化为向量域,也就是利用进制转换把每一项系数拆开变成一个数组。最近我在处理金融数据的时候面对着这种抱团的极端值利用直接的simgoid的时候直接爆炸,利用LSTM进行计算又太吃算力我这4060ti16g根本扛不住(啥时候能有个A100品鉴),然后就发现了这个进制转换似乎保证了可微,而且还可以通过缩小进制来扩大数据之间的距离。 就跟苏佬说的一样:原来训练好的模型已经学会了875>874,而在16进制下同样有875>874,比较规则是一模一样的(模型根本不知道你输入的是多少进制)。唯一担心的是每个维度超过9之后(10~15)模型还能不能正常比较,但事实上一般模型也有一定的泛化能力,所以每个维度稍微往外推一些是没问题的。 那么这玩意怎么用数学公式表达呢?常见的进制转换公式 a_m(n) = \left\lfl...
linux配置集合
作为一个老linuxer(用deb系居多)用户了,面对linux的系统配置的时候又是依然痛不欲生,所以这里归档一下我的Linux配置设置以方便日后使用。 初始配置更换源首先换镜像源的是必备的,鉴于Ubuntu还有他的孩子们都有图形化,这里就不用过多赘述。面对没有镜像源图形化切换的发行版,这里给出dabian的修改示例1sudo nano /etc/apt/sources.list #修改源文件我用的是中科大源12345678deb https://mirrors.ustc.edu.cn/debian/ bookworm main non-free non-free-firmware contribdeb-src https://mirrors.ustc.edu.cn/debian/ bookworm main non-free non-free-firmware contribdeb https://mirrors.ustc.edu.cn/debian-security/ bookworm-security maindeb-src https://mirrors.ustc.ed...
VAE学习笔记与感悟
VAE作为AE与扩散模型的承前启后的模型网络,重要性不言而喻。笔者在这里写一个关于VAE的简述来总结一下自己的感悟吧 一,模型构成一般来说,VAE模型由encoder和decoder构成。前者负责学习,后者负责练习。也就是说VAE通过encoder对输入的信息进行解析变换并学习里面的主要特征(例如图像),在decoder中进行重建并进行图像重构然后将重构的图形与原来的图像比较计算相似度然后反向传播更改参数权重再进行下一步练习。 那么他的训练原理是什么呢?VAE把人脸的各个部分进行独立建模,他引入了一个先验就是各个部分的信息应当符合高斯分布,模型只需要学习最主要的特征就可以了。很明显这样就可以避免很多噪声(你总不能眼睛部位分析出嘴巴的特征吧)。就跟眼睛的大小一样,一般模型会对这些特征进行一个量化,然后指出笑得时候眼睛长什么样,哭的时候眼睛什么样等等等等。而变分自编码器便是用取值的概率分布代替原先的单值来描述对特征的观察的模型,如下图的右边部分所示,经过变分自编码器的编码,每张图片的微笑特征不再是自编码器中的单值而是一个概率分布。 那样我们把这个概率输入到decoder里...
中北信息与计算科学存活指北
专业要求(专业)具体专业要求可以在中北数院官网查到(自己去下载)大家可以做什么数据挖掘、机器学习、深度学习、自然语言处理、计算机视觉、机器人、智能系统等方向的项目也可以做一些其他的项目(不限于八院)因为数学+其他专业是王炸积极拓宽自己的知识面那样就可以在理论和工程上都有不错的成绩推荐数模赛他可以让你养成一种工科思维很有利于跨专业的学习希望大家都能取得好成绩也祝大家想保研的顺利保研有关学校培养资料 实验室(实验室)这里是A413实验室人工智能方向成员,数学系信息与计算科学专业学生如果有对数学应用、人工智能、机器学习等感兴趣的同学,欢迎加入我们(广告就此打住)实验室学技术很好,有好多专门的机器但是不仅你需要选拔还需要你耗费大量的时间去学习这个有可能跟你学得东西不相关的东西有可能这会让你的保研之路变得更加艰难因为技术和绩点是互相矛盾的你学技术会耗费大量时间,而绩点会因此下降如果你想保研,建议还是先把绩点搞上去如果你想学技术,可以加入实验室而且实验室会让你的比赛之旅变得更加轻松如上 生活(生活)宿舍冬冷夏热,体验原始风格餐厅害人不浅,拉屎怀疑人生学长已经被最近的大半夜宿舍温度30度热傻了...
高维空间的SGD适用性问题
在低维空间,往往SGD(随机梯度下降)会有一个尴尬的处境就是会落入局部最优解(因为它基于GD即梯度下降法),但是在高维空间会这样吗??? 一、高维空间的优化特性:局部最优解的“消失”在低维空间中,目标函数(如神经网络的损失函数)常存在大量尖锐的局部最优解(可以理解为在最低点之前存在一个类似于二次函数的最低点一样的存在但是他的最低点更小),SGD容易被困其中。但在高维空间(如深度学习中常见的百万级参数空间),理论和实践表明: 局部最优解的结构变化高维空间中,局部最优解的数量可能随维度呈指数增长,但绝大多数局部最优解的梯度接近零(近似平稳点),且目标函数值与全局最优解相差无几。通俗理解可以是说梯度下降法本身的要求是目标朝着偏导数求小于零的方向前进,在二维空间存在一个偏导数,三维有两个… 以此类推n维空间将会有n-1个偏导数。你该如何保证些偏导数全部小于零?也就是说在绝对高维空间(矩阵满秩且秩足够大)的情况下,存在一个全部偏导数小于零的方向几乎不可能。 SGD的内在噪声机制我们从GD公式看起:批量梯度下降(Batch Gradient Descent)更新公式: \theta_{...
world'
上传初测式看看能不能用