目前随着计算机视觉和深度学习领域中技术的不断发展,在理想条件下的人脸识别精确度已经达到或者超越人类的表现。基于深度学习的人脸识别方法主要分为两大类, 第一类是搜集大数据,通过更多更全的数据集让模型学会去识别人脸的多样性。第二类方法采用的是合成的思路,通过3D模型等合成不同类型的人脸,增加数据集。本文主要为大家介绍第一类方法。

目前采用大规模数据集这类方法适合百度/腾讯/谷歌等大企业,未来可以搜集更多更全的训练数据集。数据集包括了同一个体不同年龄段的照片,不同人种的照片,不同类型(美丑等)。通过更全面的数据,提高模型对现场应用中人脸差异的适应能力。

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

LFW数据集(Labeled Faces in the Wild)是目前用得最多的人脸图像数据库。该数据库共13,233幅图像,其中5749个人,其中1680人有两幅及以上的图像,4069人只有一幅图像。图像为250*250大小的JPEG格式。绝大多数为彩色图,少数为灰度图。该数据库采集的是自然条件下人脸图片,目的是提高自然条件下人脸识别的精度。该数据集有6中评价标准:

一,Unsupervised;
二,Image-restricted with no outside data;
三,Unrestricted with no outside data;
四,Image-restricted with label-free outside data;
五,Unrestricted with label-free outside data;
六,Unrestricted with labeled outside data。
目前,人工在该数据集上的准确率在0.9427~0.9920。在该数据集的第六种评价标准下(无限制,可以使用外部标注的数据),许多方法已经赶上(超过)人工识别精度,比如face++,DeepID3,FaceNet等。

下面我将按照正确率由低到高给大家介绍这些网络模型, 同时我文中也写出了所有的论文题目, 大家可以通过关注我的百家号, 回复 人脸识别 获得论文原文.

DeepFace(0.9735 )

参考文献:Deepface: Closing the gap to humal-level performance in face verification
1.1 简介
常规人脸识别流程是:人脸检测-对齐-表达-分类。本文中,我们通过额外的3d模型改进了人脸对齐的方法。然后,通过基于4million人脸图像(4000个个体)训练的一个9层的人工神经网络来进行人脸特征表达。我们的模型在LFW数据集上取得了0.9735的准确率。该文章的亮点有以下几点:一,基于3d模型的人脸对齐方法;二,大数据训练的人工神经网络。

1.2 人脸对齐方法
文中使用的人脸对齐方法包括以下几步:1,通过6个特征点检测人脸;2,剪切;3,建立Delaunay triangulation;4,参考标准3d模型;5,将3d模型比对到图片上;6,进行仿射变形;7,最终生成正面图像。

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

1.3 网络结构图

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

深度神经网络

1.4 结果
该模型在LFW数据集上取得了0.9735准确率,在其它数据集比如Social Face Classification (SFC) dataset和YouTube Faces (YTF) dataset也取得了好结果,详情请参见原文。

DeepID(0.9745 )

参考文献:DeepID3: Face Recognition with Very Deep Neural Networks

2.1 简介

深度学习在人脸识别领域的应用提高了人脸识别准确率。本文中,我们使用了两种深度神经网络框架(VGG net 和GoogleLeNet)来进行人脸识别。两种框架ensemble结果在LFW数据集上可以达到0.9745的准确率。文章获得高准确率主要归功于大量的训练数据,文章的亮点仅在于测试了两种深度卷积神经网络框架。

2.2 深度神经网络架构

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

两种深度卷积神经网络框架

Face++(0.9950)

参考文献:Naive-Deep face Recognition: Touching the Limit of LFW Benchmark or Not?

face++从网络上搜集了5million张人脸图片用于训练深度卷积神经网络模型,在LFW数据集上准确率非常高。该篇文章的网路模型很常规(常规深度卷积神经网络模型),但是提出的问题是值得参考的。

问题一:他们的MegviiFaceRecognitionSystem经过训练后,在LFW数据集上达到了0.995的准确率。在真实场景测试中(ChineseID(CHID)),该系统的假阳性率非常低。但是,真阳性率仅为0.66,没有达到真实场景应用要求。其中,年龄差异(包括intra-variation:同一个人,不同年龄照片;以及inter-variation:不同人,不同年龄照片)是影响模型准确率原因之一。而在该测试标准(CHID)下,人类表现的准确率大于0.90.

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

在CHID中出错的样本

问题二:数据采集偏差。基于网络采集的人脸数据集存在偏差。这些偏差表现在:1,个体之间照片数量差异很大;2,大部分采集的照片都是:微笑,化妆,年轻,漂亮的图片。这些和真实场景中差异较大。因此,尽管系统在LFW数据集上有高准确率,在现实场景中准确率很低。

问题三:模型测试加阳性率非常低,但是现实应用中,人们更关注真阳性率。
问题四:人脸图片的角度,光线,闭合(开口、闭口)和年龄等差异相互的作用,导致人脸识别系统现实应用准确率很低。

因此,该文章提出未来进一步研究的方向。方向一:从视频中提取训练数据。视频中人脸画面接近于现实应用场景(变化的角度,光照,表情等);方向二:通过人脸合成方法增加训练数据。因为单个个体不同的照片很困难(比如,难以搜集大量的单个个体不同年龄段的照片,可以采用人脸合成的方法(比如3D人脸重建)生成单个个体不同年龄段的照片)。该文章提出的方向在后续方法介绍中均有体现。

FaceNet(0.9963)

参考文献:FaceNet: A Unified Embedding for Face Recognition and Clustering

4.1 简介

作者开发了一个新的人脸识别系统:FaceNet,可以直接将人脸图像映射到欧几里得空间,空间的距离代表了人脸图像的相似性。只要该映射空间生成,人脸识别,验证和聚类等任务就可以轻松完成。该方法是基于深度卷积神经网络,在LFW数据集上,准确率为0.9963,在YouTube Faces DB数据集上,准确率为0.9512。FaceNet的核心是百万级的训练数据以及 triplet loss。

4.2 triplet loss

triplet loss是文章的核心,模型将图像x embedding入d-维的欧几里得空间。我们希望保证某个个体的图像和该个体的其它图像 距离近,与其它个体的图像距离远。如图5-1所示:

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

triplet loss示意图

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

4.3 深度卷积神经网络

采用adagrad优化器,使用随机梯度下降法训练CNN模型。在cpu集群上训练了1000-2000小时。边界值设定为0.2。总共实验了两类模型,参数如下所示。

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

CNN模型1

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

CNN模型2

baidu的方法(0.9977)

参考文献:Targeting Ultimate Accuracy : Face Recognition via Deep Embedding

5.1 简介
本文中,作者提出了一种两步学习方法,结合mutil-patch deep CNN和deep metric learning,实现脸部特征提取和识别。通过1.2million(18000个个体)的训练集训练,该方法在LFW数据集上取得了0.9977的成绩。

5.2 multi-patch deep CNN
人脸不同区域通过深度卷积神经网络分别进行特征提取。如图6-1所示。

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

multi-patch 示意图

5.3 deep metric learning

深度卷积神经网络提取的特征再经过metric learning将维度降低到128维度,如图7-2所示。

深度学习入门系列教程:基于深度学习的人脸识别算法发展综述(上)-深度学习中文社区

metric learning示意图