从VLAD到NetVLAD,再到NeXtVlad

从VLAD到NetVLAD,再到NeXtVlad

  1. VLAD
  2. NetVLAD
  3. NeXtVLAD

VLAD

VLAD(Vector of Local Aggregated Descriptors),是图像特征提取方法的一种。
图像检索经典思路:

  1. 存在一个图像库 I ,对每张图片 I_{i} 通过特征函数提取特征 f(I_{i})
  2. 提供一张query图片 q ,通过特征函数提取特征 f(q)
  3. 将query特征 f(q) 与图库特征 f(I) 做相似度计算,一般为欧式距离: d(q, I) = ||f(q) - f(I)|| ,距离越小,越相似

这里提到的VLAD算是特征提取函数 f 的一种,可简称为 f_{vlad} 。但VLAD方法如其描述——局部聚类向量,将局部特征聚类得到一个向量。所以VLAD应用的前提是要先获得图像的局部特征。

图像局部特征可以用SIFT,SURF,ORB等一般方法,也可以通过当前流行的CNN方法提取。

假设一张图像,提取了N个D维特征(通常N可能比较大,不同图片,其特征数N也可能不同),Vlad计算流程如下:

  1. 对全部的N*D特征图进行K-means聚类,获得K个聚类中心,记为 C_{k}
  2. 通过以下公式,将N*D的局部特征图转为一个全局特征图V,全局特征图shape为K*D。公式如下:
    V(j,k)=\sum_{i=1}^{N}{a_{k}(x_{i})(x_{i}(j)-c_{k}(j))}k \in K, j \in D (公式1)
    公式中 x_{i} 表示第i个局部特征, c_{k } 表示第k个聚类中心, x_{i}c_{k} 都是D维向量。
    a_{k}(x_{i}) 是一个符号函数,如果x_{i }不属于聚类中心c_{k}a_{k}(x_{i})=0;如果 x_{i}属于聚类中心c_{k }a_{k}(x_{i})=1

分析公式1,可以看出该式累加了每个聚类的所有特征残差,最终得到了K个全局特征。我们理解这K个全局特征表达了聚类范围内局部特征的某种分布,这种分布通过 x_{i}-c_{k} 抹去了图像本身的特征分布差异,只保留了局部特征与聚类中心的分布差异。

通过上面经典VLAD算法介绍,我们可以看出f_{vlad}是将一个若干局部特征压缩为特定大小全局特征的方法。

NetVLAD

经典的Vlad是一个不可导的函数,其主要不可导的地方在于 a_{k}(x_{i}) 是一个符号函数。为了让Vlad变得可导,我们需要将其变得平滑,即可微。根据a_{k}(x_{i})的特性,我们可以将其平滑为一个权重函数,即 x_{i}c_{k} 越相近,a_{k}(x_{i})越接近1,反之越接近0。可设计公式:
\bar{a}(x_{i})=\frac{e^{-\alpha||x_{i}-c_{k}||^2}}{\sum_{k'}{e^{-\alpha||x_{i}-c_{k'}||^2}}} \in(0, 1) (公式2)

这里 \alpha 是一个大于0的参数, \alpha\rightarrow\infty 时, \bar{a}(x_{i}) 越趋近于0和1。将公式2中的 -\alpha||x_{i}-c_{k}||^2 展开,约去e^{-\alpha||x_{i}||^2} 后化简可得公式:

\bar a(x_{i})=\frac{e^{w_{k}^{T}x_{i}+b_{k}}}{\sum_{k'}{e^{w_{k'}^{T}+b_{k'}}}} (公式3)

其中 w_{k}=2\alpha c_{k} , b_{k}=-\alpha||c_{k}||^2 ,公式3就是softmax函数

这样VLAD公式就改写成了
V(j,k)=\sum_{i=1}^N\frac{e^{w_{k}^{T}x_{i}+b_{k}}}{\sum_{k'}e^{w_{k'}^{T}+b_{k'}}}(x_{i}(j)-c_{k}(j)) (公式4)

这里 w_{k},b_{k},c_{k} 就是NetVLAD要学习的参数。

从VLAD到NetVLAD的最大变化是之前需要通过聚类获得参数 c_{k} 变成了需要通过训练得到。这样就可以把VLAD变成了一个分类问题,即设定有K个分类,计算局部特征在这K个分类的差值分布来得到全局特征V(j,k)。

图1 NetVLAD层在网络中的位置
图2 NetVLAD层与公式的对应关系(颜色对应)

从上图2可以看到,从N*D到K*D的转化公式 w_{k}^{T}*x_{i}+b_{k} 是通过1*1卷积实现(蓝色部分);
黄色部分是softmax公式,通过softmax函数实现;
绿色部分是局部特征与聚类中心的残差分布,通过VLAD core来实现。
紫色部分是两步归一化操作:
intra-normalization:是将每个中心点k\in K 的特征分别做归一化,通过此操作抹去了聚类中残差的绝对大小,只保留了残差的分布。
L2 normalization:将得到的K*D数据再整体做一次归一化处理。

NeXtVLAD(大部分摘自jianshu.com/p/19c208bec

NeXtVLAD对NetVLAD的改进总结起来就是增加了VLAD层的非线性参数,但降低了VLAD输出层参数,从而整体参数也降低了。虽然整体参数量下降,但性能并没有下降。其思想类似于ResNet和ResNeXt。

图3 ResNet和ResNeXt结构
图4 NetVLAD网络编码结构

结合图4和公式4: V(j,k)=\sum_{i=1}^N\frac{e^{w_{k}^{T}x_{i}+b_{k}}}{\sum_{k'}e^{w_{k'}^{T}+b_{k'}}}(x_{i}(j)-c_{k}(j)) ,可以将公式4转为 V=L2(\sum FC*C) 。其中FC是 \frac{e^{w_{k}^{T}x_{i}+b_{k}}}{\sum_{k'}e^{w_{k'}^{T}+b_{k'}}} ,是从N*D到K*D的转换,也是softmax部分,这部分参数为N*K;C是 (x_{i}(j)-c_{k}(j)) ,表示簇中心向量,这部分参数为N*K。忽略偏置参数和BN参数,图4虚线内部参数量为2NK,输出为NK,虚线框外的FC层是为了将编码特征映射到低维空间中,包含参数为:N*K*H,所以这块参数共有N*K*(H+2)个,其中框外FC层占大头。所以改进的关键在于减少虚线框输出向量的维度,但是要保证虚线框的拟合能力。

直接减少N或者K不可行,会降低框内网络的拟合能力。所以作者借鉴了ResNeXt的思路,对虚线框中的网络结构进行了调整。

图5 NeXtVLAD网络编码结构

如图5结构,相比图4:

  1. 新模型中先对 x 进行升维( \lambda )得到 \bar{x} ,再对 \bar{x} 进行分组 (G )得到 \tilde{x} ,此时数据纬度变化是[N]-> [ \lambda N ] -> [G, \frac{\lambda N}{G} ]
  2. 簇中心矩阵发生了变化。输入数据维度发生了变化,相应的簇中心矩阵也要发生变化,新模型中簇中心矩阵C的维度变化是[N,K]->[\frac{\lambda N}{G},K]
  3. 权重系数的计算发生了变化。由于原数据进行分组,维度上增加一维,所以相应的占比概率 \alpha (FC,即Softmax)的维度也要增加一维。具体变化是:[K]->[G,K]。同时,由于最后还要将各组的结果综合起来,因此增加了一个新的变量 \beta ,纬度是[G]。
图6 两者的编码公式

我们再来看看参数的变化:

  1. 虚线框内。原来NetVLAD的参数量是2*N*K,现在NeXtVLAD的参数量是 \frac{\lambda N}{G} *K+N* \lambda N *G,两者比较其实就是2N和 \frac{\lambda N}{G} + \lambda N + \lambda GK + \lambda G 的大小。一般 \lambda 大于1,所以前者肯定比后者小。也就是说,结构改变后,虚线框内的参数数量反而增加了。这意味着什么?编码部分的网络的拟合能力并没有削弱,相反,由于新加入了一个网络,可以认为编码网路的拟合能力更强了。
  2. 虚线框外。此时FC层的输入数据维度是\frac{\lambda N}{G}*K,所以NeXtVLAD中FC层的参数数量减少为NetVLAD的 \frac{\lambda}{G} 倍。

总得来说,就是框里面的参数增加了,框外面参数减少了,总参数减少了。“减少模型参数”的目标达到了,同时框里面的参数增加了,非线性也增加了,说明编码特征的性能也没有降低,“保持模型性能”的目标就也达到了。


--摘自

论文阅读之“NeXtVLAD: An Efficient Neural Network to Aggregate Frame-level Features for Large-scale VId...www.jianshu.com图标


未完待续


参考:


https://arxiv.org/pdf/1511.07247.pdfarxiv.org
论文笔记:NetVLAD: CNN architecture for weakly supervised place recognition - 技术刘www.liuxiao.org图标场景识别之NetVLADwww.jianshu.com图标论文阅读之“NeXtVLAD: An Efficient Neural Network to Aggregate Frame-level Features for Large-scale VId...www.jianshu.com图标https://arxiv.org/pdf/1811.05014.pdfarxiv.org

编辑于 2019-12-12

文章被以下专栏收录