自动人脸识别的经典流程分为三个步骤:人脸检测、面部特征点定位(又称Face Alignment人脸对齐)、特征提取与分类器设计。一般而言,狭义的人脸识别指的是"特征提取+分类器"两部分的算法研究。

在深度学习出现以前,人脸识别方法一般分为高维人工特征提取(例如:LBP, Gabor等)和降维两个步骤,代表性的降维方法有PCA, LDA等子空间学习方法和LPP等流行学习方法。在深度学习方法流行之后,代表性方法为从原始的图像空间直接学习判别性的人脸表示。

一般而言,人脸识别的研究历史可以分为三个阶段。在第一阶段(1950s-1980s),人脸识别被当作一个一般性的模式识别问题,主流技术基于人脸的几何结构特征。在第二阶段(1990s)人脸识别迅速发展,出现了很多经典的方法,例如Eigen Face, Fisher Face和弹性图匹配,此时主流的技术路线为人脸表观建模。在第三阶段(1990s末期到现在),人脸识别的研究不断深入,研究者开始关注面向真实条件的人脸识别问题,主要包括以下四个方面的研究:1)提出不同的人脸空间模型,包括以线性判别分析为代表的线性建模方法,以Kernel方法为代表的非线性建模方法和基于3D信息的3D人脸识别方法。2)深入分析和研究影响人脸识别的因素,包括光照不变人脸识别、姿态不变人脸识别和表情不变人脸识别等。3)利用新的特征表示,包括局部描述子(Gabor Face, LBP Face等)和深度学习方法。4)利用新的数据源,例如基于视频的人脸识别和基于素描、近红外图像的人脸识别。

2007年以来,LFW数据库成为事实上的真实条件下的人脸识别问题的测试基准。LFW数据集包括来源于因特网的5,749人的13,233张人脸图像,其中有1680人有两张或以上的图像。LFW的标准测试协议包括6000对人脸的十折确认任务,每折包括300对正例和300对反例,采用十折平均精度作为性能评价指标。

自从LFW发布以来,性能被不断刷新。2013年之前,主要技术路线为人造或基于学习的局部描述子+测度学习。2014年之后,主要技术路线为深度学习。

2014年以来,深度学习+大数据(海量的有标注人脸数据)成为人脸识别领域的主流技术路线,其中两个重要的趋势为:1)网络变大变深(VGGFace16层,FaceNet22层)。2)数据量不断增大(DeepFace 400万,FaceNet2亿),大数据成为提升人脸识别性能的关键。

在前DL时代,以VIPL实验室三代半SDK为例,关键技术点包括1)分块人脸特征融合:Gabor特征+LPQ特征。 2)子空间学习进行特征降(PCA+LDA)。3)融合多尺度的人脸归一化模板。SDK3.5的相关技术在FRGC实验4上取得了0.1%错误接受率条件下96%的确认率,至今依然是FRGC数据集上最好结果。

需要指出的是,虽然深度学习强调特征学习,但学习特征并不是DL的专利。在前DL时代,利用浅层模型从图像中直接学习表示和基于人造描述子学习语义表示(例如学习中层属性表示的Attributes and Simile Classifier和学习高层语义表示的Tom-vs-Pete)的工作都见于相关文献。

2014年,Facebook发表于CVPR14的工作DeepFace将大数据(400万人脸数据)与深度卷积网络相结合,在LFW数据集上逼近了人类的识别精度。其中DeepFace还引入了一个Local Connected卷积结构,在每个空间位置学习单独的卷积核,缺点是会导致参数膨胀,这个结构后来并没有流行起来。

DeepID家族可以看作是DL时代人脸识别领域的一组代表性工作。最早的DeepID网络包括四个卷积层,采用softmax损失函数。DeepID2在DeepID网络的基础上,同时考虑了分类损失(identity loss) 和确认损失(verification loss), 这两种损失在Caffe深度学习框架中分别可以采用softmaxwithloss层和contrastive loss层来实现。DeepID2+网络则是在DeepID2的基础上,增加了每一层的辅助损失函数(类似Deep Supervised Network)。

Google发表于CVPR2015的工作FaceNet采用了22层的深层卷积网络和海量的人脸数据(800万人的2亿张图像)以及常用于图像检索任务的Triplet Loss损失函数。值得一提的是,由于人脸类别数达到800万类,如果使用softmax loss,输出层节点将达到800万个,需要至少32GB显存(假设上一个隐层节点1024个,采用单精度浮点数),而Triplet Loss则不需要额外占用显存。FaceNet在LFW数据集上十折平均精度达到99.63%,这也是迄今为止正式发表的论文中的最好结果,几乎宣告了LFW上从2008年到2015年长达8年之久的性能竞赛的结束。

