论文笔记:DeepID2

Deep Learning Face Representation by Joint Identification-Verification

DeepID2

1、四个问题

  1. 要解决什么问题?
    • 人脸识别。
    • 主要挑战是,设计一套方法能够有效地减少类内差异,并增大类间差异。
  2. 用了什么方法解决?
    • 使用face identification(人脸分类)和face verification(人脸验证)信号进行监督学习。训练了一个CNN用于次任务。
  3. 效果如何?
    • 老论文了,就看个思路。
    • 最后在LFW上达到了99.15%的人脸验证准确率。
  4. 还存在什么问题?
    • 由于是较早的论文,网络结构设计以及训练上有一定局限性。

2、论文概述

2.1、网络结构

在这里插入图片描述

  • 网络结构很简单,类似于LeNet。卷积层+池化层组合,经过四层后,将卷积层展开为全连接层,用来输出特征向量。

2.2、Identification和verification

  • 首先是人脸分类(face identification)信号,主要用于将人脸划分为 n n n个类(人)。
  • 人脸分类需要在上面的网络之后加上一个有 n n n个输出的softmax层,用来输出预测的每个类的概率值。
  • 公式如下:

在这里插入图片描述

  • 然后是人脸验证(face verification)信号,提取得到的特征向量对于类内来说距离更小,对于类间来说距离更大。
  • 直接把上面网络的输出作为特征向量,使用L1/L2范数计算特征之差,使用L2范数作损失函数的效果会更好。实质上,使用L2范数衡量的是特征向量之间的欧式距离。
  • 公式如下:

在这里插入图片描述

  • 关于公式的几个看法:
    • y i j = 1 y_{ij}=1 yij=1意味着样本是同类,这时我们需要让同类之间的特征向量差值尽可能小,所以就最小化两个特征向量的L2范数。
    • y i j = − 1 y_{ij}=-1 yij=1意味着是不同类,这时候我们想让不同类之间的特征向量的距离比同类之间的特征向量的距离大,但不能是无穷大,所以又加入了一个常数 m m m,防止让欧式距离趋近于无穷大。考虑到人脸任务中,两张脸有些地方是会有一定的相似性,但并意味着我们完全不需要此类信息,比如:这两个人脸的鼻子都很大,并不意味着就可以丢掉鼻子大小这个信息,也许有的人鼻子大小差异又会比较大。
  • 如果考虑的是余弦相似度函数,公式如下图所示:

在这里插入图片描述

  • 公式说明:
    • d = f i ⋅ f j 1 2 ( y i j − δ ( w d + b ) ) d = \frac{f_i \cdot f_j} {\frac{1}{2} (y_{ij} - \delta(wd+b))} d=21(yijδ(wd+b))fifj是特征向量之间的余弦相似度。
    • δ \delta δ是sigmoid函数。
    • y i j y_{ij} yij是label。

2.3、训练流程

在这里插入图片描述

2.4、算法流程

  1. 使用SDM算法抽取人脸上的21个标记,然后根据得到的标记对人脸进行对齐。通过变化位置、尺度、颜色通道,得到200个face patch,对每个face patch,使用该patch及其水平反转的图像进行特征学习。所以,一共需要200个深度卷积神经网络。
  2. 作者将论文中的深度卷积神经网络框架称为DeepID2。接着,作者使用200个DeepID2来学习上一步得到的patch,每个DeepID2都会将输入图像转换成一个160维的特征向量。
  3. 对每张图像而言,经过200个DeepID2学习到的特征数目为200*160,特征数目太大了。所以论文中使用前向后向贪心算法来选取一些有效且互补的DeepID2向量,以节约时间。注意,特征选择在每个DeepID2向量间进行,也就是一个DeepID2输出的向量,要么全被选中,要么全不被选中。
  4. 选中25个向量后,每张图像的维度是25*160=4000维。仍然太大,因而使用PCA进行降维,降维后大约有180维。
  5. 最后使用联合贝叶斯模型用来进行人脸验证。

3、参考资料

  1. https://blog.csdn.net/tsb831211/article/details/52760766
  2. https://blog.csdn.net/stdcoutzyx/article/details/41497545
本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值