Deep Learning Face Representation from Predicting 10,000 Classes

此文发表于2014年CVPR上,以人脸识别的子领域人脸验证(Face Verification)为目标,文章并没有用直接用二分类CNN实现人脸验证,而是通过学习一个多类(10000类,每个类大约有20个实例)人脸识别任务来学习特征,并把学到的特征使用到face verification和其他unseen新的identification。它使用人脸上不同的patch训练多个单独的ConvNet,每个ConvNet的最后一个隐层为提取到的特征,称之为DeepID(Deep hidden IDentitiy feature)。最后将这些patch提取到的DeepID concate起来作为整个Face的feature送入Joint Bayesian分类器(当然也可以是其他的分类器)做二分类就可以做人脸验证了。文章主要的贡献在于用很多不同的Face patch分别训练以一个很难的分类任务(~10000个不同身份的人)的ConvNet,得到一些分辨力很强的over-complete representations,最后在不需要严格对齐的前提下于LFW上取得了97.45%的人脸对比精度。

  • 引自DeepID1,DeepID2,DeepID2+和DeepID3 - 知乎 (zhihu.com)

论文摘要可以知道的事

  • 提出通过深度学习来学习一组高级特征表示,称为深度隐藏身份特征(DeepID),用于人脸验证。
  • 通过挑战多类人脸识别任务,可以有效地学习DeepID,同时可以将其推广到其他任务(如验证)和训练集中未发现的新身份
  • 随着在训练中预测更多的人脸类别,DeepID的泛化能力也会增加。
  • DeepID可以当作为分类器学习,在训练集中识别大约10000个人脸身份
  • 特征提取层次不断减少神经元数量时,这些深层convnet在顶层逐渐形成紧凑的身份相关特征,只有少量隐藏的神经元。
  • DeepID特征取自深度卷积网络(ConvNets)的最后一个隐藏层神经元激活
  • 提出的特征从不同的人脸区域中提取,形成互补的完整的表示
  • LFW的验证精度达到97.45%

