《A Discriminative Feature Learning Approach for Deep Face Recognition》阅读笔记

devtools/2024/9/20 7:19:07/ 标签: 论文阅读, 论文笔记

论文标题

《A Discriminative Feature Learning Approach for Deep Face Recognition》

一种用于深度人脸识别的判别性特征学习方法

作者

Yandong Wen、Kaipeng Zhang、Zhifeng Li 和 Yu Qiao

来自深圳市计算机视觉与专利重点实验室、中国科学院深圳先进技术研究院和香港中文大学

初读

摘要

  • 卷积神经网络(CNNs)在计算机视觉领域被广泛使用,显著提高了现有技术水平。
  • 在大多数可用的CNNs中,softmax 损失函数被用作训练深层模型的监督信号。
  • 为了增强深度学习特征的判别力,本文为人脸识别任务提出了一种新的监督信号,称为中心损失。
    • 具体来说,中心损失同时学习每个类深层特征的中心,并惩罚深层特征与其对应类别中心之间的距离。
    • 更重要的是,我们证明了所提出的中心损失函数在 CNNs 中是可训练且易于优化的。
    • 通过 softmax 损失和中心损失的联合监督,我们可以训练一个健壮的CNNs,以尽可能多地获得具有两个关键学习目标——类间离散性和类内紧凑性的深层特征,这对人脸识别至关重要。
  • 效果:
    • 令人鼓舞的是,我们的 CNNs(采用这种联合监督)在几个重要的人脸识别基准上,如 Labeled Faces in the Wild (LFW)、YouTube Faces (YTF) 和 MegaFace Challenge,取得了最先进的准确率。
    • 特别是,我们的新方法在小训练集协议(包含少于 500000 张图像和少于 20000 人)下的 MegaFace (最大的公共领域人脸基准)上取得了最佳结果,显著提高了以前的结果,并为人脸识别和人脸验证任务设定了新的技术水平。

结论

  • 在本文中,我们提出了一种新的损失函数,称为中心损失。
  • 通过将中心损失与softmax损失结合,共同监督CNN的学习,可以显著增强深度学习特征的判别力,从而实现稳健的人脸识别。
  • 在几个大规模的人脸基准上的广泛实验已经令人信服地证明了我们提出方法的有效性。

再读

Section 1 Introduction

  • CNNs

    • 卷积神经网络(CNNs)在视觉领域取得了巨大成功,显著提高了分类问题的技术水平,例如对象、场景、动作等等。这主要得益于大规模训练数据和端到端学习框架。最常用的 CNNs 执行特征学习和标签预测,将输入数据映射到深度特征(最后一层隐藏层的输出),然后到预测的标签,如图 1 所示。

      在这里插入图片描述

      • 图片注解:图 1. 卷积神经网络的典型框架。
    • 在通用的对象、场景或动作识别中,可能的测试样本的类别在训练集内,这也被称为闭集识别(close-set identification)。因此,预测的标签决定了性能,而 softmax 损失能够直接解决分类问题。在这种情况下,标签预测(最后一层全连接层)就像一个线性分类器,而深度学习的特征很容易是可分离的。

  • 人脸识别任务的判别性

    • 对于人脸识别任务,深度学习的特征不仅需要是可分离的,而且还需要具有判别性。
    • 由于在实际操作中不可能预先收集所有可能的测试身份进行训练,因此 CNN 中的标签预测并不总是适用。深度学习的特征需要足够判别性和泛化能力,以便在没有标签预测的情况下识别新的未见类别。
    • 判别性能力描述了特征在紧凑的类内变化和可分离的类间差异两个方面,如图 1 所示。判别性特征可以通过最近邻(NN)或k最近邻(k-NN)算法很好地进行分类,这些算法不一定依赖于标签预测。然而,softmax 损失仅鼓励特征的分离性。因此,所得到的特征对于人脸识别来说并不足够有效。
  • 小批量下的损失设计

    • 在 CNNs 中为判别性特征学习构建高效的损失函数并非易事。因为随机梯度下降(SGD)是基于小批量(mini-batch)来优化 CNNs 的,这不能很好地反映深度特征的全局分布。由于训练集规模巨大,每次迭代输入所有训练样本是不切实际的。
    • 作为替代方法,对比损失和三元组损失分别为图像对和三元组构建损失函数。然而,与图像样本相比,训练对或三元组的数量显著增加。这不可避免地导致收敛速度慢和不稳定。通过仔细选择图像对或三元组,问题可能会部分缓解。但这会显著增加计算复杂度,并且训练过程变得不方便。
  • 中心损失(center loss)

    在本文中,我们提出了一种新的损失函数,即中心损失(center loss),用以有效增强神经网络中深度学习特征的判别能力。

    • 具体来说,我们为每个类别的深度特征学习一个中心(一个与特征维度相同的向量)。在训练过程中,我们同时更新中心并最小化深度特征与其对应类别中心之间的距离。
    • CNNs 在 softmax 损失和中心损失的联合监督下进行训练,有一个超参数来平衡这两个监督信号。直观地说,softmax 损失强制不同类别的深度特征保持分离。中心损失有效地将同一类别的深度特征拉向它们的中心。
    • 在联合监督下,不仅类间特征差异被放大,而且类内特征变化也被减少。因此,深度学习特征的判别能力可以得到高度增强。
  • 本文贡献

    我们的主要贡献总结如下:

    • 我们提出了一种新的损失函数(称为中心损失)来最小化深度特征类内距离。据我们所知,这是第一次尝试使用这样的损失函数来帮助监督 CNN 的学习。在中心损失和 softmax 损失的联合监督下,可以获得高度判别性的特征,以支持鲁棒的人脸识别,这一点得到了我们的实验结果的支持。
    • 我们展示了所提出的损失函数在 CNN 中非常容易实现。我们的 CNN 模型是可训练的,并且可以通过标准的 SGD 直接优化。
    • 我们在 MegaFace Challenge(具有 100 万张人脸用于识别的最大公共域人脸数据库)的数据集上进行了广泛的实验,并在小训练集评估协议下设置了新的最先进水平。我们还验证了我们的新方法在 Labeled Faces in the Wild(LFW)和 YouTube Faces(YTF)数据集上的卓越性能。

Section 2 Related work

  • 近年来,通过深度学习进行的人脸识别取得了一系列的突破。将一对人脸图像映射到距离的想法始于[6]。他们训练了连体网络,使得正对(即同一个人的人脸图像对)的相似度度量小,而对负对(即不同人的人脸图像对)的相似度度量大。
  • Hu 等人学习了一种非线性变换,并在正负人脸图像对之间产生了一个判别的深度度量边界。这些方法需要图像对作为输入。
  • 最近,[34, 31] 通过挑战识别信号(softmax 损失函数)来监督 CNNs 的学习过程,这为深度学习特征带来了更丰富的与身份相关的信息。
  • 之后,[29, 37] 采用了联合识别-验证监督信号,从而得到了更具判别性的特征。
  • [32] 通过在每个卷积层添加一个全连接层和损失函数来增强监督。
  • 三元组损失的有效性已在 [27, 25, 21] 中得到了证明。通过深度嵌入,将锚点与正样本之间的距离最小化,而将锚点与负样本之间的距离最大化,直到满足边际为止。它们在 LFW 和 YTF 数据集上实现了最先进的性能。

Section 3 The Proposed Approach

拟议的方法

在本节中,我们将详细阐述我们的方法。我们首先使用一个简单的例子直观地展示深度学习特征的分布。受此分布的启发,我们提出了中心损失来提高深度学习特征的判别能力,然后进行了一些讨论。

在这里插入图片描述

  • 图片注解:表 1. 我们在简单示例中使用的 CNN 架构,称为 LeNets++。其中一些卷积层后面跟着最大池化层。 ( 5 , 32 ) / 1 , 2 × 2 (5, 32)_{/1,2}\times2 (5,32)/1,2×2 表示有两个级联的卷积层,每个层有 32 32 32 5 × 5 5\times5 5×5 大小的滤波器,其中步长和填充分别为 1 1 1 2 2 2 2 / 2 , 0 2_{/2,0} 2/2,0 表示网格为 2 × 2 2\times2 2×2 的最大池化层,其中步长和填充分别为 2 2 2 0 0 0。在 LeNets++ 中,我们使用参数化修正线性单元(PReLU)作为非线性单元。

3.1 A toy example

