人脸识别常用数据集介绍(附下载链接)及常用评估指标

人脸识别常用数据集介绍(附下载链接)及常用评估指标

为什么要聊到数据集这个话题..因为数据集的noise对训练效果的影响很大!很长一段时间MegaFace的效果都上不去,就是因为数据集噪声的原因。而且自己在训练人脸的时候,如果不对数据集的噪声和属性有一点了解,对训练结果可能会有误判,甚至越训练越差...在选择数据集的时候不要一味求大,有的时候选择一个noise比例极高的大数据集,效果还不如选择一个clean的小数据集呢,可以参见这篇论文The Devil of Face Recognition is in the Noise

LFW

全名是Labeled Faces in the Wild.这个数据集是人脸评估一定会用到的一个数据集,包含了来自1680的13000张人脸图,数据是从网上搜索来的。基本都是正脸。这个数据集也是最简单的,基本主流算法都能跑到99%以上,貌似有6对label错了,所以最高正确率应该是99.9%左右。这个都跑不到99%的话别的数据集表现效果会更差。一般来说这个数据集是用来做人脸识别验证的。

下载链接:LFW Face Database : Main


CelebFaces

总共包含10177个人的202599张图片,也是从搜索引擎上爬过来的,噪声不算多,适合作为训练集。同时这个数据对人脸有一些二元标签,比如是否微笑,是否戴帽子等。如果需要特定属性的人脸,也可以从中获取。40个属性如下(引用自芯尚刃:CelebA数据集详细介绍及其属性提取源代码 ):

  1. 5_o_Clock_Shadow:刚长出的双颊胡须
  2. Arched_Eyebrows:柳叶眉
  3. Attractive:吸引人的
  4. Bags_Under_Eyes:眼袋
  5. Bald:秃头
  6. Bangs:刘海
  7. Big_Lips:大嘴唇
  8. Big_Nose:大鼻子
  9. Black_Hair:黑发
  10. Blond_Hair:金发
  11. Blurry:模糊的
  12. Brown_Hair:棕发
  13. Bushy_Eyebrows:浓眉
  14. Chubby:圆胖的
  15. Double_Chin:双下巴
  16. Eyeglasses:眼镜
  17. Goatee:山羊胡子
  18. Gray_Hair:灰发或白发
  19. Heavy_Makeup:浓妆
  20. High_Cheekbones:高颧骨
  21. Male:男性
  22. Mouth_Slightly_Open:微微张开嘴巴
  23. Mustache:胡子,髭
  24. Narrow_Eyes:细长的眼睛
  25. No_Beard:无胡子
  26. Oval_Face:椭圆形的脸
  27. Pale_Skin:苍白的皮肤
  28. Pointy_Nose:尖鼻子
  29. Receding_Hairline:发际线后移
  30. Rosy_Cheeks:红润的双颊
  31. Sideburns:连鬓胡子
  32. Smiling:微笑
  33. Straight_Hair:直发
  34. Wavy_Hair:卷发
  35. Wearing_Earrings:戴着耳环
  36. Wearing_Hat:戴着帽子
  37. Wearing_Lipstick:涂了唇膏
  38. Wearing_Necklace:戴着项链
  39. Wearing_Necktie:戴着领带
  40. Young:年轻人

这些标签的属性在下载文件中的list_attr_celeba.txt中,在使用的时候,由于它不每一列都分开的,而是所有属性按一列来读取,所以在使用的时候,注意使用line.split()进行切分。(不是line.split(" "),因为每个属性不全都是按一个空格隔开的,有的时候是用两个空格隔开的,自己在这里踩过坑所以就记录一下..

下载链接:Large-scale CelebFaces Attributes (CelebA) Dataset

CFP

这个数据集由500个identity的约共7000张图片组成,这个数据集的特别之处在于对于每个人,它有10张正面图像和4张侧面图像,这对于想要做侧脸识别的同学还是很有帮助的。我也写了一篇关于侧脸识别的博文:zhuanlan.zhihu.com/p/61 有兴趣的可以看一看

下载链接: cfpw.io/cfp-dataset.zip


VGG-Face

来自2622个人的2百万张图片。每个人大概要2000+图片,跟MS-Celeb-1M有很多重叠的地方(因为都是从搜索引擎来的),这个数据集经常作为训练模型的数据,噪声比较小,相对来说能训练出比较好的结果。

下载链接:VGG Face Dataset


CASIA-WebFace

该数据集是从IMBb网站上搜集来的,含10K个人的500K张图片。同时做了相似度聚类来去掉一部分噪声。CAISA-WebFace的数据集源和IMDb-Face是一样的,不过因为数据清洗的原因,会比IMDb-Face少一些图片。噪声不算特别多,适合作为训练数据。

下载链接:drive.google.com/file/d


MS-Celeb-1M

100K人的共100M图片,来自搜索引擎。这个数据集非常大,没有清洗过,噪声很大,很难。我用未经过清洗的MS-Celeb-1M训练google facenet和Insightface的accuracy都比较低。

下载链接:MS-Celeb-1M: Challenge of Recognizing One Million Celebrities in the Real World - Microsoft Research

然而没有被请洗过的MS1M数据集噪声太大,所以其实更推荐使用iBUG清洗过的数据集(以下链接来自insightface团队):

pan.baidu.com/s/1nxmSCc


MegaFace

672K人的4.7M张图片,做过一些清洗,不过依然有噪声,不同人的图片可能混到了一起。相比来说噪声可能比MS-Celeb-1M小一点,但还是挺大的..这个数据集是由两个数据集组合而来:Facescrub和FGNet,所以如果你要使用多个数据集,注意有没有重合哦!

下载链接: MegaFace


各个数据集的scale和噪声比例见下图(来自论文the devil of face recognition is in the Noise)。这篇论文也有提到清洗数据的噪声能够有效提升训练表现,所以大家自己在做人脸相关的检测时也要心中有数,除了可以优化算法,优化数据集也是一种方向。

还有一些数据集陆陆续续地补充上去~


人脸识别指标

虽然跑库的时候我们一般还是看Accuracy或者Recall,不过其实实际应用的时候更多的是会用TAR(True Accept Rate)和FAR(False Accept Rate)。

FAR = \frac{非同人分数>T}{非同人比较的次数}  \\

这个指标的意思是我们拿一对不同的人的照片去测试的时候,如果两个人的特征向量之差超过了设定的阈值(也就是把这两个人认成了同一个人)的次数比上所有不同的人的pairs的对比次数。也就是把不同的人识别成同一个人的概率啦。当然是越小越好

那么TAR则是表示正确接受的比例。就是同一个人的照片被判别为同一个人的概率。

TAR = \frac{同人分数>T}{同人比较的次数} \\

一般我们会计算的是在FAR为多少(比如 10^{-3} )的情况下TAR为多少

参考文献:

The Devil of Face Recognition is in the Noise

deepinsight/insightface

blog.csdn.net/liuweiyux

编辑于 2019-04-04

文章被以下专栏收录