深度人脸识别:CVPR2020论文要点

Towards Universal Representation Learning for Deep Face Recognition

论文链接:https://arxiv.org/pdf/2002.11841.pdf

摘要

识别狂野的面孔是极其困难的,因为它们看起来有各种各样的变化。传统的方法要么使用目标域中的特定注释变化数据进行训练,要么通过引入未标记的目标变化数据来适应训练数据。相反,我们提出了一个通用的表示学习框架,它可以在不利用目标领域知识的情况下处理给定训练数据中看不到的较大变化。我们将训练数据与一些语义上有意义的变化(如低分辨率、遮挡和头部姿势)进行了综合。然而,直接输入增广数据进行训练并不能很好地收敛,新引入的样本大多是硬例子。我们建议将特征嵌入分割成多个子嵌入,并为每个子嵌入关联不同的置信值,以平滑训练过程。通过调整不同分区上的变化分类损失和变化对抗损失,进一步解除了子嵌入的相关性。实验表明,该方法在lfwandmagface等一般人脸识别数据集上取得了很好的性能,而在微型人脸和IJB-S等极端基准上取得了显著的效果。

Introductions

深度人脸识别是将输入的图像映射到一个具有较小的内部同一距离和较大的内部同一距离的特征空间,这是通过损失设计和具有丰富的类内变化的数据集来实现的[29,40,17,38,4]。然而,即使是非常大的公共数据集,如MS-Celeb-1M,也表现出强烈的偏见,如种族[33]或头部姿势[20,24]。这种变化的缺乏导致在具有挑战性的测试数据集上性能显著下降,例如,先前最新技术[31]报告的IJB-S或TinyFace[11,3]的精度比IJB-A[14]或LFW[10]低约30%。最近的研究试图通过识别相关的变异因素,并通过领域适应方法增加数据集以合并它们来缓解这个问题[33]。有时,这样的变化很难识别,因此领域适应方法被用来调整训练和测试领域之间的特征【28】。或者,可以在不同的数据集上训练单个模型,并对其进行集成,以在每个数据集上获得良好的性能[19]。

所有这些方法要么只处理特定的变化,要么要求访问测试数据分布,要么增加额外的运行时复杂性来处理更广泛的变化。相比之下,我们建议学习一个单一的“通用”深度功能演示,它可以处理变化的婴儿识别,而不需要访问测试数据分布,并保持运行时效率,同时在不同情况下获得强大的性能,特别是在低质量的图像上(见图1)。

本文在第三节中介绍了一些新的贡献来学习这种普遍的表示。首先,我们注意到具有非正面姿势、低分辨率和严重遮挡的输入是对“野外”应用提出挑战的关键可命名因素,对于这些应用,训练数据可能会得到综合增强。但是直接在训练中加入硬扩充的例子会导致一个更难的优化问题。我们通过提出一个识别损失来缓解这个问题,这个损失可以解释每个样本对学习概率特征嵌入的信心。

其次,我们通过将嵌入分解为子嵌入,每个子嵌入在训练过程中都有独立的置信值,从而寻求最大化嵌入的表示能力。

第三,鼓励所有子嵌入通过子嵌入的不同分区上的两个相反的正则化进一步去相关,即变化分类损失和变化对抗损失。第四,我们通过挖掘训练数据中的额外变化来进一步扩展去相关正则化,对于这些变化,合成增强不是微不足道的。

最后,我们通过一个概率集合来解释子嵌入对不同因素的不同判别能力,这个概率集合解释了它们的不确定性。在第5节中,我们对公共数据集上提出的方法进行了广泛的评估。

与我们的基线模型相比,该方法在一般人脸识别基准(如LFW和YTF)上保持了较高的精度,同时显著提高了在IJB-C、IJB-S等具有挑战性的数据集上的性能,在这些数据集上实现了最新的性能。详细的烧蚀研究显示了上述每一种贡献对实现这些强大性能的影响。

总之,本文的主要贡献有:

•一个面部表情学习框架,通过将通用特征与不同的变化相关联来学习通用特征,从而提高对不同测试数据集的通用性。

•在培训期间利用样本可信度从硬样本中学习特征的可信度识别损失。

•特征去相关正则化,在不同的子嵌入分区上应用变化分类损失和变化对抗损失,从而提高性能。