简单示例

  • 损失函数

    softmax 损失函数如下所示:
    L S = − ∑ i = 1 m log ⁡ e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j ( 1 ) \mathcal{L}_S=-\sum^m_{i=1}\log\frac{e^{\boldsymbol{W}^T_{y_i}\boldsymbol{x}_i+b_{y_i}}}{\sum^n_{j=1}e^{\boldsymbol{W}^T_j\boldsymbol{x}_i+b_j}}\qquad\qquad(1) LS=i=1mlogj=1neWjTxi+bjeWyiTxi+byi(1)

    • 在方程 1 中, x i ∈ R d x_i\in\R^d xiRd 表示第 i i i 个深度特征,属于第 y i y_i yi 类。 d d d 是特征维度。
    • W j ∈ R d W_j\in\R^d WjRd 表示最后一层全连接层中权重 W ∈ R d × n W\in\R^{d\times n} WRd×n 的第 j j j 列, b ∈ R n b\in\R^n bRn 是偏置项。
    • 小批量的大小和类的数量分别是 m m m n n n。为了简化分析,我们省略了偏置项。(实际上,性能几乎没有什么差别)。
  • 二维可视化

    • 在本节中,我们展示了在 MNIST 数据集上的一个简单示例。我们将 LeNets 修改为一个更深更宽的网络,但将最后一个隐藏层的输出数量减少到 2(这意味着深度特征的维度为 2)。因此,我们可以直接在 2-D 平面上绘制特征以进行可视化。网络架构的更多细节在表 1 中给出。
    • 在图 2 中绘制了得到的 2-D 深度特征,以说明其分布情况。由于最后一层全连接层像一个线性分类器一样作用,不同类的深度特征通过决策边界来区分。从图 2 我们可以观察到:
      1. 在 softmax 损失的监督下,深度学习特征是可分离的,
      2. 深度特征判别性不够,因为它们仍然显示出显著的类内变化。因此,直接使用这些特征进行识别是不合适的。

    在这里插入图片描述

    • 图片注解:图 2. 在 softmax 损失的监督下,训练集 (a) 和测试集 (b) 中深度学习特征的分布,这里我们使用 50K/10K 的训练/测试划分。不同颜色的点表示来自不同类的特征。最好在彩色中查看。

3.2 The center loss

中心损失

  • 原版中心损失

    那么,如何开发一个有效的损失函数来提高深度学习特征的判别能力呢?直观地说,最小化类内差异同时保持不同类别的特征可分离是关键。为此,我们提出了中心损失函数,如方程 2 所示。
    L C = 1 2 ∑ i = 1 m ∥ x i − c y i ∥ 2 2 ( 2 ) \mathcal{L}_C=\frac{1}{2}\sum^m_{i=1}\Vert\boldsymbol{x}_i-\boldsymbol{c}_{y_i}\Vert^2_2\qquad\qquad(2) LC=21i=1mxicyi22(2)

    • c y i ∈ R d \boldsymbol{c}_{yi}\in\R^d cyiRd 表示第 y i y_i yi 类深度特征的类中心。
  • 基于小批量进行更新的中心损失

    • 这个公式有效地刻画了类内差异。理想情况下, c y i \boldsymbol{c}_{y_i} cyi 应该随着深度特征的变化而更新。换句话说,我们需要考虑整个训练集,并在每次迭代中平均每个类的特征,这是低效甚至不切实际的。因此,中心损失不能直接使用。这可能是直到现在这样的中心损失从未在 CNN 中使用过的原因。

    • 为了解决这个问题,我们进行了两个必要的修改。首先,我们不是根据整个训练集来更新中心,而是基于小批量进行更新。在每次迭代中,通过平均相应类的特征来计算中心(在这种情况下,一些中心可能不会更新)。其次,为了避免少数错误标记样本引起的大幅波动,我们使用一个标量 α \alpha α 来控制中心的学习率。 L C \mathcal{L}_C LC 关于 x i x_i xi 的梯度以及 c y i \boldsymbol{c}_{y_i} cyi 的更新方程计算如下:
      ∂ L C ∂ x i = x i − c y i ( 3 ) Δ c j = ∑ i = 1 m δ ( y i = j ) ⋅ ( c j − x i ) 1 + ∑ i = 1 m δ ( y i = j ) ( 4 ) \begin{gather} \frac{\partial\mathcal{L}_C}{\partial\boldsymbol{x}_i}=\boldsymbol{x}_i-\boldsymbol{c}_{y_i}\qquad\qquad(3)\\ \Delta\boldsymbol{c}_j=\frac{\sum^m_{i=1}\delta(y_i=j)\cdot(\boldsymbol{c}_j-\boldsymbol{x}_i)}{1+\sum^m_{i=1}\delta(y_i=j)}\qquad\qquad(4) \end{gather} xiLC=xicyi(3)Δcj=1+i=1mδ(yi=j)i=1mδ(yi=j)(cjxi)(4)

      • 其中,如果条件满足,则 δ ( c o n d i t i o n ) = 1 \delta(condition)=1 δ(condition)=1,如果不满足,则 δ ( c o n d i t i o n ) = 0 \delta(condition)=0 δ(condition)=0 α \alpha α 被限制在 [ 0 , 1 ] [0, 1] [0,1] 范围内。

      • 我们采用 softmax 损失和中心损失的联合监督来训练 CNN,以进行判别性特征学习。公式如方程 5 所示。
        L = L S + λ L C = − ∑ i = 1 m log ⁡ e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j + 1 2 ∑ i = 1 m ∥ x i − c y i ∥ 2 2 ( 5 ) \begin{align} \mathcal{L}&=\mathcal{L}_S+\lambda\mathcal{L}_C\\ &=-\sum^m_{i=1}\log\frac{e^{\boldsymbol{W}^T_{y_i}\boldsymbol{x}_i+b_{y_i}}}{\sum^n_{j=1}e^{\boldsymbol{W}^T_j\boldsymbol{x}_i+b_j}}+\frac{1}{2}\sum^m_{i=1}\Vert\boldsymbol{x}_i-\boldsymbol{c}_{y_i}\Vert^2_2 \end{align}\qquad\qquad(5) L=LS+λLC=i=1mlogj=1neWjTxi+bjeWyiTxi+byi+21i=1mxicyi22(5)

  • 显然,由中心损失监督的 CNN 是可训练的,并且可以通过标准的 SGD 进行优化。一个标量 λ \lambda λ 被用来平衡这两个损失函数。如果将 λ \lambda λ 设置为 0,传统的 softmax 损失可以被认为是这种联合监督的一个特例。在算法 1 中,我们总结了在具有联合监督的 CNN 中的学习细节。

    在这里插入图片描述

  • 我们还进行了实验来说明 λ \lambda λ 如何影响分布。图 3 显示了不同的 λ \lambda λ 导致不同的深度特征分布。在适当的 λ \lambda λ 下,深度特征的判别能力可以得到显著增强。此外,特征在 λ \lambda λ 的广泛范围内具有判别性。因此,联合监督有助于深度学习特征的判别能力,这对于人脸识别至关重要。

    在这里插入图片描述

    • 图片注解:图 3. 在 softmax 损失和中心损失的联合监督下深度学习特征的分布。不同颜色的点表示来自不同类的特征。不同的 λ \lambda λ 导致不同的深度特征分布( α = 0.5 \alpha=0.5 α=0.5)。白色点( c 0 , c 1 , ⋯ , c 9 c_0, c_1,\cdots,c_9 c0,c1,,c9)表示深度特征的 10 个类中心。最好在彩色中查看。

