深度人脸识别:CVPR2020论文要点
深度人脸识别: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论文要点的更多相关文章
- face recognition[翻译][深度人脸识别:综述]
这里翻译下<Deep face recognition: a survey v4>. 1 引言 由于它的非侵入性和自然特征,人脸识别已经成为身份识别中重要的生物认证技术,也已经应用到许多领 ...
- 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】
文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...
- 论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》
论文阅读:Face Recognition: From Traditional to Deep Learning Methods <人脸识别综述:从传统方法到深度学习> 一.引 ...
- Cell期刊论文:为什么计算机人脸识别注定超越人类?(祖母论与还原论之争)
终于找到ML日报的微信链接,抄之...................................... 请拜访原文链接:[祖母论与还原论之争]为什么计算机人脸识别注定超越人类?评价: ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用
深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...
- CVPR2020论文解读:OCR场景文本识别
CVPR2020论文解读:OCR场景文本识别 ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...
- 使用dlib中的深度残差网络(ResNet)实现实时人脸识别
opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...
- [深度应用]·实战掌握Dlib人脸识别开发教程
[深度应用]·实战掌握Dlib人脸识别开发教程 个人网站--> http://www.yansongsong.cn/ 项目GitHub地址--> https://github.com/xi ...
随机推荐
- 【Java】 Java中的浅拷贝和深拷贝
先抛出结论: 浅拷贝是引用拷贝,A对象拷贝B以后,A对象和B对象指向同一块内存地址,改变A对象的属性值会触发B对象属性的改变,有安全风险 深拷贝是对象拷贝,A对象拷贝B以后,A对象和B对象指向不同的额 ...
- Swift系列二 - 循环控制
一.if-else if后面的条件可以省略小括号 条件后面的大括号不可以省略 let age = 10 if age >= 18 { print("大学") } else i ...
- 1、requests基础
一.升级pip版本的命令 : python -m pip install --upgrade pip 二.requests安装 windows系统系cmd运行 pip install request ...
- springboot使用jwt进行权限验证
springboot使用jwt进行权限验证 依赖准备 首先导入对应的依赖 <dependencies> <dependency> <groupId>org.apac ...
- SQL Server 查看进程阻塞及处理
修改或删除数据前先备份,先备份,先备份(重要事情说三遍)! 1.首先,查看线程,分析是否存在阻塞进程,blocked>0都是当前被阻塞的进程 SELECT * FROM sysprocesse ...
- BUAA软件工程个人项目
写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 [个人项目作业](<https://edu.cnblogs.com/campus/buaa/BU ...
- 【BUAA 软工个人项目作业】玩转平面几何
BUAA 软件工程个人项目作业 项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:BUAA软件工程个人项目作业 作业要求 课程目标 学习大规模软件开发的技巧与方法 ...
- C++基于armadillo im2col的实现
最近学习CNN,需要用到im2col这个函数,无奈网上没有多少使用armadillo的例子,而且armadillo库中似乎也没有这个函数,因此自己写了. im2col的原理网上一大把,我懒得写了. 1 ...
- 神奇的不可见空格<200b>导致代码异常
故事是这样发生的,在做一个JSON对象转化的时候,出现了转化异常:刚开始还是以为是格式错误,后来一步步排除,才发现是不可见空格<200b>导致的解析异常 出现 使用Typora编写文字时, ...
- [笔记] 《c++ primer》显示器程序 Chapter7
补充Sales_data没有体现出的其他类特性 Screen.h 1 #include <string> 2 #include <iostream> 3 4 class Scr ...