“今天要介绍的文章是来自Stephen等人在CVPR2021发表的
Patch-NetVLAD
,论文名是"Patch-NetVLAD: Multi-Scale Fusion of Locally-Global Descriptors for Place Recognition"。本方法结合局部与全局特征的优势并利用NetVLAD残差得到patch-level的特征,该特征能够有效应对环境以及视角变化对VPR带来的影响,获得了“ ECCV2020 Facebook Mapillary Visual Place Recognition Challenge ”的冠军。 ”
代码论文后台回复“patch-netvlad”获取。
NetVLAD
制作全局特征时并没有专门考虑更细分的局部特征,场景识别召回率不太高;基于局部特征的场景召回算法仅将局部特征进行聚合并没有考虑更高层次的信息。目前仍然没有一种召回率较好的将局部与全局特征融合的用于VPR的特征。
首先需要明确的是Patch-NetVLAD
的输入为一系列最为相似的参考图像(如用于构图的图像),本文利用原始的NetVLAD
全局描述子召回与查询图像最为接近的top-k张参考图像;随后计算 Patch-NetVLAD 描述子,并执行patch-level的图像匹配,这样可以对参考图像进行重新排序与精化以得到最终的参考图像(如NetVLAD
召回了top-k的参考图像,但这些参考图像与查询图像相似度排序是错误的,而本文算法相当于是对这些相似度进行了重新排序)。
原始的NetVLAD
[2]网络体使用Vector-of-Locally-Aggregated-Descriptors(VLAD)方法将预训练模型中的特征图进行聚合得到图像的全局描述子,实现了应对场景以及视角变化的功能。
令,它表示对于输入的图像,输出一个维度为的特征图。原有的NetVLAD
将这维特征聚合成一个维特征,其中表示聚类中心的个数。
其中表示第描述子的第个元素,表示软分配函数(即属于这一类的程度),表示第个聚类中心,
经过上述的VLAD聚合后,需要对结果矩阵进行降维:1. 按照列进行归一化;2. 将矩阵重排成一列得到一个向量;3. 对该向量进行;4. 白化PCA并进行 。以上降维过程可以表示为。
相较于原有的NetVLAD
框架,本文的改进点在于:对于特征图,设置步长,可以得到尺寸为的patches ,其中表示总块数:
其中,,表示块特征中心坐标。
于是,通过对每一个patch进行NetVLAD特征聚合与降维就会得到该patch的描述子,其中。
进一步地,通过提取不同尺寸patch描述子并融合之会进一步提高位置识别性能(后续实验中会对比)。
接下来的工作就是实现两张图像之间patch-level的匹配,即给定参考图像块描述子与查询图像块描述子,(暴力)找到patch与patch之间互相最为接近的匹配对,可以写成以下形式:
其中以及。
这一步为了得到查询图像与参考图像之间的相似度得分。这里提供了两种可选的计分手段:1. 基于RANSAC的计分,高召回率,但较为耗时;2. 空间计分,速度快但是召回率稍有下降。
空间一致性分数是通过拟合单应性矩阵,然后统计内点数给出的。其中使用了对应的patch,这些patch匹配对是由上步相互最近邻匹配得到的。在拟合单应矩阵时,将每个patch看作一个2D图像点,坐标位于该patch的中心,另外将内点阈值定义为步幅,计算内点数目与总patch数的比例作为一致性得分。
上述方式速度较慢,本文提出了RANSAC Scoring的一种替代方法,称之为快速空间评分(Rapid Spatial Scoring)。这种快速的空间评分极大地减少了计算时间,这是由于可以该方式可直接在匹配的特征对上计算得分而无需重新采样。如下为该得分的计算方法:
定义表示水平方向上的偏移量集合,同理表示竖直方向上的偏移量集合。表示水平方向偏移量均值,同理表示竖直方向偏移量均值;空间得分(越高越好)为下式:
观察上式可知,空间得分会从平均偏移量中惩罚匹配patch位置中的较大空间偏移量,从而可以有效地测量视点变化下场景中元素整体移动的相干性。
设置不同的patch大小,将其得分进行组合,得到:
其中表示第 patch尺寸,对于所有的而言,(后续实验中确定该权重)。
为了高效计算多尺度得分,本文设计了类似于积分图的IntegralVLAD
。回想一下,若要计算多尺度得分就要知道多尺度patch描述子,而计算多尺度patch描述子的过程存在大量的冗余操作,如较大patch的描述子的计算中包含了较小patch描述子的计算过程。若每个尺度的描述子单独计算将会引入较大计算量,于是本文提出了IntegralVLAD
用于高效计算多尺度特征。思路比较简单,就是在做特征降维之前,利用尺寸为的patch的VLAD聚合描述子制作积分特征图:
这样的话,对于计算任意尺寸patch的描述子,只需要索引积分特征图的4个位置即可(类似于积分图,不熟悉的同学自行查阅相关文献)。
本文算法使用Pytorch实现,在提取Patch-NetVLAD
之前将输入图像尺寸缩放到640*480。作者在RobotCar Seasons v2训练数据集上找到了用于后续实验的配置参数:单尺寸下,;多尺度融合配置,patch尺寸分别为2,5,8,融合比例。
(上图信息量较大,点击查看原图)
上述实验数据表明,与NetVLAD[2], DenseVLAD[3], AP-GEM[1]以及最近比较热门的SuperGlue相比多尺度Patch-NetVLAD
在全局描述能力上取得了最优的成绩。单尺度Patch-NetVLAD
也能获得与SuperGlue相当的效果。
设置不同的降维配置统计算法耗时与召回率之间的关系。可见Multi-RANSAC-Patch-NetVLAD表现最优,但最为耗时;Single-RANSAC-Patch-NetVLAD与SuperGlue相当的效果,但是快了近3倍;专注内存消耗配置的Single-Spatial-Patch-NetVLAD (dim=128)仍然优于NetVLAD
,并且它的内存仅仅是一个SIFT描述子的大小。
Patch-NetVLAD
配置,可根据应用自行调节;[1]: Jerome Revaud, Jon Almazán, Rafael S Rezende, and Cesar Roberto de Souza. Learning with average precision: Training image retrieval with a listwise loss. In Int. Conf. Comput. Vis., pages 5107–5116, 2019.
[2]: Relja Arandjelovic, Petr Gronat, Akihiko Torii, Tomas Pajdla,and Josef Sivic. NetVLAD: CNN architecture for weakly supervised place recognition. IEEE Trans. Pattern Anal. Mach. Intell., 40(6):1437–1451, 2018.
[3]: Akihiko Torii, Relja Arandjelovic, Josef Sivic, Masatoshi Okutomi, and Tomas Pajdla. 24/7 Place Recognition by View Synthesis. IEEE Trans. Pattern Anal. Mach. Intell., 40(2):257–271, 2018.
[4]: Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, and Andrew Rabinovich. SuperGlue: Learning feature matching with graph neural networks. In IEEE Conf. Comput. Vis. Pattern Recog., pages 4938–4947, 2020.