3.3 Discussion

  • 联合监督的必要性
    • 如果我们只使用 softmax 损失作为监督信号,得到的深度学习特征将包含大量的类内变化。
    • 另一方面,如果我们只通过中心损失来监督 CNN,深度学习特征和中心将退化为零(此时,中心损失非常小)。
    • 简单地使用其中任何一个都无法实现判别性特征学习。因此,有必要将它们结合起来,共同监督 CNN,这一点已经通过我们的实验得到了证实。
  • 与对比损失和三元组损失相比
    • 最近,对比损失和三元组损失也被提出用于增强深度学习人脸特征的判别能力。然而,对比损失和三元组损失都面临着在训练集中构成样本对或样本三元组时的数据急剧扩张问题。
    • 我们的中心损失与 softmax 损失具有相同的要求,不需要对训练样本进行复杂的重新组合。因此,我们的 CNN 的监督学习更高效且易于实现。
    • 此外,我们的损失函数更直接地针对类内紧凑性的学习目标,这对判别性特征学习非常有益。

Section 4 Experiments

实验

必要的实现细节在 4.1 节给出。然后我们在 4.2 节调查参数λ和α的敏感性。在 4.3 节和 4.4 节中,我们在几个公共域人脸数据集(LFW,YTF 和 MegaFace Challenge)上进行了广泛的实验,以验证所提出方法的有效性。

4.1 Implementation Details

