Clustering Millions of Faces by Identity 论文阅读

这里只记录我在读此篇论文时认为重要的章节部分。

一、论文背景和贡献

1,论文背景

1)在2013年波士顿马拉松爆炸案发生后,有成千上万的图像和视频需要在短时间内分析调查,从而缩小调查范围。

2)人脸聚类也试图解决以下问题:给定大量未标记的人脸图像,将它们聚为这些数据中的单个标识。这种情况出现在从社交媒体到执法等许多不同的应用场景中。

2,论文贡献

一种改进的聚类算法,改进了Rank-Order Clustering提出的方法。贡献点如下:

   1,利用近似最近邻方法的可扩展性,获得更好的聚类精度;
   2,基于深度网络的大规模人脸识别的大规模人脸聚类实验;
   3,提出的人脸聚类方法对视频的适用性做了初步调查;
   4,定义了每个聚类质量度量。

二、聚类算法

1,人脸聚类流程

Clustering Millions of Faces by Identity 论文阅读

2,获取人脸特征

Clustering Millions of Faces by Identity 论文阅读

获取人脸特征步骤:
1,用dlib进行68个特征点的提取
2,用dlib进行人脸对齐(face align)
3,构建卷积神经网络提取人脸特征
4,最终输出320维的人脸feature

3,Rank-Order Clustering 改进前的算法

是一种层级聚类

基于排序距离的聚类算法(人脸与其他人脸的相似度的排序)

3.1 层级聚类

Clustering Millions of Faces by Identity 论文阅读

1,将所有数据点本身作为簇;
2,然后找出距离最近(相似度最高)的两个簇,且其距离小于给定的threshhold,则将它们合为一个;
3,不断重复以上步骤直到不能再合并(大于threshhold)。

4,特点是不需要指定聚类数量K。

3.2 Rank-Order Distance

First step: a set of unlabeled face images

Clustering Millions of Faces by Identity 论文阅读

Second step: nearest neighbor lists are computed for each image

Clustering Millions of Faces by Identity 论文阅读

Third step: 

Clustering Millions of Faces by Identity 论文阅读

Clustering Millions of Faces by Identity 论文阅读

3.3 Rank-Order Distance Measure

Clustering Millions of Faces by Identity 论文阅读

fa(i)表示a的列表中第i张脸,Ob(fa(i))则表示脸fa(i)在b的列表中的序号位置。

Clustering Millions of Faces by Identity 论文阅读Clustering Millions of Faces by Identity 论文阅读


3.4 Approximate Rank-Order Clustering 改进后的聚类算法

Rank-Order Clustering方法存在一个明显的问题,因为它需要计算数据集中的每个样本的最近邻样本列表,如果直接计算,时间成本为O(n2)。

Approximate Rank-Order Clustering改进点:
   1.使用opencv FLANN库的随机k-d tree算法求出每个人脸图片的k个最近邻图片排序。

   2.不计算每一个人脸的所有最近邻列表,而是计算每一个人脸的k个最近邻列表。

改进点 1 使用opencv FLANN库的k-d tree算法求出每个人脸图片的近邻图片排序:

步用于前面的Second step: nearest neighbor lists are computed for each image

1,k-d tree是k-dimensional树的简称,利用k-d tree搜索,利用特殊的结构存储数据,能减少大部分的数据搜索,从而减少距离计算的次数。
2,对于中等规模的数据集,时间复杂度能降到O(nlogn)。

3,但是要注意,kd树更适合于数据样本数目远大于空间维数的k近邻搜索,当空间维数接近于样本数目时,它的效率会迅速下降,接近于线性扫描。

改进点2 计算每一个人脸的k个最近邻列表:

Clustering Millions of Faces by Identity 论文阅读

其中Ib(x,k)是一个指示函数,如果Ob(fa(i))输入b的k近邻中,则为值为0,否则为1。忽略了距离排序顺序,只关注在k近邻中还是不在。

Clustering Millions of Faces by Identity 论文阅读

举例:If k= 4, dm(a,b) = (0+1+0+1) = 2

簇距离归一化公式:

Clustering Millions of Faces by Identity 论文阅读

3.5 聚类步骤:

为数据集中的每一张脸提取深度特征;
2) 为数据集中的每个人脸计算一组k最近邻列表;
3) 计算每个人脸与其他人脸的簇距离,用前面的归一化公式;
4) 合并距离低于阈值的所有人脸对。

三、算法评估

请参考博文 人脸聚类Fscore评估

四、实验结果

Clustering Millions of Faces by Identity 论文阅读

五、总结

基于rank-order cluster论文,利用FLANN库的随机 k-d tree算法计算每个人脸的rank-order,并从计算每个人脸的rank-order distance改进为只计算前k个近邻人脸的距离。从而提高了准确率,减少了算法的时间复杂度。


介绍了一种评估人脸聚类算法Fscore的计算方法。