Scalable Face Image Retrieval with Identity-Based Quantization and Multi-Reference Re-ranking
z

Scalable Face Image Retrieval with Identity-Based Quantization and Multi-Reference Re-ranking

2010年CVPR的论文,作者是Zhong Wu,Tsinghua&MSAR


Motivation

  • 底层的视觉特征对人脸图像没有很好的鉴别力
    • discriminative power => to differentiate different persons
    • to tolerate the variations of the same person
  • 人脸中的一些属性被忽略

Overall View

  • 总的流程是先进行索引,然后进行细粒度的re-rank 。(coarse to fine 的模式)
  • 在索引建立的阶段,设计了一个component-based local feature,feature根据identity-bsed quantization schema量化成visual words,根据这些visual words进行倒排索引的建立。同时,global的feature因设成了哈希码保存在40bytes中。
  • 在re-rank阶段,根据40bytes的hamming distance进行排序

Component-Based Local Features

image-20181225172027587

​ 首先定义了五个region,每个region用一个$5 \times 7$ 的grid进行划分。 对每一个gride取一个正方形的patch,然后对其进行T3hS2特征的提取,特征量化成visual words,然后进行倒排索引。

这么划分的好处:
​ 1 相比于全脸进行gride,这样更能够在表情变化和姿势变化中提炼出robust的人脸特征。
​ 2 不同region的gride之间有重合,这样能减少region定位时的一些误差。

​ 对gride进行了编号,当两个feature进行比较的时候,只有同一个编号里的feature都match了,才确定是match的。

​ 接下来,就要对每一个gride的feature聚类来产生visual word了。但是,在人脸场景下,类内的差别又是后会大于类间的差异。在一个人姿势,表情差异变化较大的时候,直接使用k-means聚类的效果往往不太好,这样的话,量化误差会降低检索准确度。因此,论文提出来一个 identity-based quantization scheme。

image-20181225183012146

image-20181225183028875

​ 使用的方式是监督学习,假设训练集中有P个人,每个人有T张不同的人脸图像。那么,<persion_id, position_id> 组成了一个二元组,形成一个visual word。这样,每一个visual word可以的含义就是:example-based representation containing multiple examples.

这里可以这样理解:

  1. 从类间角度出发,假设训练样本中的不同类型的人脸都被包含进去,那么每一人都具有一定的代表性。
  2. 从类内角度出发,而对每一个人的图像如果足够多的话,每一个人的图像包含了这个人不同的表情,光照,姿态造成的差异。

当以一个查询来的时候,提取这$5\times7\times5 = 175$个descriptor,然后对每一个discriptor独立地进行最邻近搜索。
$$
I D \left( q ^ { j } \right) = \arg \min _ { i } \lbrace \min _ { p } \lbrace d \left( q ^ { j } , p _ { i } ^ { j } \right) , p _ { i } ^ { j } \in S _ { i } ^ { j } \rbrace \rbrace
$$
其中,$\mathcal { S } _ { i } ^ { j }$ 表示训练集中第i个人的第j个region,那么他就代表了一个visual word <persion_id=i, position_id=j> 。可以理解为,当有一个查询来的时候,对每一个identity在对应的第j个区域进行查询,找到距离最小的那个identity,作为这个查询第j部分的量化结果。然而,这里采取的是soft quantization,意思是,这里每一个region的feature量化之后,都取前R个最小的量化结果(R个identity)。


Global Multi-Reference Re-Rank

image-20181225200606031

先对人脸进行对齐,然后是用DoG过滤掉阴影的变化,然后用一个encoder,对每一个像素点生成一个离散的数值,对每个图像进行gide,cell,得到这些离散值的频率直方图,然后进行PCA,得到一个400维的特征向量。

如何进行离散操作呢?论文提出,在特征空间中寻找N个投影方向,对训练集中的数据对这个N个方向进行投影,然后对每个方向上投影数值的均值作为阈值。然后对于一个新来的特征,对着N个方向进行投影,如果投影值超过阈值,就为1,不超过就为0.

然后,这里的Multi-Reference指的是
$$
D = d ( Q , I ) + \alpha \cdot \frac { 1 } { | \mathbf { R } | } \sum _ { i } d \left( R _ { i } , I \right)
$$
Q指的是查询图像,$\mathbf { R } = \lbrace R _ { i } \rbrace ​$ 指当前的reference set,$d ( \cdot , \cdot )​$ 是汉明距离,$I​$ 指的是从结果中抽取到的图片,迭代的选取图片加入到reference set,知道D大于某个阈值或者reference set中的数量达到一个阈值。

这样做主要是为了保证,返回的图片中,除了要保证和查询结果相似之外,还要保证返回的结果间也是相似的。