在人脸识别应用中,很多场景能够获取某一个体的多幅人脸图像的集合(比如在监控视频中),使用人脸图像集来做识别,这个问题被称为基于模板的人脸识别(template-based face recognition)。
对于多幅图像,当然可以使用单幅人脸图像的识别方法,综合多幅图像的识别结果确定最终的人脸识别结果,但更好的方式是直接基于人脸图像集提取特征,比较人脸图像集的特征相似性。
这涉及到如何聚合多幅人脸图像的特征向量成为一个特征向量,使该特征紧凑而又更具鉴别性的问题。
几天前公布的一篇来自DeepMind和VGG组被ACCV2018接收的论文《GhostVLAD for set-based face recognition》,正是解决这样的问题,文中提出的算法GhostVLAD在具有较高难度的大型真实场景人脸数据集IJB-B上的识别精度,远超过目前的state-of-the-art结果!非常值得参考!
作者信息:
算法原理
作者的想法非常简单,当聚合多个人脸图像特征时,现有的平均池化等方法没能考虑到人脸图像集中一些低质量的图像(比如模糊人脸)的作用,这些图像含有的信息对识别并没有太大的贡献,应该降低这些低质量图像对最终聚合特征的贡献。
一种直接的处理方法是,在人脸图像预处理阶段将低质量图像找出来,降低其贡献权重,但作者认为,端到端自动训练的方式让网络自身去优化识别并降低该部分样本的权重更好。
作者发明的算法网络结构如下:
多幅人脸图像(每次图像个数可不同)通过CNN网络提取特征并L2归一化,然后被送入聚合模块,GhostVLAD网络模块将多个人脸特征聚合称固定维数的特征矩阵(与输入图像个数无关),再通过全连接层FC、BN层和L2归一化为紧凑鉴别的特征。
其中的关键网络模块GhostVLAD既实现特征聚合,同时降低低质量图像的权重,提高高质量图像的聚合权重。
GhostVLAD是如何实现上述功效的呢?
说白了一句话,既然不要人为参与,那就要构建一种网络结构,让网络自动学习对识别不重要的信息,并丢掉它。
作者是在NetVLAD上做出的算法改进,NetVLAD可以理解为一种可微分完全可训练的VLAD编码聚合方法,它的作用大致是自动计算特征聚类中心,计算残差,然后把残差加权,构建聚合特征矩阵,整个过程方便加入到神经网络中。
在NetVLAD中,其聚合的特征矩阵中的元素计算方法如下:
其中K是NetVLAD中手工设置的聚类中心个数,xi是第i个特征向量,ck是可训练的聚类中心,ak、bk是可训练的参数控制着加权的权重。
由上述公式得知,NetVLAD中所有聚类中心ck都参与了聚合,GhostVLAD的改进则是增加聚类中心的个数到K+G,但是增加的聚类中心在构建聚合特征矩阵的时候不参与贡献权重。
如下图所示:
红色位置即标示出的Ghost 聚类中心,后续步骤中被去除,Ghost有“幻象”的意思,可能很多模糊的人脸的确看起来是“幻象”,这也是GhostVLAD名称的由来。
这些多出来的不参与聚合特征矩阵构建的Ghost聚类中心,就相当于给了神经网络丢弃一部分信息使得网络更具鉴别性的可能,而在原来的NetVLAD中是体现不出来的。
实验结果
作者首先设计的实验是比较网络加上GhostVLAD层跟不加的精度,验证其有效性,作者使用的训练集是VGGFace2。实验设置不再赘述,这里直接给出结果。
在IJB-B数据集上的1:1人脸验证结果比较如下图,取得了大幅度的精度提升。
在IJB-B数据集上的1:N人脸识别结果比较如下图,同样取得了大幅度的精度提升。
然后作者将提出的算法GhostVLAD与目前的state-of-the-art比较。
如下图中Table 3和Table 4,在IJB-A和IJB-B上比较验证和识别结果,同样所提算法精度也胜出不少,请注意作者使用的训练集比其中很多state-of-the-art算法规模要小,但依然实现性能超越!
最后作者可视化了使用GhostVLAD后对输入样本权重的影响,发现对于那些低质量模糊人脸的确权重被降低了。
总结:
该文从一个简单的直觉开始,构建了一种帮助神经网络丢弃鉴别性不足的信息的有效方式,大幅改进了基于图像集合的人脸识别方法,算法具有较高的实用价值,思想也很值得借鉴!
值得一提的是,该文中的GhostVLAD方法不仅仅适用于人脸识别,在图像检索、行人重识别等领域也同样适用。
论文地址:
https://arxiv.org/abs/1810.09951
关于代码:
可惜的是,该文目前并无开源代码,但DeepMind和VGG组都是一向乐于分享代码的,期待作者早日开源~