DeepFace--Facebook的人脸识别

连续看了DeepID和FaceNet后,看了更早期的一篇论文,即FB的DeepFace。这篇论文早于DeepID和FaceNet,但其所使用的方法在后面的论文中都有体现,可谓是早期的奠基之作。因而特写博文以记之。

DeepFace基本框架

人脸识别的基本流程是:

detect -> aligh -> represent -> classify

人脸对齐流程

分为如下几步:

a. 人脸检测,使用6个基点

b. 二维剪切,将人脸部分裁剪出来

c. 67个基点,然后Delaunay三角化,在轮廓处添加三角形来避免不连续

d. 将三角化后的人脸转换成3D形状

e. 三角化后的人脸变为有深度的3D三角网

f. 将三角网做偏转,使人脸的正面朝前。

g. 最后放正的人脸

h. 一个新角度的人脸(在论文中没有用到)

总体上说,这一步的作用就是使用3D模型来将人脸对齐,从而使CNN发挥最大的效果。

人脸表示

经过3D对齐以后,形成的图像都是152×152的图像,输入到上述网络结构中,该结构的参数如下:

  • Conv:32个11×11×3的卷积核
  • max-pooling: 3×3, stride=2
  • Conv: 16个9×9的卷积核
  • Local-Conv: 16个9×9的卷积核,Local的意思是卷积核的参数不共享
  • Local-Conv: 16个7×7的卷积核,参数不共享
  • Local-Conv: 16个5×5的卷积核,参数不共享
  • Fully-connected: 4096维
  • Softmax: 4030维

前三层的目的在于提取低层次的特征,比如简单的边和纹理。其中Max-pooling层使得卷积的输出对微小的偏移情况更加鲁棒。但没有用太多的Max-pooling层,因为太多的Max-pooling层会使得网络损失图像信息。

后面三层都是使用参数不共享的卷积核,之所以使用参数不共享,有如下原因:

  • 对齐的人脸图片中,不同的区域会有不同的统计特征,卷积的局部稳定性假设并不存在,所以使用相同的卷积核会导致信息的丢失
  • 不共享的卷积核并不增加抽取特征时的计算量,而会增加训练时的计算量
  • 使用不共享的卷积核,需要训练的参数量大大增加,因而需要很大的数据量,然而这个条件本文刚好满足。

全连接层将上一层的每个单元和本层的所有单元相连,用来捕捉人脸图像不同位置的特征之间的相关性。其中,第7层(4096-d)被用来表示人脸。

全连接层的输出可以用于Softmax的输入,Softmax层用于分类。

人脸表示归一化

对于输出的4096-d向量:

  • 先每一维进行归一化,即对于结果向量中的每一维,都要除以该维度在整个训练集上的最大值。
  • 每个向量进行L2归一化

分类

得到表示后,使用了多种方法进行分类:

  • 直接算内积
  • 加权的卡方距离
  • 使用Siamese网络结构

加权卡方距离计算公式如下:

其中,加权参数由线性SVM计算得到。

Siamese网络结构是成对进行训练,得到的特征表示再使用如下公式进行计算距离:

其中,参数alpha是训练得到。Siamese网络与FaceNet就很像了。

实验评估

数据集

  • Social Face Classification Dataset(SFC): 4.4M张人脸/4030人
  • LFW: 13323张人脸/5749人
    • restricted: 只有是/不是的标记
    • unrestricted:其他的训练对也可以拿到
    • unsupervised:不在LFW上训练
  • Youtube Face(YTF): 3425videos/1595人

Training on SFC

  • 训练使用的人数不同(1.5K/3.3K/4.4K)
  • 训练使用的照片数目不同(10%/20%/50%)
  • 使用的网络不同(去掉第三层/去掉第4、5层/去掉第3、4、5层)

Results on LFW

Results on YTF

总结

DeepFace与之后的方法的最大的不同点在于,DeepFace在训练神经网络前,使用了对齐方法。论文认为神经网络能够work的原因在于一旦人脸经过对齐后,人脸区域的特征就固定在某些像素上了,此时,可以用卷积神经网络来学习特征。

针对同样的问题,DeepID和FaceNet并没有对齐,DeepID的解决方案是将一个人脸切成很多部分,每个部分都训练一个模型,然后模型聚合。FaceNet则是没有考虑这一点,直接以数据量大和特殊的目标函数取胜。

在DeepFace论文中,只使用CNN提取到的特征,这点倒是开后面之先河,后面的DeepID、FaceNet全都是使用CNN提取特征了,再也不谈LBP了。

参考文献

[1]. Taigman Y, Yang M, Ranzato M A, et al. Deepface: Closing the gap to human-level performance in face verification[C]//Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on. IEEE, 2014: 1701-1708.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-29 19:15:33

DeepFace--Facebook的人脸识别的相关文章

人脸识别(face recognition)