人脸验证的相关工作

  • 通过高维超完整的人脸描述符,然后是浅层模型来表示人脸。

    • 将每张人脸图像编码为26K基于学习(LE)的描述符,然后在PCA后计算LE描述符之间的L2距离

      • 【论文学习笔记】Face Recognition with Learning-based Descriptor_Tonyfy’s Blog-CSDN博客

      • 通过一个新的learning-based(LE)编码方法对面部的“微结构(micro-structures)”进行编码,通过无监督学习的技术从训练样本中学习到一个“编码本(encoder)“,这个编码本可以实现较好的识别能力和不变性。

      • 使用PCA将面部编码降维得到一个更加紧凑的描述子,经过主成分分析之后进行归一化机制可以提高描述子的识别能力。

      • 基于学习的描述子,是一个简洁紧凑,易于提取且高识别能力的特征描述方式

        • 方法流程概述

          1. 通过标准基准点检测器提取面部标定点。
          2. 基于标定点,取出面部的九个区域(鼻子,嘴巴…)并且 对齐。
          3. 将各个子区域通过DoG滤波器去除低频和高频的光照分量。
          4. 对每个子区域图像,每个像素点都得到一个低水平的特征向量(如SIFT?)并且使用LE编码本对它编码。得出子区域的编码图(即新的特征向量)。
          5. 对子区域特征向量,计算出分块直方图并连接成大直方图(如分为2*2块)。再进行PCA降维和归一化,即得该子区域的紧凑的LE描述子。
          6. 对输入的人脸对,计算每个对应子区域的LE描述子之间的L2距离,来刻画子区域间的相似度。
          7. 九个对应子区域间的相似度得分组成子区域相似度向量。送入姿态自适应分类器——由一系列特定姿态分类器构成。
          8. 找出输入待匹配图片的对的最优的姿态组合,使用相应的特定姿态分类器做出最后的决策。
        • LE描述子的提取

          1. 采样和归一化

            • 在图像的每个像素上,我们采样它周围的像素点,构成一个低水平的特征向量。
            • 采样之后,我们将采样得到的特征向量归一化到单位长度。结合 DoG处理的归一化使得特征向量对局部的光度仿射变化呈现不变性。
          2. LE编码与直方图描述
            • 应用LE编码本对归一化之后的 特征向量(整张脸)进行编码,得到离散编码值。
            • 编码本是使用 人脸图片进行无监督学习训练得到的。
            • random-tree和PCA tree基于均匀编码的标准递归地切分数据,也即树的每个叶子得到相同数量的向量。也即所有的量化编码值在向量空间内有相似的出现频率。
            • 得到整张脸的“LE编码图像”后,将“图像(84*96)”分块为5*7。每个分块计算 LE编码的直方图,并将 35块连接起来构成 整张脸的描述子。
          3. PCA 降维
            • 如果直接采用连接的直方图作为最终的描述子,会使得人脸特征维度过高,降低识别速度。应用PCA压缩连接的直方图,称压缩后的描述子叫做LE描述子。
    • 具有多个尺度的密集面部标志点提取了100K LBP描述符,并在PCA后使用联合贝叶斯进行验证

      • LBP(Local Binary Patterns ,局部二进制模式)是一种理论简单、计算高效的非参数局部纹理特征描述子。

      • LBP的优点

        • 计算复杂度低;
        • 无需训练学习;
        • 光照不变性;
        • 易于工程实现。
      • 原始的LBP描述子

    • 将中心像素的每个邻域像素值以该中心像素的灰度值为阈值进行二值量化,大于或等于中心像素的像素值则编码为1,小于则编码为0,以此形成一个局部二进制模式。

    • 将该二进制模式以x正轴方向为起点按照逆时针方向进行串联得到一串二进制数字,并用该二进制数对应的十进制数字来唯一地标识该中心像素点图像中的每个像素都可以计算得到一个局部二进制模式。

    • LBPP,R=∑P=1P−1s(gp−gc)2P,s(x)={1if x >= 中心阈值0if x<中心阈值LBP_{P,R}=\sum_{P=1}^{P-1}s(g_p-g_c)2^P,s(x)=\begin{cases}1 &\text{if x >= 中心阈值}\\0 &\text{if x<中心阈值}\end{cases} LBPP,R​=P=1∑P−1​s(gp​−gc​)2P,s(x)={10​if x >= 中心阈值if x<中心阈值​

    • 对于一幅图像而言,要想得到它的LBP描述,需要先将该图像分成若干个子区域,对每一个子区域按照上述过程得到该子区域的LBP编码,进而便可得到该子区域的直方图,并用该直方图来作为该子区域的LBP描述。最后,将所有子区域的直方图综合起来,便得到了该图像的LBP描述。其大致过程如下图所示:

    • LBP改进

      • 对于尺度较大的结构,在一个小的3*3邻域内,基本的LBP算子的并不能够满足不同尺寸和频率纹理的需要。

      • LBP算子被扩展到不同大小的邻域内,将3*3邻域扩展到任意邻域,并用圆形邻域替代方形邻域。

      • 通过双线性插值,改进后的LBP算子允许在半径为R的圆形邻域内有任意多个采样点。

      • (P,R)表示的是在半径为R圆上,采样P个点形成的邻域。

    - LBP的r,p不具有旋转不变性,而要提高一个特征描述子的实用性,需要增强对图像旋转变化的鲁棒性,- 全局LBP直方图矢量的维数随着p的增加而成指数增长,很快就受到计算和存储的限制。- > 解决方案:创新性地提出了旋转不变(rotation invariant)LBP模式与均匀(uniform)LBP模式,以及两者的结合得旋转不变均匀LBP模式。
    
    • 旋转不变LBP描述子

      • 对LBP算子,对它进行圆形循环移位得的到最小十进制值作为该邻域的LBP值。
    • 均匀LBP描述子

      • 同一尺度下的原始LBP的r,p模式中,有些模式出现的频率显著高于其他模式,于是有理由认为出现概率高的模式包含更多的局部纹理信息,从某种意义上来说它们反映了纹理图像中的基本局部模式。
      • 采用所有LBP的r,p模式的一些子集来描述纹理图像特征,提出所谓的均匀LBP算子。
      • 一个LBP模式称为均匀模式,是指其U值不大于2。U值表示LBP模式中在圆周上相邻的两个二元值的0/1(或1/0)转移次数。
      • U值反应了局部纹理结构的一种均匀性度量,U值越大表示结构趋向于不均匀,变化频率较高,U 值越小则反之,而图像中很多信息集中在低频,因此有理由认为均匀模式要比非均匀模式多。
      • 典型的均匀模式
    • 在尺度和空间上密集计算1.7M的SIFT描述符,将密集的SIFT特征编码为Fisher向量,并学习线性投影进行区分性降维

    • 结合1.2M CMD和SLBP描述符,学习稀疏马氏度量用于人脸验证。

      • 马氏距离

        • 可以看作是欧氏距离的一种修正,修正了欧式距离中各个维度尺度不一致且相关的问题。

        • 马氏距离就好理解了,只需要将变量按照主成分进行旋转,让维度间相互独立,然后进行标准化,让维度同分布就OK了

        • 由于主成分就是特征向量方向,每个方向的方差就是对应的特征值,所以只需要按照特征向量的方向旋转,然后缩放特征值倍就可以了

        • 单个数据点的马氏距离

          • DM(x)=(x−μ)TΣ−1(x−μ)D_M(x)=\sqrt{(x-\mu)^T\varSigma^{-1}(x-\mu)} DM​(x)=(x−μ)TΣ−1(x−μ)​

          数据点x, y之间的马氏距离

          • DM(x,y)=(x−y)TΣ−1(x−y)D_M(x,y)=\sqrt{(x-y)^T\varSigma^{-1}(x-y)} DM​(x,y)=(x−y)TΣ−1(x−y)​

          其中Σ是多维随机变量的协方差矩阵,μ为样本均值,如果协方差矩阵是单位向量,也就是各维度独立同分布,马氏距离就变成了欧氏距离。

    >   >
    >   >
    >
    > - 马氏距离的问题
    >
    >   - 协方差矩阵必须满秩
    >     - 有求逆矩阵的过程,不满秩不行,要求数据要有原维度个特征值,如果没有可以考虑先进行PCA,这种情况下PCA不会损失信息
    >   - 不能处理非线性流形(manifold)上的问题
    >     - 只对线性空间有效,如果要处理流形,只能在局部定义,可以用来建立KNN图
    >
    > - > [马氏距离(Mahalanobis Distance) - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/46626607)
    
  • 深层模型已用于人脸验证或识别

    • 用Siamese network 进行深度度量学习。Siamese network 分别从两个具有相同子网络的比较输入中提取特征,将两个子网络的输出之间的距离视为不同。

      • Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的,如下图所示:

    • 衡量两个输入的相似程度。孪生神经网络有两个输入(Input1 and Input2),将两个输入feed进入两个神经网络(Network1 and Network2),这两个神经网络分别将输入映射到新的空间,**形成输入在新的空间中的表示。**通过Loss的计算,评价两个输入的相似度。
    • 使用CDBNs生成学习特征,然后使用ITML和线性支持向量机进行人脸验证
    • 使用多个深度ConvNet学习高级人脸相似性特征,并训练分类RBM进行人脸验证
  • ROC曲线。DeepID学习方法在LFW上实现了最佳性能。前四种最好的方法是使用密集的面部标志点,而本算法中只有五个点弱对齐

LFW数据集

  • LFW (Labled Faces in the Wild)数据集:是目前人脸识别的常用测试集,其中提供的人脸图片均来源于生活中的自然场景,因此识别难度会增大,尤其由于多姿态、光照、表情、年龄、遮挡等因素影响导致即使同一人的照片差别也很大。

    • 当一张照片中存在多个人时:对这些多人脸图像仅选择中心坐标的人脸作为目标,其他区域的视为背景干扰
  • LFW数据集共有13233张人脸图像,每张图像均给出对应的人名,共有5749人,且绝大部分人仅有一张图片。

  • 每张图片的尺寸为250*250,绝大部分为彩色图像,但也存在少许黑白人脸图片。

  • LFW 数据库主要是从互联网上搜集图像,而不是实验室

  • 官网:http://vis-www.cs.umass.edu/lfw/

    人脸识别全世界最权威的两个数据库FDDB(Face Detection Data Set and Benchmark)和LFW(Labeled Faces in the Wild Home),分别对人脸识别中最基本的两个问题:检测和识别,给出了详细的测试要求与评分标准。

    • LFW数据集主要测试人脸识别的准确率,该数据库从中随机选择了6000对人脸组成了人脸辨识图片对,其中3000对属于同一个人2张人脸照片,3000对属于不同的人每人1张人脸照片。测试过程LFW给出一对照片,询问测试中的系统两张照片是不是同一个人,系统给出“是”或“否”的答案。通过6000对人脸测试结果的系统答案与真实答案的比值可以得到人脸识别准确率。

      • 任何一个系统都可以对这6000组样本进行有针对性的优化,从而达到刷高分的效果。
    • FDDB数据集主要测试人脸检测的准确率,人脸识别算法需要在该数据集每张图像上进行人脸检测,对检测到的人脸进行位置标定。然后根据数据集本身给出的正确答案计算正确检出人脸数与误检人脸数而评判人脸检测算法的好坏。

    • 即使在FDDB与LFW数据库上将识别率都刷到满分,也并不能证明该人脸识别技术能够在实际应用场景中使用,实际应用场景与数据库数据有天差地壤的区别,就像是纸上谈兵与打仗的区别;

      LFW与FDDB是题库性质的测试,最主要的作用是测试一套系统能不能达到基本的人脸识别能力。

DeepID基本思想

  • ConvNets学习根据身份对所有可用于训练的人脸进行分类,最后一个隐藏层神经元激活作为特征即深度隐特征DeepID

    • 最后一个隐藏层激活作为特征,而不是分类器输出。在CONVNET中,最后一个隐藏层的神经元数量远小于输出层的神经元数量,这迫使最后一个隐藏层学习不同人脸的共享隐藏表示,以便很好地对所有人脸进行分类,从而获得具有良好泛化能力的高度区分性和紧凑的特征
  • 每个ConvNet都将一个面片作为输入,并在底层提取局部低级特征

  • 随着特征提取层叠的进行,特征数量不断减少,同时在顶层逐渐形成更多全局和高级特征。

  • 高度紧凑的160维DeepID是在级联结束时获得的,包含丰富的身份信息,并直接预测更大数量(例如10000)的身份类。

    • 将训练样本预测到多个类别中的一个类别要比执行二元分类困难得多(多对一比一对一难)。这项具有挑战性的任务可以充分利用神经网络的超强学习能力来提取人脸识别的有效特征。
    • 隐式地为convnet添加了一个强大的正则化,这有助于形成共享的隐藏表示,可以很好地对所有身份进行分类。 所学习的高级特征具有良好的泛化能力,并且不会过度适合于训练人脸的一小部分。
    • DeepID限制为明显少于他们预测的身份类别,这是学习高度紧凑和区分性特征的关键。
    • 进一步将从不同人脸区域提取的DeepID连接起来,形成互补的、超完整的表示。学习到的特征可以很好地推广到测试中的新身份,这在训练中是看不到的,并且可以很容易地与任何最先进的人脸分类器(如,联合贝叶斯)集成以进行人脸验证。

Joint Bayesian(联合贝叶斯)分类器

  • Face Verification,判断两张人脸是否为同一个人。(Joint Bayesian分类器的目的)

  • Face Identification,从一个人脸库中找到给定的这张人脸对应的身份。

  • 用两个独立的高斯变量之和表示提取的面部特征x(减去平均值后) 。x=μ+ ε

    • μ~N(0,S[μ])表示人脸之间的高斯分布变化
    • ε~N(0,S[ε])表示个人内部的高斯分布变化
    • Sµ和Sε可以通过EM算法从数据中学习
  • 联合贝叶斯模型给出了两张面孔在个人内或个人外变异假设P(x1,x2 | HI)和P(x1,x2 | HE)下的联合概率。

    • 这两种概率也是随变化的高斯分布
  • 贝叶斯决策论

    • 贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法。它是决策论Decision theory + 概率论Probability theory的组合

    • 探讨了如何在包含不确定性的环境中做出最优决策对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记(概率知识+对决策带来的损失的认识→最优决策)

    • 假设有N种可能的类别标记,y={c1,c2,⋯,cn}y=\{c_1,c_2,\cdots,c_n\}y={c1​,c2​,⋯,cn​},λ(ij)\lambda_(ij)λ(​ij)是将一个真实标记为cjc_jcj​的样本误差分类为cic_ici​ 所产生的损失。基于后验概率P(ci∣x)P(c_i|x)P(ci​∣x)可获得将样本x分类为 cic_ici​ 所产生的期望损失(expected loss),即在样本x上的“条件风险”(condition risk)

      • R(ci∣x)=∑i=1nλijP(cj∣x)R(c_i|x)=\sum_{i=1}^n\lambda_{ij}P(c_j|x) R(ci​∣x)=i=1∑n​λij​P(cj​∣x)
    • 我们的任务是寻找一个判定准则 h:X⟶Yh:X\longrightarrow Yh:X⟶Y 以最小化总体风险(即所有样本上的条件风险的期望)

      • R(h)=Ex[R(h(x)∣x)]R(h)=E_x[R(h(x)|x)] R(h)=Ex​[R(h(x)∣x)]

      • 显然,对每个样本x,若h能最小化条件风险R(h(x)∣x)R(h(x)|x)R(h(x)∣x),则总体风险R(h)R(h)R(h)也将会被最小化。这就产生了贝叶斯判定准则(Bayes decision rule):为最小化总体风险,只需在每个样本上选择那个能使条件风险R(c∣x)R(c|x)R(c∣x)最小的类别标记

        • h∗(x)=argminc∈yR(c∣x)h^*(x)=argmin_{c\in y}R(c|x) h∗(x)=argminc∈y​R(c∣x)
      • 此时, h∗(x)h^*(x)h∗(x)称为贝叶斯最优分类器(Bayes optimal classifier),与之对应的总体风险 R(h∗)R(h_*)R(h∗​) 称为贝叶斯风险(Bayes risk)。 1−R(h∗)1-R(h^*)1−R(h∗)反映了分类器所能达到的最好性能,即通过机器学习所能产生的模型精度的理论上限。

    • 欲使用贝叶斯判定准则来最小化决策风险,首先要获得后验概率P(c|x)。然而,在现实任务中这通常难以直接获得。机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率P(c|x)

    • 分类问题被划分成了两个阶段:推断inference阶段和决策decision阶段

    • typora公式编辑typora常用的数学公式编辑语法 - Wreng - 博客园 (cnblogs.com)

      机器学习之贝叶斯分类器 - 知乎 (zhihu.com)

DeepID特征提取算法流程

  • 首先,从输入人脸中扣除一些face patches

  • 然后把这些patch输入同一个结构不同参数的ConvNet中提取160维DeepID特征

  • 把这些DeepID特征concate起来就是这个人脸的feature了

  • 需要注意如下几点

    1. 不是一整张人脸作为输入的,输入的是人脸上抠图出来的一些patch
    2. 每个patch都有单独的一个ConvNet提取对应的子DeepID特征;
    3. DeepID特征是在最后一个隐层提取,而不是输出层,那个10000个节点的输出层,是训练时候才有的;
    4. 多个patch的DeepID concate成最后整个人脸的特征,所以最后一张人脸的特征长度是160乘以patch的个数,而不是仅仅160维。

DeepID网络结构

  • 它接受39×31×1的输入并预测n个(例如,n=10000)身份类。当输入大小更改时,以下图层中贴图的高度和宽度将相应更改。
  • DeepID层的维度固定为160,而输出层的维度根据其预测的类数而变化。
  • 共5层网络,越往后面的神经元的个数就越少,到最后就剩下160个神经元的输出,上面的Face patches是对齐过后的的人脸块,也就是说左(右)眼为中心的人脸区域块,嘴角为中心的人脸区域块等等
    • 包含四个卷积层(具有最大池),用于分层提取特征,然后是完全连接的DeepID层和指示标识类的softmax输出层。
    • DeepID的最后一个隐藏层完全连接到第三和第四个卷积层(在maxpooling之后),因此它可以看到多尺度特征(第四个卷积层中的特征比第三个卷积层中的特征更具全局性)。
      • 因为在沿级联进行连续下采样后,第四卷积层包含的神经元太少,成为信息传播的瓶颈。
      • 在第三卷积层(称为跳过层)和最后一个隐藏层之间添加旁路连接可以减少第四卷积层中可能的信息丢失。
      • 后一个隐藏层接受该函数
  - 其中x1、w1、x2、w2分别表示第三和第四卷积层中的神经元和权重。它线性地结合了前两个卷积层中的特征,然后是ReLU非线性。
  • ConvNet输出是一个n路softmax,用于预测n个不同身份的概率分布。
  • 这样就有多个不同的输入块输入到CNN中,采用了把Max pooling layer3+Conv layer4的输出作为特征(不同层次的特征抽象程度不一样)。

输入图像

  • 每个人脸会提取3个Scale(缩放尺度)的10个patch(以鼻头,左眼,右眼,左嘴角,右嘴角为中心),然后彩色图加上灰度图,加上水平翻转数量又翻倍,一共是3scale*10patch*2type*2flip=120个输入图片分别送入60个Conv Net(水平翻转和原图,用同一个Conv Net),提取了一共120x160=19200维的特征向量,作为这个脸的最终送入联合贝叶斯做分类或者验证的特征。

    • 两个以嘴角和两个眼球为中心的这四个patch,不做翻转操作,直接用他们的对称patch最为他们翻转图的特征。
  • 输入特征分为60个组,每个组包含640个特征,这些特征是从具有特定ConvNet的特定补丁对中提取的。同一组中的特征高度相关。局部连接层中的神经元只连接到一组特征,学习它们的局部关系,同时降低特征维数。

    • 第二个隐藏层与第一个隐藏层完全连接,以学习全局关系。

    • 单输出神经元完全连接到第二隐藏层。

    • 隐藏的神经元为ReLUs,输出的神经元为sigmoid。

    • 有38400个输入神经元,每个面片有19200个deepID特征,下面两个隐藏层有4800个神经元,第一个隐藏层每80个神经元局部连接到60组输入神经元中的一组。

  • 特征提取

    • 面部点检测方法检测五个面部标志,包括两个眼睛中心、鼻尖和两个嘴角

      • 根据两个眼睛中心和两个嘴角的中点,通过相似性变换对人脸进行全局对齐。
      • 从60个具有10个区域、3个尺度和RGB或灰色通道的面片中提取特征。
    • 训练了60个convnet,每个convnet从一个特定面片及其水平翻转的对应面片中提取两个160维DeepID向量。

    • DeepID的总长度为19200(160×2×60),可用于最终面验证。

训练样本

  • LFW包含5749人,但只有85人有超过15张图片,4069人只有一张图片。训练每个人只有很少的图像的身份分类器是不够的。 我们在CelebFaces上训练我们的模型,并在LFW上进行测试
  • CelebFaces包含来自互联网的5436位名人的87628张脸部照片,平均每人大约16张。
  • 从CelebFaces中随机选择80%(4349)人学习DeepID,并使用剩余的20%人学习人脸验证模型(联合贝叶斯或神经网络)。
  • 对于特征学习,CONVNET被监督同时从特定类型的面片和唇形面片中对4349人进行分类。随机选择每个训练器的10%图像来生成验证数据。在每个训练阶段之后,选择提供最低错误率的模型。

多尺度网络

  • 将第三卷积层(最大池化后)中的神经元直接连接到最后一个隐藏层(DeepID层)的有效性,这样可以同时看到第三和第四卷积层的特征,形成所谓的多尺度convnet。

  • 在60个不同补丁上训练的60个CONVnet的错误率。

  • 蓝色和红色标记分别显示了传统CONVNET(无跳过层)和多尺度CONVNET的错误率。

模型训练

  • 目标函数

    • 训练Conv Net使用10000分类的交叉熵最为目标函数。

      • 由于数据分布的差异,适合CelebFaces+的模型在LFW上的泛化能力可能不同
      • 提出了一种实用的迁移学习算法,将联合贝叶斯模型从源域调整到目标域。
      • 用CelebFaces+的1477人作为源域数据,使用LFW的十个文件夹中的九个作为转移学习联合贝叶斯的目标域数据,实现了他们的算法,并对LFW进行了十倍交叉验证。
      • 深层特征的转移学习联合贝叶斯算法在LFW上达到97.45%的测试精度,与人类97.53%的性能水平相当。
    • 为了说明算法将如何从更多的训练数据中受益,将CelebFaces数据集扩大到CelebFaces+,其中包含10177位名人的202599张人脸图像。
    • 8700人训练DeepID,1477人训练Joint Bayesian分类器
    • 切分的patch(也就是上图这样的数据)数目为100,使用了五种不同的scale
    • 每张图片最后形成的向量长度为32000,使用PCA降维到150
    • 结果处理:一个32000维的DeepID特征向量,然后通过PCA将其降到150维。
    • 150维特征向量上学习的联合贝叶斯算法在LFW上达到了97.20%的测试精度。

实验结论

  • 使用Multi-scale patches的ConvNet比只使用一个只有整张人脸的patch的效果要好;
  • 如果只DeepID神经网络的最后一层Softmax层作为特征表示,效果很差;
  • 随着DeepID的训练集的增长,DeepID本身的分类正确率和LFW的验证正确率都在增加。
    • 当身份类别增加一倍时,联合贝叶斯和神经网络在验证精度方面都线性提高。
  • 当身份类别从136增加到4349时,联合贝叶斯网络和神经网络的准确度分别增加了10.13%和8.42%,或者,当身份类别增加一倍时,平均准确度分别增加了2.03%和1.68%。
  • DeepID自身的分类错误率在40%到60%之间震荡,虽然较高,但DeepID是用来学特征的,并不需要要关注自身分类错误率;
    • convnet可以从对每个身份进行分类中学习,形成共享的隐藏表示,从而可以很好地对所有身份进行分类。
    • 更多的标识类有助于学习更好的隐藏表示,可以在不增加特征长度(紧凑)的情况下区分更多的人(区分性)。
  • ConvNet学习分类136、272、544、1087、2175和4349类的前1验证集错误率。
  • 对于联合贝叶斯网络和神经网络,与最佳单一面片相比,组合60个面片可分别提高4.53%和5.27%的精度。
  • 从1、5、15、30和60个面片中提取的特征测试联合贝叶斯(红线)和神经网络(蓝线)的准确性。性能随着更多功能的增加而不断提高。联合贝叶斯平均比神经网络好约1.8%

文末探索

  • 采用高斯过程和多源训练集的LFW的准确率为98.52%,甚至比人类的表现更高。这可能是因为非参数贝叶斯核方法可以使模型复杂性适应数据分布。高斯过程也可以通过深度学习建模。这可能是未来探索的另一个有趣方向。

习分类136、272、544、1087、2175和4349类的前1验证集错误率。

  • 对于联合贝叶斯网络和神经网络,与最佳单一面片相比,组合60个面片可分别提高4.53%和5.27%的精度。

    • [外链图片转存中…(img-7QagUGol-1640487130292)]
    • 从1、5、15、30和60个面片中提取的特征测试联合贝叶斯(红线)和神经网络(蓝线)的准确性。性能随着更多功能的增加而不断提高。联合贝叶斯平均比神经网络好约1.8%

文末探索

  • 采用高斯过程和多源训练集的LFW的准确率为98.52%,甚至比人类的表现更高。这可能是因为非参数贝叶斯核方法可以使模型复杂性适应数据分布。高斯过程也可以通过深度学习建模。这可能是未来探索的另一个有趣方向。

【读点论文】Deep Learning Face Representation from Predicting 10,000 Classes。deepID相关推荐

  1. 人脸识别 论文阅读 (3)- DeeplD1:Deep Learning Face Representation from Predicting 10,000 Classes]

    理解参考:张雨石博客 DeepID1 (Linkface 孙祎) 文章目录 DeepID1 @[TOC](文章目录) 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据 总结 为什 ...

  2. 深度学习论文笔记-Deep Learning Face Representation from Predicting 10,000 Classes

    来自:CVPR 2014   作者:Yi Sun ,Xiaogang Wang,Xiaoao Tang 题目:Deep Learning Face Representation from Predic ...

  3. DeeoID:Deep learning face representation from predicting 10,000 classes

    参考文献:<DeeoID:Deep learning face representation from predicting 10,000 classes> 1 Effective way ...

  4. (DeepID)Deep Learning Face Representation from Predicting 10,000 Classes

    https://www.researchgate.net/publication/283749931_Deep_Learning_Face_Representation_from_Predicting ...

  5. Deep Learning Face Representation by Joint Identification-Verification

     Deep Learning Face Representation by Joint Identification-Verification 转载请注明:http://blog.csdn.net ...

  6. 【读点论文】Deep Learning Face Representation by Joint Identification-Verification,深度学习应用在优化问题上,deepid2

    Deep Learning Face Representation by Joint Identification-Verification 人脸识别的关键挑战是开发有效的特征表示,以减少个体内的差异 ...

  7. DeepID2:Deep Learning Face Representation by Joint Identification-Verification

    参考文献:<DeepID2:Deep Learning Face Representation by Joint Identification-Verification> 1 网络结构 2 ...

  8. cv方向论文跟读笔记《Deep Learning》(2)

    <Deep Learning>From <Nature> author:Yann lecun, Yoshua bengio, Geoffery Hinton 第二课时: CNN ...

  9. [转载]Deep Learning·NLP·Representation

    原文地址:Mr.Scofield ----- csdn From RxNLP. Indexing: 〇.序 一.DeepNLP的核心关键:语言表示(Representation) 二.NLP词的表示方 ...

最新文章

  1. [系统开发] Postfix 邮件管理系统
  2. 最高70万!深圳大学高薪招150名教师引关注
  3. 方舟服务器如何修改恐龙,方块方舟人物及驯养恐龙属性修改教程 人物属性怎么修改_游侠网...
  4. laplacian算子的运用
  5. 9.2-3 pstree pgrep
  6. 编程语言五花八门,哪种可以让程序员赚到更多钱?
  7. 一道数学题引发的思考
  8. 【数字信号调制】基于matlab多进制数字相位调制(4PSK)【含Matlab源码 1001期】
  9. c语言必背数据结构_严蔚敏数据结构(C语言版)知识点总结笔记课后答案
  10. pdf编辑器如何在pdf上修改
  11. 订单超时自动取消 java_springboot 支付订单超时自动处理
  12. Linux页表查询--页表项、页面、页内偏移量
  13. 叠氮PEG叠氮,N3-PEG-N3
  14. LocalDateTime与DateTimeFormatter,毫秒值,时间和文本转换
  15. 编写程序,提示用户输入学号、成绩
  16. 从Google白皮书看企业安全最佳实践
  17. 所见即所得网页html编辑器,在线所见即所得HTML编辑器的实现原理浅析
  18. 2021-03-05 pandas(合并_分组聚合_复合索引)
  19. PELU激活函数的tensorflow实现(一) Parametric Exponential Linear Unit
  20. 移动端 transition动画函数的封装(仿Zepto)以及 requestAnimationFrame动画函数封装(仿jQuery)...

热门文章

  1. Git_GitHub——基本操作、创建远程库、远程库操作、团队协作、SSH免密登录
  2. 红外测温仪技术方案开发
  3. 实习 | 深圳市彼岸心智科技有限公司招募新成员啦
  4. C语言小游戏->井字棋
  5. 过拟合的原因以及解决办法
  6. 马上创业网日常有话说——我与外国友人Say Hi
  7. python解决数学问题_用python处理数学问题
  8. 视频有黑边怎么办?如何裁剪视频画面的黑边?
  9. 解决发送添加附件的邮件时,附件名是一个以UTF-8开头的随机乱码
  10. 设计模式普及之抽象工厂模式