目录
1. 人脸识别开源算法库
1.1 OpenCV人脸识别模块
1.2 Dlib人脸识别模块
1.3 SeetaFace6
1.4 DeepFace
1.5 InsightFace
2. 人脸识别开源数据库
2.1 CelebA
2.2 LFW
2.3 MegaFace
2.4 Glint360K
2.5 WebFace260M
人脸识别 (Face Recognition) 是一种基于人的面部特征信息进行身份识别的生物特征识别技术。近年来,随着人工智能、计算机视觉、大数据、云计算、芯片等技术的迅速发展,人脸识别技术取得了长足的进步并且在众多场景中得以成功应用 。
人脸识别的应用模式主要包括三种:
-
人脸验证 (Face Verification): 判定两张人脸图像是否属于同一个人,常用于身份认证如人证核验。
-
人脸辨识 (Face Identification): 给定一张人脸图像,判断是否在注册库中,若在则返回具体的身份信息 , 常用于静态检索或动态布控 。
-
人脸聚类 (Face Clustering): 给定一批人脸图像,将相同人的图像归类到同一个类,不同人的划分为不同的类,常见的应用有智能相册、一人一档等。
本文旨在介绍一些人脸识别开源算法库和开源数据集,并在后续博文陆续分享人脸识别开源算法库的C++和Python实现代码调用Demo,以帮助开发人员加速人脸识别技术应用。
1. 人脸识别开源算法库
1.1 OpenCV人脸识别模块
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法。
官网:https://opencv.org/
Github: https://github.com/opencv/opencv
中国镜像: https://gitcode.net/opencv/opencv
OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。
OpenCV 4.5.4版本开始,DNN模块集成了高性能的人脸检测算法(使用模型YuNet,由OpenCV China团队贡献)和人脸识别算法(使用模型SFace,由北京邮电大学邓伟洪教授课题组贡献)。详见 https://github.com/opencv/opencv_zoo
Face Detection with YuNet
Face Recognition with SFace
1.2 Dlib人脸识别模块
Dlib 是一个十分优秀好用的机器学习库,其源码均由 C++ 实现,并提供了 Python 接口,可广泛适用于很多场景。
官网:http://www.dlib.net/ml.html
Github: https://github.com/davisking/dlib
Dlib提供训练好的人脸检测、人脸关键点检测、人脸识别模型供开发者使用,所以Dlib很适合用于人脸识别开发。模型下载地址: http://dlib.net/files/
1.3 SeetaFace6
2016年9月和2019年8月,中科视拓分别开源了SeetaFace1.0人脸识别引擎、SeetaFace2.0商用级人脸识别算法(Github: https://github.com/seetaface)。
2020年3月31日,中科视拓宣布开放SeetaFace6人脸识别算法(Github: https://github.com/SeetaFace6Open/index)。
SeetaFace6是最新开放的正式级商业版本,突破了之前社区版和企业版错开发布的情况,此次v6版本与商用版本同步推出。
SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别模型。
为了满足不同级别的应用需求,SeetaFace6将开放三个版本模型:
模型名称 | 网络结构 | 速度(I7-6700) | 速度(RK3399) | 特征长度 |
通用人脸识别 | ResNet-50 | 57ms | 300ms | 1024 |
带口罩人脸识别 | ResNet-50 | 34ms | 150ms | 512 |
通用人脸识别(小) | Mobile FaceNet | 9ms | 70ms | 512 |
1.4 DeepFace
DeepFace 是一个轻量级的 Python 人脸识别和面部属性分析(年龄、性别、情感和种族)框架。它是一个混合人脸识别框架,包含最先进的模型:VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace、DeepID、ArcFace、Dlib 和 SFace.
主要功能:人脸检测、人脸对齐特征提取、人脸验证、人脸搜索、人脸聚类、人脸属性识别、人脸跟踪、人脸表情识别、人种识别、性别识别等。
Github:https://github.com/serengil/deepface
1.5 InsightFace
InsightFace 是一个开源的 2D 和 3D 深度人脸分析工具箱,主要基于 PyTorch 和 MXNet。它可以有效实现丰富多样的人脸识别、人脸检测和人脸对齐,并对训练和部署进行了优化。
Github:https://github.com/deepinsight/insightface
2. 人脸识别开源数据库
2.1 CelebA
CelebA 是由香港中文大学开源的人脸属性数据集,广泛用于人脸相关的计算机视觉任务,可用于人脸属性标识、人脸检测以及 landmark 标记等。该数据集包含 10177 个名人身份的 202599 张人脸图片,每张图片都做了特征标记,包含人脸 bbox 标注框、5 个人脸特征点坐标以及 40 个属性标记。
后续基于 CelebA 还开源了一些相关数据集:CelebA-Dialog 、CelebAMask-HQ、CelebA-Spoof。其中 CelebA-Dialog 是一个大规模的视觉-语言人脸数据集,含有丰富的细粒度标签,并根据其语义将一个属性划分为多个等级;CelebAMask-HQ 是由从 CelebA 数据集中挑选的 3 万张高分辨率人脸图像组成,每张图像都有对应 CelebA 的人脸属性的分割掩码。CelebAMask-HQ 的 mask 大小为 512 × 512,有 19 类属性特征,包括皮肤、鼻子、眼睛、眉毛、耳朵、嘴巴、嘴唇、头发、帽子、眼镜、耳环、项链、脖子、布等面部部位和装饰配件;CelebA-Spoof 是一个人脸活体检测数据集,包含 10177 个主题的 625537 张图像,43 个丰富的人脸、光照、环境和欺骗类型属性。在 43 个丰富的属性中,40 个属性属于活体图像,包括所有面部信息,如皮肤、鼻子、眼睛、眉毛、嘴唇、头发、帽子、眼镜;3个属性属于欺骗图像,包括欺骗类型、环境和照明条件。
下载地址:https://mmlab.ie.cuhk.edu.hk/projects/CelebA.html
2.2 LFW
全名是Labeled Faces in the Wild。无约束自然场景人脸识别数据集,该数据集由13000多张全世界知名人士互联网自然场景不同朝向、表情和光照环境人脸图片组成,共有5000多人,其中有1680人有2张或2张以上人脸图片。每张人脸图片都有其唯一的姓名ID和序号加以区分。
LFW数据集主要测试人脸识别的准确率,该数据库从中随机选择了6000对人脸组成了人脸辨识图片对,其中3000对属于同一个人2张人脸照片,3000对属于不同的人每人1张人脸照片。测试过程LFW给出一对照片,询问测试中的系统两张照片是不是同一个人,系统给出“是”或“否”的答案。通过6000对人脸测试结果的系统答案与真实答案的比值可以得到人脸识别准确率。
这个数据集是人脸评估一定会用到的一个数据集,基本都是正脸。这个数据集也是最简单的,基本主流算法都能跑到99%以上,貌似有6对label错了,所以最高正确率应该是99.9%左右。这个都跑不到99%的话别的数据集表现效果会更差。一般来说这个数据集是用来做人脸识别验证的。
下载链接:http://vis-www.cs.umass.edu/lfw/
2.3 MegaFace
MegaFace 是由华盛顿大学(University of Washington)计算机科学与工程实验室于2015年针对名为 ”MegaFace Challenge” 的挑战而发布并维护的公开人脸数据集,是目前最为权威热门的评价人脸识别性能的指标之一。数据集中的人脸图像均采集自Flickr creative commons dataset,共包含690,572个身份共1,027,060张图像。这是第一个在百万规模级别的人脸识别算法测试标准。
同LFW数据集,MegaFace 数据集中的图像也产生于自然场景,具备光照、表情、姿势和遮挡等干扰因素。但与LFW不同的是,MegaFace数据集中的人物身份均为普通人而非公众人物,并在收集过程中选取了图像的分辨率,并且保证了在图片来源在世界范围内的均匀分布。另外,在评测方法上,MegaFace 着眼于在百万级别的数据库中的1:N搜索性能。因此,相比于LFW数据集,MegaFace更贴近实际应用。
MegaFace挑战将从Flickr Dataset中挑选的百万张人脸图像作为测试时的干扰项(distractors),而使用的搜索测试集(probes)来自于FaceScrub 数据集,共包含530个名人的10万张人脸图像,且性别比例大致相同(男性265人共55,472张,女性265人共52,076张),同一身份间人脸图像的差异也较大。为了保证同LFW的可比性,发布方随机选择了其中80个超过50张图像的身份,共4000张图片,作为最终的搜索测试集。
与LFW相同,MegaFace评测也允许使用数据集以外的图片对模型进行训练。但由于MegaFace的百万人脸数据库均来自于普通人,在训练过程中作弊的难度很大,因此评测结果更加可信。
下载地址:https://megaface.cs.washington.edu/dataset/download.html
2.4 Glint360K
Glint360K是格灵深瞳开源,通过清理,合并和发布的面部识别数据集,包含 36 万类别的 1800 万张图像。
下载地址:https://github.com/deepinsight/insightface/tree/master/recognition/partial_fc#glint360k
2.5 WebFace260M
WebFace260M由芯翌科技与清华大学自动化系智能视觉实验室合作推出,完全基于全球互联网公开人脸数据。它的问世,一举打破了此前人脸数据集的规模:不仅规模最大,也是首次在人脸ID数目和图片数,分别达到了400万和2.6亿的规模。
在对WebFace260M进行清洗操作后,便得到了WebFace42M。据介绍,它是目前全球规模最大、可直接用于训练的干净人脸数据集:包含200万ID、4200万图片。
该数据集及其子集只能用于学术研究。目前,它仅对学校和研究所等非营利机构开放,对公司和企业不开放。如果要下载WebFace260M,请发送电子邮件至 info@face-benchmark.org