人脸聚类Fscore评估
引子
在之前做人脸智能相册时,为了给客户演示,需要拿出我们的demo与市场上其他产品如小米,华为等的准确率比较。但当时没有找到什么好的方法进行评估,因此自己发明了一种方法。但并不专业。所以这里要介绍在看人脸聚类论文《Clustering Millions of Faces by Identity》时发现有4篇左右的论文都提到的F score测量的方法。认为对我们有帮助。下面就介绍论文中是如何计算F score的。
论文中Fsocre 计算
pairwise precision
属于同一人的pairs数目”占“该类簇pairs数目”的比例比如上图的准确率P = 1/(3+2) = 1/5 (其中3是左边的聚类结果中有3个样本,一一对应就是3对,右边的聚类结果中除了U1,U2外有两对)
论文中U1,U2是从网络下载的unknow lable,U1,U2不是一对),所以不计算在内。
Pairwise recall
“属于同一人的pairs数目”占“该个体真实的pairs数目”
比如上图召回率是R =1/3 (只关注了A样本,没有关注U1,U2,以及B1)
Fscore
TP,FP,FN帮助理解pairwise precision和 recall
由于上面内容太晦涩,所以各种在网上查资料,才找到这篇帮组我们理解的内容。
其中提到的RI计算方式中的TP,FP,FN。刚好是我们计算Fscore需要的。我们可以借助这个网页内容理解聚类结果中的TP,FP,FN。
如图,认为x代表一类文档,o代表一类文档,方框代表一类文档,完美的聚类显然是应该把各种不同的图形放入一类。
其中TP是指被聚在一类的两个文档被正确分类了,FP只不应该放在一类的文档被错误的放在了一类,FN只不应该分开的文档被错误的分开了。对上图
TP+FP = C(2,6)+C(2,6)+C(2,5)=15+15+10 = 40
其中C(n,m)是指在m中任选n个的组合数。
TP = C(2,5)+C(2,4)+C(2,3)+C(2,2)=15+15+10 = 20
FP = 40 - 20 = 20
TP+FN=C(2,8)+C(2,5)+C(2,4) = 28+10+6 = 44(这里计算的是每种文档真实有多少对,比如x有8个则有28对等)
通过上面的计算,则能得出:P = 20/40 = 50%
R = 20/44 = 45.5%
F = 2*P*R/(P+R) = 0.476
通过这部分对TP,FP,FN的理解,我们更能明白多分类或者聚类时算几个簇的TP等要全部加起来。反过来也能说明第一部分论文中我们的理解是正确的。
聚类Fscore计算实际举例
使用人脸相册app进行对50张测试样本,进行测试结果如下:
jianwen:3/6 (表示有6张图片只有3张正确分在了一个簇,注意这次测试结果没有出现将一个人的脸分错到别的人脸的簇中的情况)
jianwenlaopo:3/3
jianwenmama:0/2
jiujun:7/8
liuqing:9/10
linyujing:7/8
meinv:2/3
mengmeng:7/8
xiaoxiao:0/2
由于这里计算F score用的是每张样本的一一对应有多少对。因此引出了计算多少对的公式。其中N代表样本数。
Pairs = 1/2*N*(N-1)
如一个聚类簇里有3个人脸样本,则有3对人脸。
如一个聚类簇里有5个人脸样本,则有10对人脸。
然后计算如下:
小结
通过对这篇论文的学习,我们学习到了一种人脸聚类算法准确率的评估方法。并且看到有以下几篇论文都提到了用F score的方式进行人脸聚类算法评估:
Clustering Millions of Faces by Identity
Face Clustering Representation and Pairwise
An Efficient Approach for Clustering Face Images