实施细节

  • 预处理(Preprocessing)

    • 所有图像中的人脸及其标志点都是由最近提出的算法检测的。
    • 我们使用 5 个标志点(两只眼睛、鼻子和嘴角)进行相似变换。当检测失败时,如果是在训练集中,我们就简单地丢弃该图像,但如果是一个测试图像,我们就使用提供的标志点。
    • 人脸被裁剪成 112 × 96 112\times96 112×96 的 RGB 图像。遵循先前的惯例,RGB 图像中的每个像素(在 [0, 255] 范围内)都通过减去 127.5 127.5 127.5 然后除以 128 128 128 进行归一化。
  • 训练数据(Training data)

    • 我们使用网络收集的训练数据,包括 CASIAWebFace,CACD2000,Celebrity+。
    • 在移除出现在测试数据集中的身份图像后,大约有 70 万张图像,涉及 17,189 个独特的人物。
    • 在 4.4 节中,我们只使用了约 49 万张训练数据,遵循小训练集的协议。图像进行水平翻转以进行数据增强。与[27](2亿)、[34](4千万)和[25](2千万)相比,这是一个小规模的训练集。
  • CNNs 中的详细设置(Detailed settings in CNNs)

    • 我们使用 Caffe 库以及我们的修改来实现 CNN 模型。本节中所有的 CNN 模型都具有相同的架构,具体细节在图 4 中给出。

      在这里插入图片描述

      • 图片注解:图 4. 用于人脸识别实验的 CNN 架构。采用联合监督。卷积层和局部卷积层中的滤波器大小均为 3 × 3 3\times3 3×3,步长为 1 1 1,后面跟着 PReLU 非线性单元。三个局部卷积层中的权重分别在 4 × 4 4\times4 4×4 2 × 2 2\times2 2×2 1 × 1 1\times1 1×1 的区域内部共享。卷积层的特征图数量为 128 128 128,局部卷积层的特征图数量为 256 256 256。最大池化的网格为 2 × 2 2\times2 2×2,步长为 2 2 2。第 4 4 4 个池化层和第 3 3 3 个局部卷积层的输出被连接起来作为第 1 1 1 个全连接层的输入。全连接层的输出维度为 512 512 512。最好在彩色中查看。
    • 为了公平比较,我们分别训练了三种模型:在 softmax 损失监督下的模型 A,softmax 损失和对比损失监督下的模型 B,softmax 损失和中心损失监督下的模型 C。

    • 这些模型在两个GPU(TitanX)上以 256 的批量大小进行训练。

      • 对于模型 A 和模型 C,学习率从 0.1 开始,在 16K、24K次迭代时除以 10。完整的训练在 28K 次迭代时完成,大约需要 14 小时。
      • 对于模型 B,我们发现它收敛得更慢。因此,我们将学习率初始化为 0.1,并在 24K、36K 次迭代时切换。总迭代次数为 42K,耗时 22 小时。
  • 测试中的详细设置(Detailed settings in testing)

    • 深度特征取自第一个全连接层的输出。我们提取每个图像及其水平翻转图像的特征,并将它们连接起来作为表示。
    • 得分是通过两个特征在 PCA 之后的余弦距离来计算的。
    • 最近邻和阈值比较用于身份识别和验证任务。注意,我们所有测试只使用单个模型。

4.2 Experiments on the parameter λ and α

参数 λ \lambda λ α \alpha α 的实验

  • 超参数 λ \lambda λ 控制着类内变化,而 α \alpha α 控制着模型 C 中中心 c c c 的学习率。这两个参数对于我们模型都是至关重要的。因此,我们进行了两个实验来调查这两个参数的敏感性。

    在这里插入图片描述

    • 图片注解:图 5. LFW 数据集上不同模型的面部验证准确率,分别由 (a) 不同 λ \lambda λ 和固定 α = 0.5 \alpha=0.5 α=0.5 的模型实现。 (b) 不同 α \alpha α 和固定 λ = 0.003 \lambda=0.003 λ=0.003 的模型实现。
  • 在第一个实验中,我们将 α \alpha α 固定为 0.5,并且使 λ \lambda λ 从 0 变化到 0.1 来学习不同的模型。这些模型在 LFW 数据集上的验证准确率如图 5 所示。

    • 非常明显,仅使用 softmax 损失(在这种情况下 λ \lambda λ 为 0)不是一个好的选择,导致验证性能不佳。适当选择 λ \lambda λ 的值可以提高深度学习特征的验证准确率。
    • 我们还观察到,我们的模型在广泛的 λ \lambda λ 范围内验证性能保持稳定。
  • 在第二个实验中,我们将 λ \lambda λ 固定为 0.003,并且使 α \alpha α 从 0.01 变化到 1 来学习不同的模型。这些模型在 LFW 上的验证准确率如图 5 所示。

    • 同样,我们的模型在广泛的 α \alpha α 范围内验证性能保持稳定。

4.3 Experiments on the LFW and YTF datasets

