作者:云时之间
来源:知乎
链接:https://zhuanlan.zhihu.com/p/197836215
编辑:王萌

理论联系实际,记录下读《Deep Face Recognition: A Survey》的心得体会

一个完整的人脸识别流程应该包含一下几个模块:

1:人脸的检测: 定位图片中存在人脸的位置

2:人脸的对齐: 对齐人脸到正则坐标系的坐标

3:人脸的识别:

①:活体的检测
②:人脸的识别-面部姿态(处理姿态,表情,遮挡等),特征提取,人脸比对

上述流程中,第三步是整个系统的关键。

一:人脸识别的四个发展阶段

如图所示,回顾漫长的人脸识别的发展历程,大致可以划分为4个阶段

①:1964-1990:初步尝试

这个阶段是属于人脸识别的探索阶段,人们尝试使用一些简单的算法来初步尝试人脸的机器自动识别,人类最早的研究工作至少可追朔到二十世纪五十年代在心理学方面的研究和六十年代在工程学方面的研究。这一阶段主要是从感知和心理学角度探索人类识别人脸机理的,也有从视觉机理角度进行研究的。

②:1991~2000:快速发展

这一阶段研究的重点在人脸识别所需要的面部特征。研究者用计算机实现了较高质量的人脸灰度图模型。这一阶段工作的特点是识别过程全部依赖于操作人员,不是一种可以完成自动识别的系统,以至于这个阶段的人脸识别所需求的条件非常严苛,但是依然产生了一些极具影响力的算法和理论。

③:2000~2012:走向人机交互

这一阶段可以理解为是上一阶段的提升和改进,设计的系统可以对姿态,表情,光照,遮挡等环境条件进行处理,主要研究用几何特征参数来表示人脸正面图像。采用多维特征矢量表示人脸面部特征,并设计了基于这一特征表示法的识别系统。实质上这一阶段的算法(SVM,Boosting),实质上可以理解为带着一层隐藏节点的浅层学习,但是泛化能力依旧有限。这一阶段,人脸识别开始逐渐成熟,一些实用的系统开始诞生

④:2012~至今:快速发展

这一阶段,人脸识别的主流算法开始转为深度学习,深度学习的典型代表应用便是人脸识别,大计算、大数据、大模型则是深度神经网络的三大支柱与基础。第四阶段大量实用的系统与成功的应用案例出现,许多现象级别的网络结构开始出现,许多新兴的人脸识别公司也开始诞生。

二:人脸识别的算法流程

人脸的识别流程:面部姿态处理(处理姿态,亮度,表情,遮挡),特征提取,人脸比对。

1:面部处理face processing

这部分主要对姿态(主要)、亮度、表情、遮挡进行处理,可提升FR模型性能

两种方式:

one to many:从单个图像生成不同姿态的图像,使模型学习到不同的姿态

many to one:从多个不同姿态的图像中恢复正则坐标系视角下的图像,用于受限条件

2:特征提取 feature extraction

特征提取网络可分为backbone和assembled两类

主干网络(Backbone network):一些通用的用于提取特征的网络

组装网络(Assembled network):用于拼接在主干网络前/后的用于特定训练目标的网络

Backbone Network

①:Mainstream architectures

主流的网络架构包括AlexNet,VGGNet,GoogleNet,ResNet,SENet等



AlexNet:引入ReLU,dropout,data augmentation等,第一次在图像上有效使用Conv

VGGNet:提出重复用简单网络块堆叠;滤波器3x3减少权重量,增强表示能力

GoogleNet:1x1跨通道整合信息,同时用于升降维减少参数;并行结构由网络自行挑选最好的路径;多个出口计算不同位置损失,综合考虑不同层次的信息

ResNet:引入残差块,削弱层间联系,提高模型容忍度;使得信息能跨层注入下游,恢复在信息蒸馏过程中的丢失的信息;残差块部分解决梯度消失

SENet:在上述网络中嵌入Squeeze-and-Excitation块,通过1x1块显式地构建通道间相互关系,能自适应的校准通道间的特征响应。

