【论文阅读笔记】DeepFace Closing the Gap to Human-Level Performance in Face Verification

原文链接:http://www.cs.tau.ac.il/~wolf/papers/deepface.pdf

论文引用:

@INPROCEEDINGS{6909616, 
author={Y. {Taigman} and M. {Yang} and M. {Ranzato} and L. {Wolf}}, 
booktitle={2014 IEEE Conference on Computer Vision and Pattern Recognition}, 
title={DeepFace: Closing the Gap to Human-Level Performance in Face Verification}, 
year={2014}, 
pages={1701-1708}, 
month={June}}


原文阅读

摘要

创新点与贡献

  • 对齐:基于显式3D建模的人脸对齐系统
  • 表达:泛化能力强的人脸表达,使用9层DNN,包括权值不共享的局部连接层
  • 识别结果:接近人类水平

验证

  • 训练数据:来自4000本体的4百万人脸图像
  • 测试数据:LFW 97.35%

简介与相关工作

这部分内容比较简单,主要就是对大数据发展以及DL为什么得到广泛应用的原因做了简单的介绍。同时,对传统的人脸识别验证方法做了总结,对比说明本文的方法优势。

大数据与DL

  • 大数据积累与算力提升,给更强大的统计模型提供基础,能够大大提升视觉系统稳定性,应对如非刚性形变、杂波、光照等变换
  • 传统方法,如SVM/PCA/LDA,处理大数据的能力有限
  • DNN算法性能提升,并得到验证

人脸识别

  • 人工特征,特征组合表达
  • DNN与传统方法结合
  • 度量学习方法用于人脸验证(保留了距离学习,用于验证特征有效性)

本文

  • 3D模型
  • 网络结构创新
  • 迁移学习能力

人脸对齐

传统方法

  • 解析的3D模型
  • 基准点结构
  • 非监督方法像素的相似变换

本文方法动机

  • 虽然近今年3D模型方法没那么流行,特别是在不受限的场景中,但是人脸毕竟是3D目标,所以我们认为基于3D模型的方法是正确的思路。
  • 本文使用基于基准点结构的解析3D模型对人脸进行建模,将检测到的人脸区域变换到3D正面模式。

本文方法描述

  • 方法:简单的基准点检测子+迭代改进
  • 迭代操作:使用图像描述子(LBP特征等)训练得到的SVR模型预测点分布;使用诱导相似矩阵将图像变换到新的特征空间,并重新运行基准点检测子,得到改进的点位置。

2D对齐

  • 6个结构点:眼睛中心2、鼻尖1、嘴巴3
  • 方法:通过拟合T_{2d}^{i}:=(s_{i},R_{i},t_{i}),x_{anchor}^{j}:=s_{i}[R_{i}|t_{i}]*x_{source}^{j},缩放、旋转将图像变换到6个锚点的位置,直到收敛,得到2D相似变换矩阵T_{2d}:=T_{2d}^{1}*T_{2d}^{2}*...*T_{2d}^{k}
  • 缺点:2D相似变换无法补偿平面内外旋转的问题,而这一问题在不受限的场景下非常重要

3D对齐

  • 动机:解决2D变换无法解决的内外旋转问题
  • 方法:通用3D形状模型+注册三维仿射相机—>扭曲二维对齐裁剪图到三维形状的图像平面
  • 具体步骤:
    • 1.1 一方面,使用第二个SVR模型在2D对齐图上定位额外的67个基准点
    • 1.2 另一方面,对USF Human-ID数据集做后处理,顶点对齐(v_{i}=(x_{i},y_{i},z_{i})_{i=1}^{n}),然后取平均得到通用3D模型;并在3D形状上人工选择67个锚点(与检测得到的67个基准点是一一对应的关系)
    • 2.1 使用线性系统x_{2d}=X_{3d}\overrightarrow{P}(协方差\Sigma已知)的广义最小二乘解拟合3D-2D仿射变换P
      • 其中,\overrightarrow{P}通过最小化损失loss(\overrightarrow{P}) =r^{T}\Sigma ^{-1}r得到,r=(x_{2d}-X_{3d}\overrightarrow{P})为残差
      • X_{3d}:(67*2)*8,即67个2*8的矩阵[x_{3d}^{T}(i),\overrightarrow{0};\overrightarrow{0},x_{3d}^{T}(i),1]\overrightarrow{0}是4维列向量
    • 2.2 仿射相机P大小为2*4,表示为8个\overrightarrow{P}
    • 2.3 损失函数求解可以通过Cholesky分解\Sigma,将问题转换为普通最小二乘问题