•有效结合合成数据的训练策略,以训练适用于原始训练分布之外的图像的人脸表示。

•几个具有挑战性的基准的最新成果,如IJB-A、IJB-C、TinyFace和IJB-S。

实验表明,该方法在LFW和Mega Face等通用人脸识别数据集上取得了最好的性能,而在Tiny Face和IJB-S等极端基准上则表现得更好。

背景知识

现在已经有很多方法去进行人脸识别。然后,所有这些方法要么只处理特定的变化,要么需要访问测试数据分布,要么增加额外的运行时复杂性来处理更广泛的变化。相比之下,作者建议学习一个单一的“通用”深层特征表示,它可以处理人脸识别中的变化,而不需要访问测试数据分布,并保持运行时效率,同时在各种情况下实现强大的性能,特别是在低质量的图像上。

传统的识别模型需要目标域数据从高质量的训练数据中进行无约束/低质量的人脸识别。为了实现普遍表示的目的,进一步需要模型集成,这大大增加了模型的复杂性。相比之下,作者提出的方法只对原始训练数据有效,没有任何目标域数据信息,可以处理无约束的测试场景。

新方法框架

上图 随着不同的变化而增加的样品

Confidence-aware Identification Loss

为了简单起见,定义一个置信值si,在L2-标准化单位球上约束fi和wj:

上面公式中的效果如下图所示。

当在不同质量的样本之间进行训练时,如果假设所有样本的置信度相同,那么所学习的原型将位于所有样本的中心。这并不理想,因为低质量的样本传达的身份信息更加模糊。相比之下,如果我们建立sample-specific confidence(si),高质量样本显示更高的信心,它推动原型wj更接近高质量样本,以最大化后验。同时,在嵌入fi的更新过程中,更有力的推动了低质量fi更接近原型。

在指数logit上增加loss margin已被证明是有效的缩小类内分布。也把它纳入框架的损失中:

Confidence-aware Sub-Embeddings

虽然通过一个特定的门控si学习的嵌入fi可以处理样本级别的变化,但是作者认为fi本身的条目之间的相关性仍然很高。为了最大限度地提高表示能力并实现紧凑的特征尺寸,需要对嵌入项进行去相关处理。

这鼓励作者进一步将整个嵌入fi分解为分区的子嵌入,每个子嵌入都进一步分配一个标量置信值。如上图所示,将整个feature embedded fi分割成K个等长次嵌入,如下公式所示。据此,将原型向量wj和置信标量si划分为大小相同的K组。

则最后的识别损失如下公式:

最后增加了一个额外的l2正则化来限制置信度的增长:

Sub-Embeddings Decorrelation

单独设置多个子嵌入并不能保证不同组中的特征是学习互补信息的。根据下图的经验,作者发现子嵌入仍然是高度相关的,即fi分为16组,所有子嵌入的平均相关系数为0.57。

如果我们用不同的正则化方法对次嵌入进行惩罚,可以降低它们之间的相关性。通过将不同的子嵌入与不同的变量联系起来,对所有子嵌入的一个子集进行变量分类损失,同时对其他变量类型进行变量对抗性损失。给定多个变量,这两个正则化项被强制放在不同的子集上,从而得到更好的子嵌入解相关。

挖掘更多的变量

由于可扩展变量的数量有限(在本文为3个),导致了去相关效应的有限,因为Vt的数量太小。为了进一步增强去相关,并引入更多的变量以获得更好的泛化能力,我们的目标是探索更多的语义变量。请注意,并不是所有的变量都容易进行数据扩充,例如微笑或不微笑是很难扩充的。对于这种变量,我们尝试从原始训练数据中挖掘出变量标签。特别是,利用一个现成的属性数据集CelebA训练属性分类模型身份对抗的损失:

Uncertainty-Guided概率聚合

考虑到推理的度量,简单地取学习到的子嵌入的平均值是次优的。这是因为不同的次嵌入对不同的变量有不同的识别能力。它们的重要性应该根据给定的图像对而有所不同。考虑应用与每个嵌入相关的不确定性,为成对的相似度评分:

实验及可视化

三种类型的数据集,LFW, IJB-A和IJB-S

Testing results on synthetic data of different variations
from IJB-Abenchmark (TAR@FAR=0.01%)

上图是通过t-SNE可视化特征分布。