paper 50 :人脸识别简史与近期进展的更多相关文章

  1. paper 97:异质人脸识别进展的资讯

    高新波教授团队异质人脸图像识别研究取得新突破,有望大大降低刑侦过程人力耗费并提高办案效率         近日,西安电子科技大学高新波教授带领的研究团队,在异质人脸图像识别研究领域取得重要进展,其对香 ...

  2. paper 90:人脸检测研究2015最新进展

    搜集整理了2004~2015性能最好的人脸检测的部分资料,欢迎交流和补充相关资料. 1:人脸检测性能 1.1 人脸检测测评 目前有两个比较大的人脸测评网站: 1:Face Detection Data ...

  3. paper 129 : 比较好的开源人脸识别软件

    1.face.com 以色列公司,某年六月时被Facebook收购,同时暂停了API服务,之前测试过他们的服务,基本上是了解到的应用中做得最牛的了. 2.orbe Orbeus由麻省理工学院和波士顿大 ...

  4. (转载)人脸识别中Softmax-based Loss的演化史

    人脸识别中Softmax-based Loss的演化史  旷视科技 近期,人脸识别研究领域的主要进展之一集中在了 Softmax Loss 的改进之上:在本文中,旷视研究院(上海)(MEGVII Re ...

  5. face recognition[翻译][深度人脸识别:综述]

    这里翻译下<Deep face recognition: a survey v4>. 1 引言 由于它的非侵入性和自然特征,人脸识别已经成为身份识别中重要的生物认证技术,也已经应用到许多领 ...

  6. 使用OpenCV进行人脸识别

    不断维护的地址:http://plzcoding.com/face-recognition-with-opencv/ 怎样使用OpenCV进行人脸识别 本文大部分来自OpenCV官网上的Face Re ...

  7. Cell期刊论文:为什么计算机人脸识别注定超越人类?(祖母论与还原论之争)

    终于找到ML日报的微信链接,抄之...................................... 请拜访原文链接:[祖母论与还原论之争]为什么计算机人脸识别注定超越人类?评价:       ...

  8. AI人脸识别的测试重点

    最常见的 AI应用就是人脸识别,因此这篇文章从人脸识别的架构和核心上,来讲讲测试的重点. 测试之前需要先了解人脸识别的整个流程,红色标识代表的是对应AI架构中的各个阶段 首先是人脸采集. 安装拍照摄像 ...

  9. paper 88:人脸检测和识别的Web服务API

    本文汇总了全球范围内提供基于Web服务的人脸检测和识别的API,便于网络中快速部署和人脸相关的一些应用. 1:从How-old的火爆说起 最开始,网站的开发者只是给一个几百人的群发送email,请他们 ...

随机推荐

  1. php 连接主从数据库

    本代码是从uchome的代码修改的,是因为要解决uchome的效率而处理的.这个思维其实很久就有了,只是一直没有去做,相信也有人有同样的想法,如果有类似的,那真的希望提出相关的建议.封装的方式比较简单 ...

  2. http相关概念在iOS中的使用介绍

    http://www.cocoachina.com/ios/20160329/15773.html

  3. Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)

    我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠s ...

  4. java调用Http请求 -HttpURLConnection学习

    最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放 ...

  5. Linux: 20 Iptables Examples For New SysAdmins

    Linux comes with a host based firewall called Netfilter. According to the official project site: net ...

  6. svn out of date

    out of date说明这个文件过期了,也就是已经有过一次提交的版本,当前提交的版本号小于当前的版本. 解决办法:先将文件update一下,然后再提交.

  7. Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

    Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...

  8. asp.net中控件的Attributes用法

    在点击保存时通常会验证输入框是否为空,一般我们会在按钮控件中添加OnClientClick=“return Check();”事件,并通过javascript来处理. 下面是另一种方法,在后台.cs代 ...

  9. mongoDB命令

    . getLastError db.runCommand({getLastError:}) . buildInfo //返回mongoDB的服务器版本号和操作系统类型 db.runCommand({} ...

  10. [转]ANDROID L——Material Design详解(动画篇)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 转自:http://blog.csdn.net/a396901990/article/de ...