正面化

  • 因为没有建模全透视投影和非刚性变换,因此,拟合得到的相机参数P仅仅是一个近似值。如果不做处理,最终映射得到的3D形状是相同的,没有区分性。因此,我们在每个参考基准点的x、y分量中添加了相应的残差
  • 正面化通过逐段仿射变换T实现从二维到三维的变换,这个过程由来自67个基准点的Delaunay三角化作为指导。此外,从对摄像机P而言不可见的三角形,可以根据对称部分通过图像融合来替代。

人脸表达

DNN结构

  • 含最大池化层的前端自适应预处理阶段:包括C1/M2/C3。
    • M2层的作用是局部变换更鲁棒,即对人脸对齐中的配准误差更鲁棒。但是池化会造成人脸细节结构和微观纹理的丢失,因此只在预处理阶段的第一个卷积层(C1)后使用最大池化操作(M2)。
  • L4/L5/L6三层局部连接层,其特点是不共享权值
    • 计算负担没有影响,参数数量增加,但由于有足够的数据,因此能够应对三层局部连接层。
    • 不使用卷积的原因是,卷积的空间平稳性不够,而人脸不同区域的局部统计信息不同;另外,局部连接层的每个输出单元都受到很大的输入图像块的影响。例如,L6的输出受输入74x74x3图像块的影响,并且在它们之间几乎没有任何统计共享。
    • 总的来说就是,利用人脸对齐这一机制,定制DNN的结构
  • F7/F8
    • 获取特征图上不同图像区域之间的联系
    • F7输出作为原始表达与LBP进行对比

训练

  • 损失函数:交叉熵
  • 更新策略:SGD
  • 稀疏特性:源于ReLU和dropout(F7)

归一化:光照不变

验证矩阵

  • 监督方法有明显的性能优势,通过对训练集训练,可以对特征向量(或分类器)进行微调,以便在数据集的特定分布中有更好的表现。
  • 然而,如果训练和测试数据集分布不同,性能会受影响,需要进一步调整表示(或分类器),以提高它们的泛化和性能。另外,相对较小的数据集训练得到的模型对其他数据集的泛化能力较弱。
  • 本文,我们的目标是学习一个无监督的度量,它可以很好地推广到几个数据集。我们的无监督相似性只是两个归一化特征向量之间的内积
  • 我们还尝试了监督指标,卡方相似性和双胞胎网络

加权卡方距离

  • 与LBP特征向量的相同之处在于:非负、稀疏、值在[0,1]之间。加权卡方相似度定义为:

\chi ^{2}(f_{1},f_{2})=\sum_{i}w_{i}(f_{1}[i]-f_{2}[i])^{2}/(f_{1}[i]-f_{2}[i])

其中,权重通过线性SVM学习得到。

双胞胎网络

  • 策略:一旦学习,人脸识别网络(去除顶层)将复制两次(每个输入图像),并使用这些特征直接预测两个输入图像是否属于同一个人。
  • 实现方式:a)计算特征绝对差,b)top全连接层将绝对差映射到单个逻辑单元(相同/不相同)。距离公式如下,权重即为训练参数:

d(f_{1},f_{2})=\sum_{i}\alpha_{i}|f_{1}[i]-f_{2}[i]|

  • 特点:两个副本之间共享,参数数量大致与原始参数的数量相同,但需要两倍的计算量
  • 注意:为了防止人脸验证任务过度拟合,我们只对最后两层做训练

实验

数据

  • SFC(Social Face Classification)
    • 来自Facebook
    • 4.4million/4030/800-1200
    • 每个人最近期的5%图像作为验证集
    • 摄影师
  • LFW
    • 来自de facto
    • 13323/5749名人/10份6000对
    • 性能评估:(1)严格:训练只用相同或不相同的人脸图像对;(2)不严格:额外的训练数据对;(3)非监督:训练数据;矮子LFW之外
  • YTF(Youtube Face)
    • 3425视频/1595名人(LFW的子集)/10份5000视频对