Squeeze:全局平均池化得到1x1xC用于描述全局图像,使浅层也能获得全局感受野;

Excitation:使用FC-ReLU-FC-Sigmoid(类似门的作用)过程中得到各通道权重,然后rescale到WxHxC。从全局感受野和其它通道获得信息,SE块可自动根据每个通道的重要程度去提升有用的特征的权重,通过这个对原始特征进行重标定。

Special architectures

除了主流的最广泛使用的网络架构,还有一些特殊的模块和技巧,如max-feature-map activation,bilinear CNN,pairwise relational network等

Joint alignment-representation networks

这类模型将人脸检测、人脸对齐等融合到人脸识别的pipeline中进行端到端训练。比起分别训练各个部分的模型,这种端到端形式训练到的模型具有更强的鲁棒性

②:Assembled Network

组装网络用于拼接在主干网前或后方,用于多输入或多任务的场景中

Multi-input networks

在one-to-many这类会生成不同部位、姿态的多个图像时,这些图片会输入到一个multi-input的组装子网络,一个子网络处理其中一张图片。然后将各个输出进行联结、组合等,再送往后续网络。

如下图所示的多视点网络Multi-view Deep Network (MvDN)进行cross-view recognition(对不同视角下的样本进行分类)

multi-task networks

在某些情景中,人脸识别是主要任务,若需要同时完成姿态估计、表情估计、人脸对齐、笑容检测、年龄估计等其余任务时,可以使用multi-task组装网。

如下图Deep Residual EquivAriant Mapping (DREAM),用于特征层次的人脸对齐

3:损失函数 loss function

①:Euclidean-distance-based loss:(上图绿色)

基于欧几里得距离损失是一种度量学习方法,它通过对输入图像提取特征将其嵌入欧几里得空间,然后减小组内距离、增大组间距离,包括contrastive loss,triplet loss,center loss和它们的变种

contrastive loss:

损失计算需要image pair,增加负例(两张图不同脸)距离,减少正例(同脸)距离。它考虑的是正例、负例之间的绝对距离,表达式为:

其中yij=1表示xi,xj是正例pair,yij=0表示负例pair,f(.)表示特征嵌入函数

Triplet loss

该损失计算需要triplet pair,三张图,分别为anchor, negative, positive。最小化anchor和positve间距离,同时最大化anchor和negative间距离,表达式为

注意,数据集中大多数的人脸之间都很容易区分,容易区分的triplet pair算出来的L很小,导致收敛缓慢,因此triplet pair选择的时候需要选择难以区分的人脸图像

Center loss

该损失在原损失的基础上增加一个新的中心损失LC,及每个样本与它的类别中心之间的距离,通过惩罚样本与距离间的距离来降低组内距离

②:Angular/cosine-margin-based loss(黄色)

基于角度/余弦边缘损失,它使得FR网络学到的特征之间有更大的角度/余弦

Softmax

L-Softmax

令原始的Softmax loss中:

同时增大yi对应的项的权重可得到Large-margin softmax。该权重m引入了multiplicative angular/cosine margin

二分类的分类平面为

L-softmax存在问题:收敛比较困难,||W1||,||W2||通常也不等

A-softmax (SphereFace)

在L-softmax的基础上,将权重L2正则化得到||W||=1,因此正则化后的权重落在一个超球体上

二分类的分类超平面为:

CosFace / ArcFace

与A-softmax相同思想,但CosFace/ArcFace引入的是additive angular/cosine margin

各类损失函数对比:

4:面部匹配 face matching

对面部认证、面部识别任务,多数方法直接通过余弦距离或者L2距离直接计算两个特征图的相似性,再通过阈值对比threshold comparison或者最近邻NN判断是否为同一人。此外,也可以通过Metric learning或者稀疏表示分类器sparse-representation-based classifier进行后处理,再进行特征匹配

5:数据集

数据集的Depth、Breadth

Depth

不同人脸数较小,但每个人的图像数量很大。Depth大的数据集可以使模型能够更好的处理较大的组内变化intra-class variations,如光线、年龄、姿态。