LFW 和 YTF 数据集上的实验

  • 在本部分中,我们在两个著名的不受约束环境中的人脸识别基准上评估了我们的单个模型,即 LFW 和 YTF 数据集。它们是图像和视频中人脸识别的优秀基准。其中的一些示例如图 6 所示。

    在这里插入图片描述

    • 图片注解:图 6. LFW 和 YTF 数据集中的某些人脸图像和视频。绿色框架中的脸部图像对是正对(同一个人),而红色框架中的是负对。每个图像中的白色边界框表示要测试的脸部。
  • 我们的模型是在 0.7M 的外部数据上训练的,这些数据中没有与 LFW 和 YTF 中的人重叠。在本节中,我们将 λ \lambda λ 固定为 0.003,模型 C 的 α \alpha α 为 0.5。

    • LFW 数据集

      包含来自 5749 个不同身份的 13,233 张网络收集的图像,姿态、表情和光照变化很大。遵循无限制且有标记的外部数据的标准协议。我们测试了 6,000 对人脸,并在表 2 中报告了实验结果。

    • YTF数据集

      由 1,595 个人的 3,425 个视频组成,平均每人有 2.15 个视频。视频片段的持续时间从 48 帧到 6,070 帧不等,平均长度为 181.3 帧。我们再次遵循无限制且有标记的外部数据协议,并在表 2 中报告了在 5,000 个视频对上的结果。

  • 实验结果

    • 在这里插入图片描述

      • 图片注解:表 2. LFW 和 YTF 数据集上不同方法的验证性能
    • 从表 2 的结果中,我们可以得出以下观察。

      • 首先,模型 C(由 softmax 损失和中心损失共同监督)显著优于基线模型 A(仅由 softmax 损失监督),将性能从(LFW 上的 97.37% 和 YTF 上的 91.1%)提升到(LFW 上的 99.28% 和 YTF 上的 94.9%)。这表明联合监督可以显著增强深度学习特征的判别能力,证明了中心损失的有效性。
      • 其次,与模型B(由 softmax 损失和对比损失组合监督)相比,模型 C 取得了更好的性能(99.10% 对 99.28% 和 93.8% 对 94.9%)。这显示了中心损失在设计 CNNs 中的优势。
      • 最后,与两个数据库上的最先进结果相比,所提出的模型 C(使用更少的训练数据和更简单的网络架构)在两个数据库上始终位于基于两个数据库的顶级方法之列,在表 2 中大多数现有结果之上。这显示了所提出 CNNs 的优势。

4.4 Experiments on the dataset of MegaFace Challenge

在 MegaFace Challenge 数据集上的实验

  • MegaFace 数据集最近作为测试基准发布。这是一个非常具有挑战性的数据集,旨在评估在数百万个干扰项(不在测试集内的人)规模下的人脸识别算法的性能。MegaFace 数据集包括画廊集(gallery set)和探针集(probe set)。

    在这里插入图片描述

    • 图片注解:图7. MegaFace 数据集中的一些示例人脸图像,包括探针集和画廊。画廊至少包含一张正确的图像和数百万个干扰项。由于每个主题的内部变化很大,以及干扰项的多样性,身份识别和验证任务变得非常具有挑战性。

    • 画廊集包含来自 690K 不同个体的超过 100 万张图像,作为来自 Yahoo 的 Flickr 照片的一个子集。

    • 在这个挑战中使用的探针集包括两个现有数据库:Facescrub 和 FGNet。

      • Facescrub 数据集是一个公开可用的数据集,包含 530 个独特个体的 100K 张照片(男性 55,742 张图像和女性 52,076 张图像)。通过每个身份都有足够的样本,可以减少可能的偏差。
      • FGNet 数据集是一个面部老化数据集,包含来自 82 个身份的 1002 张图像。每个身份都有不同年龄(从 0 岁到 69 岁)的多张面部图像。
  • 在两种协议(大或小训练集)下,MegaFace 数据集有几种测试场景(身份识别、验证和姿态不变性)。

    • 如果它包含少于 0.5M 的图像和 20K 个主题,训练集被定义为小规模。遵循小训练集的协议,我们将训练图像的大小减少到 0.49M,同时保持身份数量不变(即 17,189 个主题)。
    • 与 Facescrub 数据集重叠的图像被丢弃。
    • 为了公平比较,我们也在小训练集上根据不同的监督信号训练了三种 CNN 模型。这些模型分别被称为模型 A-、模型 B- 和模型 C-。在模型 C- 中,遵循第 4.3 节的相同设置, λ \lambda λ 为 0.003, α \alpha α 为 0.5。我们使用提供的代码进行了实验,该代码仅在三个画廊(Set 1)中的一个上测试我们的算法。
  • 身份识别(Face Identification)

    • 身份识别的目的是将给定的探针图像与画廊中的同一人的图像匹配。在这个任务中,我们需要计算给定探针人脸图像与画廊之间的相似度,画廊中至少包含一张与探针图像具有相同身份的图像。

    • 此外,画廊包含不同数量(从 10 到 100 万)的干扰项,,使得测试的挑战性逐渐增加。更多关于细节的信息可以在[23]中找到。在身份识别实验中,我们通过累积匹配特征(Cumulative Match Characteristics,CMC)曲线来展示结果。它揭示了正确画廊图像被排名在前 K 的概率。结果如图 8 所示。

      在这里插入图片描述

      • 图片注解:图 8. 小训练集协议下不同方法(在 Set 1 上,1M 和 10K 干扰项)的 CMC 曲线。(a)1M 干扰项,(b)10K 干扰项。其他方法的结果由 MegaFace 团队提供。
  • 身份验证(Face Verification)

    • 对于身份验证,算法应该决定给定的一对图像是否为同一人。探针和画廊数据集之间产生了 40 亿个负对。我们计算了真接受率(TAR)和假接受率(FAR),并在图 9 中绘制了不同方法的操作特征(ROC)曲线。

      在这里插入图片描述

      • 图片注解:图 9. 小训练集协议下不同方法(在 Set 1 上,1M 和 10K 干扰项)的操作特征(ROC)曲线。(a)1M 干扰项,(b)10K 干扰项。其他方法的结果由 MegaFace 团队提供。
  • 我们将我们的方法与许多现有方法进行了比较,包括 i) LBP 和 JointBayes,ii) 我们的基线深度模型(模型A-和模型B-),以及iii) 其他小组提交的深度模型。

    • 如图8和图9所示,手工特征和浅层模型表现不佳。随着干扰项数量的增加,它们的准确率急剧下降。
    • 此外,基于深度学习的方法比传统方法表现更好。然而,仍然有很大的性能提升空间。
    • 最后,通过 softmax 损失和中心损失的联合监督,模型 C- 取得了最佳结果,不仅明显超越了模型 A- 和模型 B-,而且显著优于其他已发表的方法。
  • 干扰项对抗:

    • 为了满足实际需求,人脸识别模型应该能够对抗数百万个干扰项,实现高性能。在这种情况下,只有与至少 1M 个干扰项相关的 Rank-1 识别率以及在低假接受率(例如, 1 0 − 6 10^{-6} 106)下的验证率才有实际意义。我们在表 3 和表 4 中报告了不同方法的实验结果。

      在这里插入图片描述

      • 图片注解:表 3. 在 MegaFace 数据集上,不同方法在 1M 个干扰项下的识别率。

      在这里插入图片描述

      • 图片注解:表 4. 在 MegaFace 数据集上,不同方法在 1 0 − 6 10^{-6} 106 FAR下的验证真接受率(TAR)在 1M 个干扰项下。
    • 从这些结果中,我们可以得出以下观察:

      • 首先,毫不奇怪,模型 C- 在面部识别和验证任务中持续以显著优势超越模型 A- 和模型 B-,确认了设计的损失函数的优势。
      • 其次,在小型训练集的评估协议下,所提出的模型 C- 在面部识别和验证任务中取得了最佳结果,在面部识别上比第二名高出 5.97%,在验证上高出 10.15%。
      • 此外,值得注意的是,模型 C- 甚至超越了一些使用大训练集训练的模型(例如,北京 FaceCall 公司)。最后,Google 和 NTechLAB 的模型在大型训练集的协议下取得了最佳性能。值得注意的是,他们的私有训练集(Google 的 500M 和 NTechLAB 的 18M)比我们的(0.49M)大得多。

