📝笔记:Patch-NetVLAD论文阅读

今天要介绍的文章是来自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”的冠军。

首先祭出代码Repo

ReadMe Card

原有技术问题

NetVLAD制作全局特征时并没有专门考虑更细分的局部特征,场景识别召回率不太高;基于局部特征的场景召回算法仅将局部特征进行聚合并没有考虑更高层次的信息。目前仍然没有一种召回率较好的将局部与全局特征融合的用于VPR的特征。

新技术创新点

  1. 提出一种基于多尺度Patch的NetVLAD算法,相比于原始的NetVLAD VPR召回率有了大幅度提升;
  2. 提出一种加速多尺度Patch特征描述子计算的IntegralVLAD;
  3. 提出一种快速图像间相似度评分方法;

新技术主要框架以及关键技术点

首先需要明确的是Patch-NetVLAD的输入是一系列最为相似的参考图像(如用于构图的图像),例如本文利用原始的NetVLAD全局描述子召回与查询图像最为接近的top-k张参考图像;随后计算基于patch的描述子,并执行patch-level的图像匹配,这样可以对候选图像进行重新排序与精化以得到最终的参考图像(如NetVLAD召回了top-k的参考图像,但这些参考图像与查询图像相似度排序是错误的,而本文算法相当于是对这些相似度进行了重新排序)。

原始的NetVLAD框架

原始的NetVLAD2网络体使用Vector-of-Locally-Aggregated-Descriptors(VLAD)方法将预训练模型中的特征图进行聚合得到图像全局描述子,实现了应对场景以及视角变化的功能。

\(f_{\theta}: I \rightarrow \mathbb{R}^{H \times W \times D}\),它表示对于输入的图像\(I\),输出一个维度为\(H \times W \times D\)的特征图\(F\)。原有的NetVLAD将这\(D\)维特征聚合成一个\(K \times D\)维特征,其中\(K\)表示聚类中心的个数。

\[f_{\mathrm{VLAD}}(F)(j, k)=\sum \bar{a}_{k}\left(\mathbf{x}_{i}\right)\left(x_{i}(j)-c_{k}(j)\right)\]

其中\(x_{i}(j)\)表示第\(i^{th}\)描述子的第\(j^{th}\)个元素,\(\bar{a}_{k}\)表示软分配函数(即\(x_{i}\)属于\(c_{k}\)这一类的程度),\(c_{k}\)表示第\(k\)个聚类中心。

经过上述的VLAD聚合后,需要对结果矩阵进行降维:1. 按照列进行归一化;2. 将矩阵重排成一列得到一个向量;3. 对该向量进行\(L2-normalize\);4. 白化PCA并\(L2-normalize\)。以上降维过程可以表示为\(f_{\text {proj }}: \mathbb{R}^{K \times D} \rightarrow \mathbb{R}^{D_{\text {proj}}}\)

Patch-level Global Features

相较于原有的NetVLAD框架,本文的改进点在于:对于特征图\(F \in \mathbb{R}^{H \times W \times D}\),设置步长\(s_p\),可以得到尺寸为\(d_x \times d_y\)的patches \(\left\{P_{i}, x_{i}, y_{i}\right\}_{i=1}^{n_{p}}\),其中\(n_p\)表示总块数:

\[\left.n_{p}=\left\lfloor\frac{H-d_{y}}{s_{p}}+1\right\rfloor * \frac{W-d_{x}}{s_{p}}+1\right\rfloor, d_{y}, d_{x} \leq H, W\]

其中\(P_{i} \in \mathbb{R}^{\left(d_{x} \times d_{y}\right) \times D}\)\(x_i\)\(y_i\)表示块特征中心坐标。

于是,通过对每一个patch进行NetVLAD特征聚合与降维就会得到该patch的描述子\(\left\{\mathbf{f}_{i}\right\}_{i=1}^{n_{p}}\),其中\(\mathbf{f}_{i} = f_{\text {proj }}\left(f_{\text {VLAD}}\left(P_{i}\right)\right) \in \mathbb{R}^{D_{\text{proj}}}\)

进一步地,通过提取不同尺寸patch描述子并融合之会进一步提高位置识别性能(后续实验中会对比)。

相互最近邻

接下来的工作就是实现两张图像之间patch-level的匹配,即给定参考图像块描述子\(\left\{\mathbf{f}_{i}^{r}\right\}_{i=1}^{n_{p}}\)与查询图像块描述子\(\left\{\mathbf{f}_{i}^{q}\right\}_{i=1}^{n_{p}}\),(暴力)找到patch与patch之间互相最为接近的匹配对,可以写成以下形式:

\[\mathcal{P}=\left\{(i, j): i=\mathrm{NN}_{r}\left(\mathbf{f}_{j}^{q}\right), j=\mathrm{NN}_{q}\left(\mathbf{f}_{i}^{r}\right)\right\}\]

其中\(\mathrm{NN}_{q}(\mathbf{f})=\operatorname{argmin}_{j}\left\|\mathbf{f}-\mathbf{f}_{j}^{q}\right\|_{2}\)以及\(\mathrm{NN}_{r}(\mathbf{f})=\operatorname{argmin}_{j}\left\|\mathbf{f}-\mathbf{f}_{j}^{r}\right\|_{2}\)

空间一致性评分

这一步为了得到查询图像与参考图像之间的相似度得分。这里提供了两种可选的计分手段:1. 基于RANSAC的计分,高召回率,但较为耗时;2. 空间计分,速度快但是召回率稍有下降。

  • RANSAC Scoring:

空间一致性分数是通过拟合单应性矩阵,然后统计内点数给出的。其中使用了对应的patch,这些patch匹配对是由上步相互最近邻匹配得到的。在拟合单应矩阵时,将每个patch看作一个2D图像点,坐标位于该patch的中心,另外将内点阈值定义为步幅\(s_p\),计算内点数目与总patch数的比例作为一致性得分。

  • Rapid Spatial Scoring

上述方式速度较慢,本文提出了RANSAC Scoring的一种替代方法,称之为快速空间评分(Rapid Spatial Scoring)。这种快速的空间评分极大地减少了计算时间,这是由于可以该方式可直接在匹配的特征对上计算得分而无需重新采样。如下为该得分的计算方法:

定义\(x_{d}=\left\{x_{i}^{r}-x_{j}^{q}\right\}(i, j) \in \mathcal{P}\)表示水平方向上的偏移量集合,同理\(y_{d}\)表示竖直方向上的偏移量集合。\(\bar{x}_{d}=\frac{1}{\left|x_{d}\right|} \sum_{x_{d, i} \in x_{d}} x_{d, i}\)表示水平方向偏移量均值,同理\(\bar{y}_{d}\)表示竖直方向偏移量均值;空间得分(越高越好)为下式:

\[\begin{array}{r} \left.s_{\text {spatial }}=\frac{1}{n_{p}} \sum_{i \in \mathcal{P}}\left(\left|\max _{j \in \mathcal{P}} x_{d, j}\right|-\left|x_{d, i}-\bar{x}_{d}\right|\right)\right)^{2} \\ \quad+\left(\left|\max _{j \in \mathcal{P}} y_{d, j}\right|-\left|y_{d, i}-\bar{y}_{d}\right|\right)^{2} \end{array}\]

观察上式可知,空间得分会从平均偏移量中惩罚匹配patch位置中的较大空间偏移量,从而可以有效地测量视点变化下场景中元素整体移动的相干性。

多尺度Patch尺寸

设置不同的patch大小,将其得分进行组合,得到:

\[s_{\text {spatial }}=\sum_{i=1}^{n_{s}} w_{i} s_{i, \text { spatial }}\]

其中\(s_{i, \text { spatial }}\)表示第\(i^{th}\) patch尺寸,对于所有的\(i\)而言,\(\sum_{i} w_{i}=1, w_{i} \geq 0\)(后续实验中确定该权重)。

IntegralVLAD

为了高效计算多尺度得分,本文设计了类似于积分图的IntegralVLAD。回想一下,若要计算多尺度得分就要知道多尺度patch描述子,而计算多尺度patch描述子的过程存在大量的冗余操作,如较大patch的描述子的计算中包含了较小patch描述子的计算过程。若每个尺度的描述子单独计算将会引入较大计算量,于是本文提出了IntegralVLAD用于高效计算多尺度特征。思路比较简单,就是在做特征降维之前,利用尺寸为\(1 \times 1\)的patch的VLAD聚合描述子\(\mathbf{f}_{i^{\prime}}\)制作积分特征图\(\mathcal{I}\)

\[\mathcal{I}(i, j)=\sum_{i^{\prime}<i, j^{\prime}<j} \mathbf{f}_{i^{\prime}, j^{\prime}}^{1}\]

这样的话,对于计算任意尺寸patch的描述子,只需要索引积分特征图的4个位置即可(类似于积分图,不熟悉的同学自行查阅相关文献)。

实验

配置

本文算法使用Pytorch实现,在提取Patch-NetVLAD之前将输入图像尺寸缩放到640*480。作者在RobotCar Seasons v2训练数据集上找到了用于后续实验的配置参数:单尺寸下\(d_{x}=d_{y}=5\)\(sp=1\);多尺度融合配置,patch尺寸分别为2,5,8,融合比例\(w_{i}=0.45,0.15,0.4\)

定量评价

上述实验数据表明,与NetVLAD2, DenseVLAD3, AP-GEM1以及最近比较热门的SuperGlue相比多尺度Patch-NetVLAD在全局描述能力上取得了最优的成绩。单尺度Patch-NetVLAD也能获得与SuperGlue相当的效果。

计算量比较

设置不同的降维配置\(D_{\mathrm{PCA}}=\{128,512,2048,4096\}\)统计不同配置下算法耗时与召回率之间的关系。可见Multi-RANSAC-Patch-NetVLAD表现最优,但最为耗时;Single-RANSAC-Patch-NetVLAD与SuperGlue相当的效果,但是快了近3倍;专注内存消耗配置的Single-Spatial-Patch-NetVLAD (dim=128)仍然优于NetVLAD,并且它的内存仅仅是一个SIFT描述子的大小。

结论与借鉴意义

  1. 改进了NetVLAD,提出基于patch融合的NetVLAD,对参考图像与查询图像之间的相似度重排,大幅度提升了VPR召回率;
  2. 提供了多种Patch-NetVLAD配置,可根据应用自行调节;
  3. 该方法说到底是对NetVLAD的初选参考图像结果的re-ranking,目前阶段并没有脱离前置召回操作;同时由于缺乏更细粒度的局部描述子也无法做到与传统/学习的局部特征一样的特征匹配精度;但考虑到这仅仅用来做VPR,效果还是不错的;

附录


  1. 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. 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. 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. 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.↩︎