Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法

本博客仅为作者记笔记之用,不对之处,望见谅,欢迎批评指正。
更多相关博客请查阅:http://blog.****.net/weixin_39779106
如需转载,请附上本文链接:http://blog.****.net/weixin_39779106/article/details/78993604

原论文链接

一、摘要

最近卷积神经网络算法(CNN)在众多识别领域取得了最好成绩,本文首次提出将CNN与空间和序列滤波器相结合应用于地点识别问题。本文所提出的系统在70km基准的地点识别数据集上取得了相较于当前最好的地点识别算法性能75%的提升。本文对CNN每一层得到的结果进行了详细实验(试图理解CNN工作原理并选出性能最好的结果)。

二、介绍

地点识别可以被理解成图像检索问题,是由确定当前场景和先前访问位置之间是否匹配来构成的。在目前视觉SLAM如FAB-MAP中通常利用“词袋(bag of words,BoW)”法来实现地点识别,词袋法通常基于局部视觉特征匹配,如利用SIFT、SURF、ORB等特征。然而最近Krizhevsky等人(提出AlexNet,本文实际用的网络就是AlexNet)发现利用大量数据训练得到的CNN特征性能比传统局部视觉特征好,Donahue等人的研究表明利用ImageNet训练出的CNN的中间层特征较BoW可以更有效地去除某些域适应性研究中的数据集偏差。

因此在本文中,我们研究是否可以将深度学习在其他识别问题中的优势移植到地点识别问题中来。我们提出了一种基于深度学习的地点识别算法,如图一所示,该算法可以比较由ImageNet训练得到的CNN中每一层特征的性能,并结合空间序列滤波方法提高地点识别性能。
Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法

三、相关工作

  1. 基于传统局部视觉特征以及BoW方法不在此详细介绍,具体内容详见原论文。
  2. 本节介绍与地点识别相关的卷积神经网络。最早出现与地点识别相关的图像检索问题,将当前图像与数据库中图像进行对比从而找到与向前图像包含同样物体或场景的图像,Babenko等人在2014年利用CNN的中间层特征来完成图像检索任务并取得了相当好的性能。值得注意的是,最佳性能是由中间层特征取得的而非最终层特征
  3. 地点识别问题实际上就是图像相似性对比问题,Fischer等人在2014年也将CNN各层特征与SIFT特征进行了对比,实验结果表明,基于深度学习的特征在特征匹配性能上均强于SIFT特征。

四、本文算法

在本节中主要介绍本文提出算法的两大组成部分:特征提取和基于特征匹配的地点识别假设时空(spatio-temporal)滤波方法。具体结构如图二所示。
Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法

特征提取

本文以基于ImageNet提前训练好的网络Overfeat为基础,该网络包含五个卷积阶段(stages)和三个全连接阶段如图三所示,图中前五个阶段中蓝色圆柱代表卷积层(convolution layer),绿色圆柱代表最大池化层(max pooling layer),紫色圆柱代表非线性修正层(rectification ‘ReLU’ nonlinearity layer),橙色圆柱代表补零层(zero-padding layer);后三个阶段粉红色圆柱代表全连接层(fully-connected layer),绿色圆柱代表非线性修正层(ReLU)。

当输入一张图片时,它会在每一层产生一系列刺激(activations),我们用Lk(I),k=1,…,21来代表每一层的输出,都是图像I在进行深度学习之后得到的一系列数组。通过比较不同图片产生的这些响应数组我们可以实现地点识别。网络可以处理任何比231x231大的图片,在实验中所有用到的图片的大小都会调整为256x256.

融合矩阵

对每层输出而言,我们会利用整个数据集包括R张训练图片和T张测试图片生成对应的融合矩阵Mk,k=1,...,21如下图所示。其中每个元素Mk(i,j)代表第i张训练图片和第j张测试图片之间的欧式距离:

Mk(i,j)=d(Lk(Ii),Lk(Ij)),i=1,...R,j=1,...T

为了找到最强的匹配假设,我们会对计算出每列中的最低值(一列中每个元素代表一张测试图片与所有训练图片的距离)。
Mk(j)=argminiMk(i,j),i,j=1,...,T

Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法

空间连续性

我们应用了两种连续性滤波器来对地点匹配的众多假设进行滤波。首先是空间连续性检查,检查是否有连续多个假设都是排在第一(即距离最短),在没有特定运动模型的情况下可以提供一个空间上的约束。具体而言,每一个地点匹配假设的描述值pk(j)可由下式计算得到,其中ϵ表示连续排名第一匹配的阈值,d表示回退时间间隔的大小,j表示当前的测试图像,只有当p(j)=1时,我们认为才是成功匹配。

pk(j)=1
if|Mk(u1)Mk(u)|ϵ,u[jd,j],j=d,...,T

图五展示了空间连续性检查的具体过程。这一空间约束在很大程度上减少了误匹配数。
Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法

顺序滤波器

顺序滤波器是SeqSLAM中原始运动滤波器,它的实现更为复杂。该滤波器只对每个局部序列前面的匹配进行线性拟合,而不是搜索所有匹配假设的相关对角线(在一个局部序列中仅用前面几个点拟合出一条直线),直线方程如下

y=f(x)=αjx+βj

其中α是线性模型的斜率同时也代表两次运行之间的速度比(训练集和测试集是在同一段路程分两次运行得到的),如图六所示,当地点匹配假设F(j)的速度比在参考速度比σ扫过的ϕ范围内,则认为其通过了顺序测试。参数ϕ扫过不同的值则可以产生一条PR曲线。如果提供里程计信息,顺序滤波将变得更加简单。
Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法

五、实验结果

  1. 本文提出算法和SAD,FAB-MAP以及SeqSLAM比较结果如下图所示。在100%精度情况下,本文所提出的基于深度学习算法的召回率是85.7%,SeqSLAM的召回率是51%。图b、图c显示的是卷积神经网络每一层的PR曲线,可以看出中间层的性能最好。
    Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法
    Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法
    Convolutional Neural Network-based Place Recognition 基于卷积神经网络的地点识别算法

  2. 实时性方面,利用标准CPU,在进行特征提取时,可以做到每秒10帧,在进行特征匹配时能够做到每秒2.5帧。(全程离线,实时性是存在质疑的

六、未来发展方向

  1. 数据集问题,目前深度学习性能很吃数据集,可以建立地点识别专属数据集。
  2. 对于不同场景自动选择不同层的结果。
  3. 找到更好的用于地点识别的特征。