一.前述 1. 发展 以往的人脸识别主要是包括人脸图像采集.人脸识别预处理.身份确认.身份查找等技术和系统.现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测.行人跟踪.甚至到了动态物体的跟踪.由此可以看出,人脸识别系统已经由简单的图像处理发展到了视频实时处理.而且算法已经由以前的Adaboots.PCA等传统的统计学方法转变为CNN.RCNN等深度学习及其变形的方法.现在也有相当一部分人开始研究3维人脸识别识别,这种项目目前也受到了学术界.工业界和国家的支持. 之后的内容主要参考了下面的链接,

paper 50 :人脸识别简史与近期进展

自动人脸识别的经典流程分为三个步骤:人脸检测.面部特征点定位(又称Face Alignment人脸对齐).特征提取与分类器设计.一般而言,狭义的人脸识别指的是"特征提取+分类器"两部分的算法研究. 在深度学习出现以前,人脸识别方法一般分为高维人工特征提取(例如:LBP, Gabor等)和降维两个步骤,代表性的降维方法有PCA, LDA等子空间学习方法和LPP等流行学习方法.在深度学习方法流行之后,代表性方法为从原始的图像空间直接学习判别性的人脸表示. 一般而言,人脸识别的研究历史可以分

当前最先进人脸识别方法简单介绍

最先进的人脸识别是当前facebook和香港科技大学的深度神经网络的人脸识别: 论文下载地址: facebook:DeepFace https://research.facebook.com/publications/480567225376225/deepface-closing-the-gap-to-human-level-performance-in-face-verification/ 香港科技大学: http://arxiv.org/abs/1406.4773. 这两篇效果最好.如果做

人脸识别的深度学习

深度学习只不过是机器学习的标准范例,更准确地说 - 是其算法之一.在最大程度上,它基于人脑的概念和神经元的相互作用.如果你开始谷歌搜索深度学习是什么,你会发现今天这个超级热门词远远不是新的.为什么这样?该术语本身出现在20世纪80年代,但到2012年,没有足够的力量来实施这项技术,几乎没有人关注它. 在着名科学家的一系列文章,科学期刊上的出版物之后,这项技术迅速成为病毒.今天,它有各种各样的应用程序,其中重要的地方是人脸识别.首先,深度学习提供了构建识别生物识别软件的能力,该软件能够唯一地识别或

FaceNet--Google的人脸识别

引入 随着深度学习的出现,CV领域突破很多,甚至掀起了一股CV界的创业浪潮,当次风口浪尖之时,Google岂能缺席.特贡献出FaceNet再次刷新LFW上人脸验证的效果记录. 本文是阅读FaceNet论文的笔记,所有配图均来自于论文. 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/46687471 FaceNet 与其他的深度学习方法在人脸上的应用不同,FaceNet并没有用传统的softmax的方式去进行分类学习,然后抽取其中某一层

atitit.人脸识别的应用场景and使用最佳实践 java .net php

atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景 1 2. 框架选型 JNI2OpenCV.dll and JavaCV 1 3. Url api 法 1 4. 使用法 2 5. 问题解决 2 6. 测试main修改 2 7. 主要的code 2 8. 参考 3 1. 人脸识别的应用场景 图片库清理...不个要保持的图片(有人脸/ngaiz,呵呵)跟个马用的图片分割开... 人物识别::::  不同样的人脸可以识别... 物体识别::: O

java人脸识别,非常准确哦

原文:java人脸识别,非常准确哦 源代码下载地址:http://www.zuidaima.com/share/1550463531502592.htm 这个是基于facebook刚刚收购的face.com的api接口实现的 详情: http://developers.face.com/account/ 需要申请apkey,几步就搞定啦. 我测试了一下,直接重eclipse导出来,大家把项目直接导入eclipse就能用了 各种jar包齐全(官方有demo,但是没有jar包哦,不嫌麻烦的可以直接用

香港中文大学-人脸识别进展-2014-06

香港中文大学-汤晓鸥团队-人脸识别DeepID/GaussianFace-在LFW(Labeled Face in Wild,业内用于评估非受限环境下人脸识别技术的权威数据库)上的识别率99%+,98%+,97%+~ DeepID(Deep hidden IDentity features) - 20w 训练集 (对比Facebook的DeepFace700w训练集)- 使用NVIDIA Tesla K40 GaussianFace - 类Kernel方法 - DeepLearning is n

人脸识别技术探讨:1:1,1:小N/大N,大姿态识别,活体识别

人脸识别是一种基于人的脸部特征信息进行身份认证的生物特征识别技术.静态人脸识别和动态人脸识别静态人脸识别是在特定的区域或者范围内来采集人脸照片并进行识别,如当前常见的门禁考勤应用.又或者是输入一张照片到人脸识别系统,如Facebook应用中采集用户的标签照片.又如警察输入照片并搜索数据库查看他/她是谁.在这两种情况下,我们都是输入一张照片来进行人脸识别.静态人脸识别的工作流程包括检测人脸.人脸对齐.提取特征向量(我们在后文也会谈及),然后将提取的特征向量与数据库中的特征向量进行比较,以确定他/她