http://www.ppmy.cn/devtools/16684.html

相关文章

牛客NC199 字符串解码【中等 递归,栈的思想 C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/4e008fd863bb4681b54fb438bb859b92 相同题目: https://www.lintcode.com/problem/575 思路 解法和基础计算器1,2,3类似,递归参考答案C struct Info {string str;int stopindex;Info(str…

linux 系统文件目录颜色及特殊权限对应的颜色

什么决定文件目录的颜色和背景? 颜色 说明 栗子 权限白色表示普通文件 蓝色表示目录 绿色表示可执行文件 浅蓝色链接文件 黄色表示设备文件 红色 表示压缩文件 红色闪烁表示链接的文件有问题 灰色 表示其它文件 可以用字符表示文件的类型&am…

芯片制造的成本与定价

芯片制造的成本与定价之间存在密切关系,芯片制造商在设定产品价格时会充分考虑制造成本,并结合市场策略、竞争态势、客户接受度等多个因素来制定最终售价。以下是关于芯片制造成本与定价之间相互作用的一些关键点: 1. 成本构成 芯片制造成本主要包括以下几个方面: 设计成本…

信息系统项目管理师0069:数据运维(5信息系统工程—5.2数据工程—5.2.3数据运维)

点击查看专栏目录 文章目录 5.2.3数据运维1.数据存储2.数据备份3.数据容灾4.数据质量评价与控制记忆要点总结5.2.3数据运维 数据开发利用的前提是通过合适的方式将数据保存到存储介质上,并能保证有效的访问,还要通过数据备份和容灾手段,保证数据的高可用性。数据质量管理是在…

AI电销机器人系统源码部署之:freeswitch安装Linux

