深度学习定位系列3_NetVLAD
论文名称:NetVLAD: CNN architecture for weakly supervised place recognition
论文地址:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Arandjelovic_NetVLAD_CNN_Architecture_CVPR_2016_paper.pdf
项目地址:https://www.di.ens.fr/willow/research/netvlad/
1 摘要
本论文所解决的问题是大规模视觉场景识别(即给定查询图片,快速准确地给出图像所在位置)。该论文的贡献包括三个方面:(1)提出了一种卷积神经网络结构,可以实现端到端的场景识别;该模型结构的主要部分是VLAD网络层(称为NetVLAD),NetVLAD的设计灵感来自图像检索中用于图像表征的VLAD方法(Vector of Locally Aggregated Descriptors,局部聚合描述子向量);同时,本文所设计的NetVLAD网络层可以嵌入到任意神经网络。(2)提出了一种弱监督排序损失用于模型参数训练(采用的训练数据集是Google Street View Time Machine)。(3)在两个具有挑战性的场景识别任务上,相较于非学习的图像表征方法以及CNN的表征方法,本文所提出的NetVLAD模型具有优异的性能;同时在表征图像检索基线上获得了较好的实验结果。
2 实验
该四部分内容:(1)介绍数据集以及评价指标;(2)定量评价所提出方法;(3)定性评价所提出方法;(4)在标准图像检索数据集上进行基线评价。
2.1 数据集与评价指标
(1)数据集介绍
Pittsburgh (Pitts250k)包含250K数据库图像,以及24K张取自不同时间的测试图像(跨度为几年)。作者将数据集划分为3个大致相等的部分(划分依据是地理位置的独立),每个部分分别划分训练集、测试集和验证集(即每个部分包括83K左右图像和8K测试图像)。
Tokyo 24/7包含76K数据库图像,以及315张利用手机拍摄的查询图像。该数据库图像仅在白天采集,而查询图像却在白天、阳光充足、夜晚等条件下利用手机拍摄,因此具有很大的挑战性。同时作者自己采集了部分图像作为验证集,命名为TokyoTM。
(2)评价指标
采用标准的场景识别评价指标。查询成功的标准是:TopN中有一张图像与真值图像相距25m以内;然后,对不同的TopN取值下的查询召回率进行绘图。
(3)实现细节
作者使用AlexNet和VGG-16基本网络(基本网络的最后一层被移除)对最大池化和NetVLAD层进行扩展。
2.2 实验结果与讨论
(1)基准测试
与VLAD和CNN的方法进行比较,NetVLAD相较于现有的最好方法,均取得了较好的性能,实验结果如下:
NetVLAD实验结果
本文提出一种可以进行端到端学习的场景识别模型,并在数据集Street View Time Machine上进行弱监督(存在三种弱监督类型:不完全监督、不确切监督、不准确监督)训练。
(2)降维
采用标准的VLAD降维方法,即PCA+白化处理+L2归一化。实验结果表明,降维后的结果与降维前结果基本相同。
(3)场景识别端到端训练的优势
在Pitts250k-test测试集上,文章对AlexNet+NetVLAD方法与AlexNet+VLAD进行了对比,前者相对后者提升了47%。由此可以得到两个小结论:对场景识别,本文的方法能得到更加紧致的特征表达向量;对于特定任务(如场景识别),预训练模型的特征表达向量不是最优的结果。
(4)VLAD vs Max
从实验结果来看,VLAD池化的结果好于Max池化;在采用NetVLAD+白话操作的情形下,即使降维60%,其性能也与Max池化相当。
(5)哪些层需要进行训练?
针对场景识别任务,文章对不同层进行了训练,实验结果表明,训练NetVLAD层对结果的提升最大,同时训练其它层也能取得进一步的性能提升。
训练不同层对性能的影响
(6)时序数据用于训练的重要性
在作者设置的数据集上,没有时序训练的结果为38.7%,但增加时序训练后结果提升至68.5%;这说明了时序数据用于训练的重要性。文中作者认为,时序训练能提升模型的泛化性;例如:一辆相同的汽车可能出现在不同的地方,时序训练将能促使模型关注静态可用于场景识别的图像区域。
2.3 质量评估
作者可视化了场景识别模型所学习和关注到的图像区域,结果如下图所示:
场景识别模型所关注的图像区域可视化
由可视化结果可知,预训练(ImageNet数据集上)的AlexNet模型更关注与汽车,而文中提出的场景识别模型更加关注于能用于场景识别的区域,说明该论文提出的方法效果更好,具有更强的泛化性。
3 所提出方法
3.1 场景识别(图像检索)问题描述
离线训练与编码阶段:给定查询库Q和特征表示函数(eg. 神经网络等),那么可以得到对应于查询库Q的特征表示集合;在线测试阶段,利用特征表示函数对查询图像进行特征表示,然后采用某种距离度量获取查询库中最相似的图像;如果采用的距离度量是欧式距离,那么有:
由以上问题定义可知,如何获取一个性能优良的特征表示函数是求解该问题的关键步骤。本文所提出的方法则重点解决该问题,立足于获取性能优越、鲁棒的特征表示。
3.2 基于深度学习的场景识别模型
3.2.1 传统VLAD编码方法
存在一张图像,利用某种局部特征提取方法对该图像进行特征提取,共获取N个D维特征向量来表示该图像。现给定K个距离中心(也可称为视觉单词)作为VLAD方法的输入参数,那么VLAD将对N个D维特征向量编码为一个图像表征,其维数为,该图像表征是一个进行归一化的一维向量(一般在表示时可以看做为矩阵),其中第个特征向量到第个视觉单词的元素如下:
其中当且仅当。
3.2.2 可训练VLAD编码模型:NetVLAD
由3.2.1节可知,这将无法利用神经网络进行训练,因此本文将其平滑化,具体如下:
展开得到,舍去,则有:
那么VLAD编码可以重写为如下:
在以上重写的公式中,为可训练参数,那么在监督训练的情况下,极有可能训练出一个更好的聚类中心,如下图所示:
基于以上分析,本文提出了NetVLAD层用于 CNN architecture with the NetVLAD layer
3.2.3 训练数据构建
为了训练本文提出的NetVLAD网络,需要解决两个主要的问题:如何获取足够多的带标签训练数据集;对于场景识别任务,如何设置一个合适的损失函数。(1)给定一个训练查询图像,可以将距离该图像GPS位置近的图像设置为潜在正样本,而距离较远的图像设置为负样本。(2)三元组排序损失函数:假设训练样本为一个三元组,那么在潜在正样本中至少存在一个最佳匹配图像,即:
基于此,作者构建了弱监督排序损失函数,本采用了hinge loss函数,详细形式如下:
4 结论
本篇文章设计了一个新的用于场景识别的卷积神经网络架构,该架构包括两个贡献:NetVLAD池化层、弱监督排序损失函数。经过实验评估,本文提出的在场景识别任务上取得了较好的结果。
网友评论