高翔

编程入门 行业动态 更新时间:2024-10-11 05:20:26

<a href=https://www.elefans.com/category/jswz/34/1696705.html style=高翔"/>

高翔

Unsupervised learning to detect loops using deep neural networks for visual SLAM system****随读笔记

写在前面

刚开始定的方向是SLAM,但是有太多师兄的课题都是这个了,老师让我接着往下研究语义SLAM,但是语义SLAM能找到的文献真的很少。SLAM入门学习的就是高翔博士的《SLAM十四讲》,所以在刚接触语义SLAM时,也很自然想查找高翔博士的相关研究成果。如果哪位有语义SLAM的相关开源代码,请在评论区分享给我,蟹蟹~

摘要

SDA(堆叠去噪自动编码器),一种多层神经网络,以无监督的方式从原始输入数据自动学习压缩表示。不像传统词袋模型需要人工标记特征,深度学习可以学习数据复杂的内部结构。最后实验通过与Fab-map2.0进行比较,(Fab-map2.0 open-source project)。

1介绍

回环检测是检测机器人行进过程中先前访问过的地方。如果可以正确检测回环,机器人可以重定位自身位置,可以消除累积误差,获得全局一致性的地图。基于位姿图的SLAM系统,回环将在图中添加额外的约束,减少优化误差。基于滤波器的回环检测算法中,回环被视为数据关联问题,这极大影响了滤波器的收敛性。在本文的研究中,轨迹由一系列的关键帧构成。 回环检测最简单的方法是对所有特征进行暴力匹配,但是此方法太耗时。另一种实用的方法是随机检查先前帧的子集,一旦发现了一个回环,计算相邻帧的生成树,并使用g2o等姿势图工具优化整个轨迹。然而,这种方法是无目的的,并且随着轨迹变长,检测到真实回环的可能性降低。

其他的方法利用里程计信息或观察信息。基于里程计的方法搜索接近当前位姿的关键帧,前提是假设之前的轨迹都是足够精确的。 基于观察的方法利用词袋模型,建立词典,当一个新的观察到来的时候,从词袋中进行特征匹配,用一个向量表示该帧中是否拥有词典中每个单词。向量值的差异判断是否为回环。词袋模型有一定的局限性:(1)假阳性:看起来相似但是并非同一场景被认定为回环;假阴性:实际为回环却看起来不相似。(2)词袋模型利用的是人工标记的特征,特征种类不断增多,同时,人工仍无法区分表示一个盒子或者一把椅子。
深度学习方法可以解决上述问题,深度学习方法利用多层神经网络直接从原始传感器数据中学习数据表示,用于物体分类和识别。本论文对于堆叠自动编码器的修改是基于相机运动的连续性

2学习特征

堆叠自动编码器利用上一个自动编码器的输出作为下一个编码器的输入,单个的自动编码器(DA)由三层组成:输入层x;隐藏层h;输出层y。自动编码器的结构是恢复输入,使y~=x。假设a为输出,x为输入,函数为:

w为权重,b为偏差,模型的优化目标为w和b。隐藏层的输出与输出层的输出分别为:

式中y与x不应该是恒等的,这样的训练没有效果。在SDA中实际利用最后一个隐藏层的输出作为实际输出,而不是y。通过最小化重构误差来训练w和b,通常采用的是***交叉熵损失***定义输入与输出的距离。

采用随机梯度下降(SGD)方法来训练参数。随机梯度下降将训练分成很多小的单元,每个单元沿着下降梯度方向根据学习率不断更新:


当目标函数收敛到局部最小值时,算法停止。
自动编码器因为输入数据存在噪声,所以在输入时对x进行腐坏。最大限度地利用无类标数据 ,用未受到噪声干扰的数据将原始数据估计出来。此时损失函数变为:

将前N个特征点调整为小的图像块进行矢量化,然后输入网络。如果两个帧的相似性超过阈值,则检测到回环。在可视化的相似性矩阵里,亮块则表示该区域可能有一个回环。
SDA一层一层贪婪的训练,通过改变损失函数的形式来修改传统的DA:

c d c_{d} cd​是输入输出的交叉熵距离; c s c_{s} cs​是稀疏性约束; c c c_{c} cc​是连续性约束。
连续性约束防止算法学到恒等表达式,并获得稀疏性结果,我们不希望在许多隐藏层具有非零响应时获得完整的结果。相反,我们希望DA在训练好的数据中找到有特色的东西同时可以屏蔽噪声。活动单元应该是少的并且输入图像不同响应不同。
(1)稀疏性惩罚是通过惩罚隐藏层单元的平均输出来实现的:

s h s_{h} sh​为稀疏阈值, N F N_{F} NF​为最后一个隐藏层的尺寸。
(2)连续性成本 c c c_{c} cc​,保持相邻帧的响应是相似的,在SGD中设置相对较小的批量,并假设批量中的数据是相近的。

3定义相似

F i 1 F_i^1 Fi1​ 表示第1帧图像中第i个特征值的输出。
检测相似的步骤:输入 F 1 F^1 F1 F 2 F^2 F2, 输出相似性得分S
(1)设置S=0;
(2)计算平均响应;
(3)计算每个隐藏单元的独特性得分 δ i = ϕ ( h i ) \delta_i=\phi (h_i) δi​=ϕ(hi​) ;
(4)特征匹配:M={ m k ∣ m k = ( F i 1 , F j 2 ) , 1 < = i < = k 1 , 1 < = j < = k 2 m_k|m_k=(F_i^1,F_j^2),1<=i<=k_1,1<=j<=k_2 mk​∣mk​=(Fi1​,Fj2​),1<=i<=k1​,1<=j<=k2​};
(5)对M中的m_k执行:

(6)计算特征的加权距离: s k = ∣ ∣ δ T ( F i 1 , F j 2 ) ∣ ∣ s_{k}=||\delta^T(F_i^1,F_j^2)|| sk​=∣∣δT(Fi1​,Fj2​)∣∣;
(7)添加相似性得分s+= π ( s k ) \pi(s_{k}) π(sk​);
(8)结束对于M操作;
(9)返回S。
首先计算隐藏层的平均响应,如果平均响应很高则可能是普遍特征,相反如果很低则可能是没有用的信息,只有噪声。所以只有中等响应更好,并将其视作有利于识别的独特特征。选择高斯函数来计算响应层分数:
δ \delta δ是区别性得分,被用作权重向量。如果区别性单元的响应是相似的,数据可能形成了一个回环。

多样性的特征通过特征空间的加权距离来测量, S k S_k Sk​表示特征间的距离。

最后利用 π \pi π函数计算相似性得分:将得分控制在合理范围内,并平衡近距离与远距离匹配的效果。

标准化相似性矩阵中亮的部分表示存在回环,降秩可以减少回环检测中的模糊性,通过丢弃最大的k个特征值来降秩。

4实验

更多推荐

高翔

本文发布于:2024-02-24 21:19:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1696688.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:高翔

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!