VGGface2(3.3M,9K)

Breadth

不同人脸数较大,但每个人的图像数量较小。Breadth大的数据集可以使模型能够更好的处理更广范围的人群。

MS-Celeb-1M(10M,100K)、MegaFace(Challenge 2,4.7M,670K)

数据集的data noise

由于数据源和数据清洗策略的不同,各类数据集或多或少存在标签噪声label noise,这对模型的性能有较大的影响。

数据集的data bias

大多数数据集是从网上收集得来,因此主要为名人,并且大多大正式场合。因此这些数据集中的图像大多数是名人的微笑、带妆照片,年轻漂亮。这与从日常生活中获取的普通人的普通照片形成的数据集(Megaface)有很大的不同。

另外,人口群体分布不均也会产生data bias,如人种、性别、年龄。通常女性、黑人、年轻群体更难识别。

6:评估任务及性能指标

①:training protocols

subject-dependent protocol:所有用于测试的图像中的ID已在训练集中存在,FR即一个特征可分的分类问题(不同人脸视为不同标签,为测试图像预测标签)。这一protocol仅适用于早期FR研究和小数据集。

subject-independent protocol:测试图像中的ID可能未在训练集中存在。这一protocol的关键是模型需要学得有区分度的深度特征表示

②:Evaluation metric

Face verification:性能评价指标通常为受试者操作特性曲线(ROC - Receiver operating characteric),以及平均准确度(ACC)

Close-set face identification:rank-N,CMC (cumulative match characteristic)

Open-set face identification:

三:一些新的前景

①:Cross-Factor Face Recognition

Cross-Pose:正脸、侧脸,可使用one-to-many augmentation、many-to-one normalizations、multi-input networks、multi-task learning加以缓解

②:Heterogenous Face Recognition

NIS-VIS FR:低光照环境中NIR (near-infrared spectrum 近红外光谱)成像好,因此识别NIR图像也是一大热门话题。但大多数数据集都是VIS (visual ligtht spectrum可见光光谱)图像。-- 迁移学习

Low-Resolution FR:聚焦提高低分辨率图像的FR性能

Phote-Sketch FR:聚焦人脸图像、素描间的转换。-- 迁移学习、image2image

③:Multiple (or single) media Face Recognition

Low-Shot FR:实际场景中,FR系统通常训练集样本很少(甚至单张)

Set/Template-based FR

Video FR:两个关键点,1. 各帧信息整合,2. 高模糊、高姿态变化、高遮挡

④:Face Recognition in Industry

3D FR

Partial FR:给定面部的任意子区域

Face Anti-attack:

FR for Mobile Device

四:参考资料

1:Deep Face Recognition: A Survey

https://arxiv.org/pdf/1804.06655.pdf

2:Deep Residual EquivAriant Mapping

https://openaccess.thecvf.com/content_cvpr_2018/html/Cao_Pose-Robust_Face_Recognition_CVPR_2018_paper.html

3:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

https://arxiv.org/pdf/1703.10593.pdf

©著作权归作者所有:来自51CTO博客作者mb5fca0b6a49e47的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 类声明-实例化-成员-继承-trait特征类
  2. 使RPA效用最大化的业务流程应具备的5大特征
  3. TensorFlow.js人脸识别—玩转吃豆豆小游戏
  4. 小程序开发:调用百度文字识别接口实现图文识别,Node.js开发
  5. 如何解决树模型中one_hot的问题
  6. ■ Android集成百度语音识别
  7. Android语音转文字一识别语音
  8. Android(安卓)触屏事件处理_手势识别 (补充)
  9. Android开发之语音识别

随机推荐

  1. PHP 模板引擎
  2. PHP中接口与抽象类的异同点有哪些
  3. PHP mysqli操作数据库
  4. php连接服务器进行服务器命令操作
  5. 关于PHP中依赖注入的详细介绍
  6. php中 continue break exit return 的区
  7. PHP 核心特性之命名空间
  8. php 安装zip模块
  9. PHP中Redis扩展无法加载问题
  10. php实现汉字转拼音