训练SFC

  • batch:128,momentum:0.9,lr:0;01-0.0001验证集损失停止下降时降低学习率,权重初始化:N(0,0.01),bias:0.5,15 epoches 3days

  • 训练结束F7的输出作为人脸表达特征向量
  • 训练数据规模/网络深度实验:

  • 结论:
    • (1) SFC子集1.5K/3.3K/4.4K本体对应图像数量(1.5M/3.3M/4.4M),DF-3.3K网络相比DF-1.5K错误率适度增加,说明网络能够容纳3.3K数据,DF4.4K错误率适度增长,说明网络规模适用更多的数据。
    • (2) 全局数据按比例采样,DF-10%/20%/50%,错误率增加到20.7%说明过拟合,4M数据量仍然没有过饱和,说明更多的数据对网络更有益。
    • 网络深度去掉C3,去掉L4/L5,以及去掉C3/L4/L5,错误率逐渐增大,说明训练大的人脸数据集时网络的深度是必要的,即数据量越大需要深度更深的网络适配。

测试LFW

  • DeepFace是高度优化的模块组合:大型的前馈网络和3D对齐。其中,2D对齐精确度仅有94.3%,没有对齐操作精确度仅为87.9%,不使用前馈网络学习,仅适用LBP+SVM精确度为91.4%。
  • DeepFace-single单独验证人脸特征的表征能力:归一特征的內积95.92%(unsupervised),卡方距离向量+SVM97.00%(restricted)
  • DeepFace-ensemble
    • 不同训练集下的DNN网络融合:3D对齐RGB,灰度+梯度+旋转,2D对齐RGB;融合方式:非线性SVM,CPD核(K_{combined}=K_{single}+K_{gradient}+K_{align2d},K(x,y)=-\left \| x-y \right \|_{2});精确度97.15%(restricted)
    • K_{combined}+=K_{Siamese},准确度97.25%;K_{combined}+=K_{DeepFace_single}4个不同的随机种子从头开始训练,准确度97.35%,逼近人类人脸验证性能。

测试YTF

  • 训练采样50帧标注same or not,测试采样100帧结果加权平均
  • Deepface-single测试结果准确率91.4%,去除标注标注错误的样本92.5%
  • 容易扩展

 

效率

  • 对齐0.05s,前向特征提取0.18s,解码、检测、对齐、前馈网络、分类总共0.33s
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
自学深度学习是一种非常挑战性但也非常有成就感的学习过程。首先,我们需要明确深度学习的基本概念和原理。深度学习是一种机器学习方法,通过多层神经网络模型来处理复杂的数据和任务。它的学习过程是通过大量的数据和反馈来不断优化网络参数。 既然是自学,我们首先需要有一定的数学基础,如线性代数、概率论和微积分等。这些数学基础对于理解深度学习的原理和算法非常重要。其次,了解深度学习的基本模型如感知器、多层感知器、卷积神经网络和循环神经网络等。学习过程中可以通过阅读相关的书籍、教程和研究论文来深入理解。 在掌握基本概念和原理后,接下来我们需要学习如何实现深度学习模型。有许多流行的深度学习框架,如TensorFlow、PyTorch和Keras等,这些框架提供了丰富的工具和接口来进行模型的构建和训练。可以通过参考官方文档和教程来学习框架的使用方法,并通过实践项目来加深理解。 此外,尽可能多地阅读和实践深度学习相关的论文和项目也是重要的学习方法。可以关注一些权威的学术会议和期刊,如NIPS、ICML和CVPR,通过阅读这些论文来了解最新的研究进展和技术突破。 最后,坚持练习和动手实践是自学深度学习的关键。可以通过参加在线编程挑战、实现小项目或者参与开源社区的贡献等方式来提高实践能力。 总之,自学深度学习需要坚持、耐心和勇气。掌握基本概念和原理、学习实现深度学习模型、阅读相关论文和实践项目是重要的学习途径。希望以上建议能够对自学深度学习有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值