将16个subembeddings的不确定度评分重新划分为4×4个网格。高质量和低质量的次预埋件分别以深色、浅色显示。对于不同的变化,不确定度图显示不同的模式。如下图:

上图是训练样本子嵌入置信度的可视化。

深度人脸识别:CVPR2020论文要点的更多相关文章

  1. face recognition[翻译][深度人脸识别:综述]

    这里翻译下<Deep face recognition: a survey v4>. 1 引言 由于它的非侵入性和自然特征,人脸识别已经成为身份识别中重要的生物认证技术,也已经应用到许多领 ...

  2. 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】

    文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...

  3. 论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》

     论文阅读:Face Recognition: From Traditional to Deep Learning Methods  <人脸识别综述:从传统方法到深度学习>     一.引 ...

  4. Cell期刊论文:为什么计算机人脸识别注定超越人类?(祖母论与还原论之争)

    终于找到ML日报的微信链接,抄之...................................... 请拜访原文链接:[祖母论与还原论之争]为什么计算机人脸识别注定超越人类?评价:       ...

  5. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  6. 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用

    深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...

  7. CVPR2020论文解读:OCR场景文本识别

    CVPR2020论文解读:OCR场景文本识别 ABCNet:  Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...

  8. 使用dlib中的深度残差网络(ResNet)实现实时人脸识别

    opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...

  9. [深度应用]·实战掌握Dlib人脸识别开发教程

    [深度应用]·实战掌握Dlib人脸识别开发教程 个人网站--> http://www.yansongsong.cn/ 项目GitHub地址--> https://github.com/xi ...

随机推荐

  1. Windows远程时无法复制文件--杀进程rdpclip.exe,然后再启动

    1.远程登陆到主机上 2.任务管理器杀进程rdpclip.exe 3.[开始],搜索rdpclip.exe,点击运行 此时重新复制文件,可以跨主机复制啦 原以为是公司网络限制,现在看来还是没那么先进嘛

  2. 【JVM】Java8 和 Java7中JVM内存模型有什么区别

    规范和实现 针对Java虚拟机的实现有专门的<Java虚拟机规范>,在遵守规范的前提下,不同的厂商会对虚拟机进行不同的实现. 就好比开发的过程中定义了接口,具体的接口实现大家可以根据不同的 ...

  3. hdu4396 多状态spfa

    题意:       给你一个图,让你送起点走到终点,至少经过k条边,问你最短路径是多少.... 思路:       把每个点拆成50点,记为dis[i][j] (i 1---50 ,j 1---n); ...

  4. 一份释放root文件的脚本文件

    #!/system/bin/sh MYDIR=$3 ARGS=$4 SU=$MYDIR/au SUPOLICY=$MYDIR/supolicy BUSYBOX=$MYDIR/busybox TOOLB ...

  5. Python简易远控(单线程版)

    1. 技术:管道通信,流文件处理,socket基础 2. Tips: 默认IP:127.0.0.1 默认端口:7676 3. 代码样例: 服务端: #!/usr/bin/env python # en ...

  6. POJ3762 时间段用k次

    题意:       有n个任务,每个任务有自己的开始时间和结束时间,还有完成这个任务能获得的价值,然后每一天的同一个时刻只能执行一个任务,每个任务必须连续执行完成,最多可以工作m天,问这m天能获得的最 ...

  7. 绕过CDN查找网站真实ip

    在渗透测试过程中,经常会碰到网站有CDN的情况.CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题.说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把 ...

  8. Intel汇编语言程序设计学习-第四章 数据传送、寻址和算术运算-下

    4.3  和数据相关的操作符和伪指令 操作符和伪指令并非机器可执行的指令,相反,它们是由汇编器进行解释的.开发者可以使用一系列的MASM操作符或伪指令获取数据的地址以及大小等特征信息: OFFSET操 ...

  9. (Py练习)查询子串出现次数

    if __name__ == '__main__': str1 = input('请输入一个字符串:\n') str2 = input('请输入一个子串:\n') ncount = str1.coun ...

  10. Day001 电脑常用快捷键

    电脑常用快捷键 Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+A 全选 Ctrl+X 剪切 Ctrl+Z 撤销 Ctrl+S 保存 Alt+F4 关闭窗口(英雄联盟选英雄界面可以查看对面阵容(狗头 ...