安装 FreeSWITCH(一个开源的电话交换系统)通常需要一些步骤,以下是在 Linux 系统上安装 FreeSWITCH 的基本指南: 准备工作: 确保你有一个运行 Linux 的服务器,并且有 root 或者具有 sudo 权限的用户。确保服…

一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝)

视觉Transformer(ViT)在计算机视觉领域标志性地实现了一次革命,超越了各种任务的最先进模型。然而,它们的实际应用受到高计算和内存需求的限制。本研究通过评估四种主要的模型压缩技术:量化、低秩近似、知识蒸馏和剪枝…

OSPF的协议特性

路由汇总的概念 l 路由汇总( Route Aggregation ),又称路由聚合(Route Summarization),指的是把一组明细路由汇聚成一条汇总路由条目的操作 l 路由汇总能够减少路由条目数量、减小路由表规模&#xff0…

什么是OCR转换?

OCR转换是指将图片或扫描文档中的文字内容转换成电子文本的过程。OCR代表光学字符识别(Optical Character Recognition),是一种通过算法和模型来识别图像或文档中的文字,并将其转换成可编辑、可搜索的文本格式。OCR转换通常包括以…

mysql服务器无法启动问题处理

一台hlr服务器用网关软件登录失败,查找原因,发现网关软件连接服务器的tcp的10002端口失败,超时无应答,导致连接失败。 用户反馈核心网hlr,smc无法登录,putty登录服务器,发现hlr10002端口没有打…

http忽略ssl认证

我们在发请求时,会遇到需要ssl证书验证的报错,针对该错误以及所使用的不同的创建连接的方式,进行ssl证书忽略 忽略SSL证书的流程 简介:需要告诉client使用一个不同的TrustManager。TrustManager是一个检查给定的证书是否有效的类…

【Matlab函数分析】对二维或三维散点数据插值函数scatteredInterpolant

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

使用git将本地项目上传到github

大致的流程是:创建本地仓库,把代码传到本地仓库,把本地仓库内容传到远程仓库。还不太完整,逐渐摸索使用吧 1、初始化仓库 git init在本地项目的路径中初始化一个仓库。 2、提交到本地 选择需要上传的文件 git add .提交到本地…

CMake+qt+Visual Studio

#使用qt Creator 创建Cmake 项目,使用Cmake Gui 生成sln 工程,使用Visual Studio 开发 ##使用qt Creator 创建CMake项目 和创建pro工程的步骤一致,只是在选择构建系统的步骤上选择CMake,接下来步骤完全相同 工程新建完成之后,构建cmake 项…

第11章 Android特色开发——基于位置的服务

第11章 Android特色开发——基于位置的服务 本章中,将要学习一些全新的Android技术,这些技术有别于传统的PC或Web领域的应用技术,是只有在移动设备上才能实现的。 基于位置的服务(Location Based Service)。由于移动…

机器学习(三)之监督学习2

前言: 本专栏一直在更新机器学习的内容,欢迎点赞收藏哦! 笔者水平有限,文中掺杂着自己的理解和感悟,如果有错误之处还请指出,可以在评论区一起探讨! 1.支持向量机(Support Vector Ma…

STM32中断系统详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 中断基本概念 2. STM32中断 3. NVIC的基本组件 3.1 NVIC的基本组件 3.2 NVIC的优先级 4. EXTI外部中断 4.1 基本概念 4.2 基本结构 5. AFIO 1. 中断基本概念 中断(Interrupt&…

数据结构--顺序表

顺序表:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 1,自己实现一个基础的顺序表: // 新增元素,默认在数组最后新增 void add(int data); // 在 po…

STCAD转换 晶联讯1353(5VLCD)显示

/***晶联讯1353(5VLCD)显示调节电位器参数变化***/ /******2018 6 30 08:50*L252 CODE 1339 ******/ /***变频器 PWM2017 5 6板测试AD晶联讯1353*****/ #include <reg52.h> // #define uint unsigned int …

云计算革新:以太网 Scale-UP 网络为 GPU 加速赋能

谈谈基于以太网的GPU Scale-UP网络 Intel Gaudi-3 采用 RoCE 互联技术&#xff0c;促进了 Scale-UP 解决方案。业界专家 Jim Keller 倡导以太网替代 NVLink。Tenstorrent 成功应用以太网实现片上网络互联。RoCE 和以太网已成为互联解决方案的新兴趋势&#xff0c;为高性能计算提…

【漏洞复现】SpringBlade dict-biz SQL注入漏洞

0x01 产品简介 SpringBlade 是一个由商业级项目升级优化而来的微服务架构 采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建,完全遵循阿里巴巴编码规范。提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。 0x02 漏洞概述 SpringBlade d…