[a] NetVLAD: CNN architecture for weakly supervised place recognition (CVPR 2016)
[b] ActionVLAD: Learning spatio-temporal aggregation for action classification (CVPR 2017)
[c] GhostVLAD for set-based face recognition (ACCV 2018)
本文主要针对VLAD(Vector of locally aggregated descriptors,局部聚合向量)进行探索,这是一种传统的特征提取方法。NetVLAD这篇文章将其融合到CNN卷积网络中去,本文将对其网络中VLAD层做详细介绍,并且围绕上述的相关论文结合其应用特点与改进措施展开探索。第一篇文章本文主要围绕其原理方法介绍,后两篇文章主要针对其具体应用与改进作进一步分析。
VLAD(Vector of locally aggregated descriptors,局部聚合向量)是一种类似于BOF(bag-of-feature)的描述图像的特征方法,可以理解是将局部特征表示成全局特征的编码方法。在这之前,BoF(词袋模型)通常用来描述基于Sift局部特征,在图像检索和分类中有着广泛的应用。相比于BoF,VLAD更加能够对图像的准确表达,得到更具有判别能力的特征,并且便于降维(PCA),同时降维对准确率的影响也较小。类似的方法还有,如FV(Fisher vector),这些传统的方法不具备可导性,因而无法进行反向传播,随着深度学习的普及逐渐被CNN所取代。
论文核心:文中提出一种卷积神经网络结构,可以实现端到端的识别。主要创新点是将传统的VLAD结构嵌入到CNN网络结构中去,得到一个新的VLAD层。NetVLAD可以很容易的运用到任何的CNN结构中,并且可以使用反向传播进行优化。
这篇文章主要针对地点识别问题来进行的研究。地点识别存在着一个很大的挑战是,在光照等其它因素影响下,即便是同一个地点图像之间的差异也是非常大。关键问题是如何找到这样一个具有代表性且具有区分性特征的表达。传统做法是将地点识别问题看作实例检索任务,使用具有不变性特征(SIFT)来表示每一个图像,然后将特征聚合成一个向量表示,这些向量通常对图像具有一定的代表和区分性,方法有BOW,VLAD,FV等。随着近些年卷积网络的不断发展,CNN对图像的表达能力已经非常可观并且有效。虽然CNN能够用在较大的数据集上,但是如果直接迁移使用CNN,那么它作为一个黑盒来提取图像特征,但很大程度上会限制示例级别(instance-level)上的识别任务。所以这篇文章主要抓的问题是:
第一,基于现有的神经网络架构,文章提出一个带有VLAD层的卷积神经网络模型 NetVLAD,它可以被加到任何的CNN结构中,并且可以使用BP算法优化。
第二,为了训练网络,收集了大量不同时间不同角度相同地点的全景图。通过这些数据进行训练是若监督学习,因为我们知道这些地点很接近,但是并不知道图像中的哪个部分决定了这两幅全景图是同一个地方。
第三,使用端到端的方式来学习模型参数,得到的描述特征对于视角和光照情况具有非常高的鲁棒性。
局部聚合向量(VLAD)是广泛应用在示例检索与图像分类中的一种描述池化方法,它能够抓取图像中局部特征在图像中聚合的统计信息。视觉词袋聚合是记录每个词的数目,而VLAD是记录每个词的残差和。
给定
个D维局部图像描述子
作为输入,
个聚类中心作为
作为VLAD的参数,VLAD的输出是一个
维的图像描述向量,为了方便记作
是一个
的矩阵,但是这个矩阵被转换成向量表示,然后在进行归一化,计算公式如下:
其中,
和
表示是第
个局部描述子和第
个聚类中心的第
个特征值。
我们可以简单理解为第i个局部特征属于第k个聚类的权重,也就是说,如果它的值等于1就说明它属于这个聚类的簇。如果是传统方法的VLAD,那么这个值只能是1或者0。直观上看,$ V$ 表征着所有局部特征在每一个聚类簇上的残差
和。
在传统的VLAD中,由于
是一个不连续的值,取值为1或0,并且满足
,使得不能进行反向传播,文章采用一种近似的方式,来对
做软分配(soft assignment)如下式:
这个权重的分配可以把它当作一个模糊聚类的分配方式,根据每个局部特征到聚类中心的距离来生成一个概率函数权重。对于一个局部特征描述
在每个聚类簇下的权重的范围在0~1之间,权重最高的可以理解为该特征离聚类簇中心的聚类最近,权重低说明其离簇中心较远。可以注意到,当
时,这个式子就表示着原始的VLAD结构。
进一步地,可以将上式进行平方展开, e.g.
,可以得到下式:
其中,
,最终,我们可以得到VLAD特征向量为:
可以看出,式中的参数
以及$ \text{c}_k$ 都是可以训练的,和原始的VLAD很近似,NetVLAD通过这种在不同聚类簇上的软分配(soft-assignment)方式,能够有效的聚合了局部特征空间中不同部分(聚类)的一阶残差的统计量。另外我们可以注意到,NetVLAD中包含着三个参数,
和
,原始VLAD中只有一个参数
,这使得NetVLAD相对于传统的方法具有更加的灵活性,并且所有的参数在特定的任``务下可以通过端到端的方式来学习得到。
由图1可以看出,NetVLAD 层可以直接接在卷积网络中的最后一层( )上,把最后一层的特征图看作 个密集的 维局部描述子。soft-assignment过程可以分为两个步骤:1). 通过K个滤波器 将N×D矩阵来学到 ; 2). 卷积输出然后经过一个soft-max 函数,来生成 。
这篇文章通过结合传统的特征提取方法,设计了NetVLAD这种网络结构,使得网络更加有效的利用卷积特征,能够有效的提高对同类别图像的表达能力,并提高分类的区分能力。这也是这篇文章最大的贡献。基于这种网络框架,后续有着很多的别的方向上的应用,如论文[2]、[3]等。
这是一篇发表在CVPR2017年的关于行为识别的文章。行为识别的任务不同于图像分类,图像分类只是单单在图像上提取特征。而关于行为的,输入是一段视频,其重点在于对时间和空间上的特征提取,这篇文章在时间空间上分别独立提取特征,然后以VLAD的方式做pooling聚合,利用NetVLAD网络结构形成端到端训练。
在以往的工作中,通常是是用卷积网络来提取空间上的特征,例如分别对不同帧做卷积。而时间上的特征最常见的还是利用光流的方法,光流是根据相邻帧之间的变化人为提取的特征信息,并且以2D图像的方式表示出来,因此基于双流的方法是目前行为识别中,非常有效的方法之一。这篇文章利用双流法的方式,对图像及其光流特征分别进行提取并聚合。关于特征聚合的方式像VLAD和FV这种,前文已经提到,这篇文章采用了论文[a]中提出的方法,将NetVLAD层网络用在行为识别网络中去。
其中,
表示第
帧图像第
个特征描述子。
,
。可以看出,相对于论文[a],这里将特征维度增加了一维,两个求和操作说明是在时间和空间上进行特征聚合,原理和操作方式不变,还是直接利用卷积计算得到特征的特征分布的统计量。
由于网络是采用的双流法的结构,因此需要对双流进行结合。这篇文章设计了3种结合方式并进行对比。结合方式如图4所示
图中描述的是一个 ‘action words’ (聚类得到)的可视化。每一排代表不同视频中的帧,其中高亮的部分对应着特征图的感受野范围。进一步说,(a)展现的 ‘action word’ 是一个人手持这一个东西。(b)就是人的头发。© 像是一个圆形的像轮子一样的东西。等等。
这篇文章针对行为识别任务,有效的将时空局部特征聚合,利用VLAD建立端到端可训练网络。
这篇文章是DeepMind联合VGG组共同的研究成果。主要针对人脸识别的问题利用VLAD方法开展的研究。
在人脸识别应用中,很多场景能够获取某一个体的多幅人脸图像的集合(比如在监控视频中),适用人脸图像集来做识别,这个问题被称为基于模板的人脸识别(template-based face recognition)。对于多幅图像,当然可以使用单幅人脸图像的识别方法,综合多幅图像的识别结果确定最终的人脸识别结果,但更好的方式是直接基于人脸图像集提取特征,比较人脸图像集的特征相似性。这涉及到如何聚合多幅人脸图像的特征向量成为一个特征向量,使该特征紧凑而又更具鉴别性的问题。
这篇文章作者的想法非常简单,当聚合多个人脸图像特征时,现有的平均池化等方法没能考虑到人脸图像集中一些低质量的图像(比如模糊人脸)的作用,这些图像含有的信息对识别并没有太大的贡献,应该降低这些低质量图像对最终聚合特征的贡献。一种直接的处理方法是,在人脸图像预处理阶段将低质量图像找出来,降低其贡献权重,但作者认为,端到端自动训练的方式让网络自身去优化识别并降低该部分样本的权重更好。
网络结构如上图所示,网络的输入是同一个人多个人脸图像,每次的图像个数可以不同,可以通过CNN网络提取每个图像的特征。这里要注意的是,与论文a和b不同,这里CNN提取的特征不在是卷积层特征,而是每个图像对应的全连接层特征,因为这里要聚合的是不同图像的特征,而不是论文a和b中所提到的的局部特征描述子。将提取得到的特征进行L2归一化处理,再送入到聚合模块。GhostVLAD聚合模块和VLAD原理几乎一样,能够将多个人脸的特征聚合成固定维数的特征矩阵(与图像的输入个数无关),再通过全连接层FC、BN、L2归一化维紧凑的鉴别特征。
其中的关键网络模块GhostVLAD既实现特征聚合,同时降低低质量图像的权重,提高高质量图像的聚合权重。说白了一句话,既然不要人为参与,那就要构建一种网络结构,让网络自动学习对识别不重要的信息,并丢掉它。作者是在NetVLAD上做出的算法改进,前文已提到,NetVLAD可以理解为一种可微分完全可训练的VLAD编码聚合方法,它的作用大致是自动计算特征聚类中心,计算残差,然后把残差加权,构建聚合特征矩阵,整个过程方便加入到神经网络中。
GhostVLAD的改进则是增加聚类中心的个数到K+G,但是增加的聚类中心在构建聚合特征矩阵的时候不参与贡献权重。如下图所示:
红色位置即标示出的Ghost 聚类中心,后续步骤中被去除,Ghost有“幻象”的意思,可能很多模糊的人脸的确看起来是“幻象”,这也是GhostVLAD名称的由来。这些多出来的不参与聚合特征矩阵构建的Ghost聚类中心,就相当于给了神经网络丢弃一部分信息使得网络更具鉴别性的可能,而在原来的NetVLAD中是体现不出来的。
作者首先设计的实验是比较网络加上GhostVLAD层跟不加的精度,验证其有效性,作者使用的训练集是VGGFace2。实验设置不再赘述,这里直接给出结果。
在IJB-B数据集上的1:1人脸验证结果比较如下图,取得了大幅度的精度提升。
在IJB-B数据集上的1:N人脸识别结果比较如下图,同样取得了大幅度的精度提升。
最后作者可视化了使用GhostVLAD后对输入样本权重的影响,发现对于那些低质量模糊人脸的确权重被降低了。如下图所示:
这篇文章从一个简单的直觉开始,构建了一种帮助神经网络丢弃鉴别性不足的信息的有效方式,大幅改进了基于图像集合的人脸识别方法,算法具有较高的实用价值,思想也很值得借鉴!
值得一提的是,该文中的GhostVLAD方法不仅仅适用于人脸识别,在图像检索、行人重识别等领域也同样适用。
这三篇论文都是围绕着VLAD来进行的研究,可以说是论文b和c都是在基于论文a提出的方法对不同的应用领域开展的探索。关于NetVLAD的应用其实也不止这些,如ECCV2018年一篇文章利用NetVLAD方法,将局部点云特征进行聚合,很好了提升了3D目标识别效果。
总的来说,这些应用都离不开VLAD本质上的特点: