论文阅读:Face Recognition: From Traditional to Deep Learning Methods  《人脸识别综述:从传统方法到深度学习》
 
 
一、引言
    1.探索人脸关于姿势、年龄、遮挡、光照、表情的不变性,通过特征工程人工构造feature,结合PCA、LDA、支持向量机等机器学习算法。
    2.流程
  • 人脸检测,返回人脸的bounding box
  • 人脸对齐,用2d或3d的参考点,去对标人脸
  • 人脸表达,embed
  • 人脸匹配,匹配分数
二、人脸识别发展综述
    1.几何特征
  • 最早:边缘提取算子和连通域算子提取特征器官
  • 发展:梯度图像
    2.整体方法
  • PCA [22-24]
    • PCA的概率版变体,利用贝叶斯分析 [25]。使用两组特征脸来描述相同人和不同人之间variation
    • PAC其他变体
      • kernel PCA
      • 独立成分分析 ICA
      • 其他见文章
    PCA方法总的来说是基于整体脸,而不是局部部件,来判断输入图像是否是人脸。
    PCA方法的问题在于,其投影将训练集中所有图片的variance最大化了,也就是说,最大的特征向量并不利于人脸识别,这是因为,提取到的eigenvector很有可能同一个体的variation(光照,姿势,表情带来的)
  • LDA,即Fisher discriminant analysis 【32-36】旨在解决上述问题,其主要思想为利用类别标签去寻找一个投影矩阵,使之能最大化类间距离,同时最小化类内距离。
    • 类内距离定义不准确时,LDA方法容易过拟合【35】。这在输入数据是高维度并且每类中的个体数量比较少时很容易出现(多数人脸集就是这样的情况)
    • 因此一般在使用LDA前,先用PCA降维
    • LDA也有基于kernel和概率的方法,这和PCA类似
  • 支持向量机【40】
    • 考虑一个二分类问题,分别是类内difference和类间difference(这一点和基于概率的PCA有点类似)
    • 将SVM和PCA、LDA做结合,效果不明显,主要因为LDA已经encode了识别人脸所需的判别信息
  • 局部保留投影 locality preserving projection (LPP)?
    • PCA和LDA保留图像整体信息,LPP则侧重保留局部信息
    • LPP学习到的投影(降维)致力于将局部信息相似的图像放在更加接近的子空间中(这似乎意味着对同人不同姿势的识别更好)
    • 基向量正交化【43】
  • 人脸的稀疏表达【44】
    • 将test image用训练图片的线性组合来来表达,通过强调系数矩阵的稀疏性,使得矩阵中多数非零系数都来自正确的类
    • 测试时,用每个类的系数矩阵来重构图像,重构误差最小的认为是正确类
    • 这种方法可以通过给线性组合增加一项稀疏误差来提高鲁棒性
      • K-SVD,如何从训练集中选择一个更加紧凑和有判别性的子集【46】
      • 马尔科夫场,【47】,衡量图片中每个像素的权重
  • 联合贝叶斯方法(受启发于概率PCA)【48】
    • 这种方法中,一张人脸图像被表述为两个独立高斯变量的和(一个代表类内变换,一个代表类间变换)
    • 在LFW上达到了92.4%,是整体方法在这个数据集上达到的最高水平
    3.基于特征的方法
    指利用在人脸图像不同位置提取到的局部特征的方法。(几何方法可以视为该类的一种,也就是提取的是几何特征)
    比整体方法更适合于解决个体变换的问题(光照、表情等导致的),其许多描述子具有一定的不变性。
  • 模式本征脸法【50】,PCA被独立的用于各局部区域去产生一个本征脸集
  • 一种基于二元边缘特征的方法【51】
    • hausdorff distance 常用于边缘匹配算法的一种距离算法,衡量两组点集之间的相似程度
    • 变体,LEM(line edge maps,线性边缘映射)【53】,将人脸表述为线元
  • 基于弹性模型的方法elastic bunchgraph matching(EBGM)【54-55】
    • 动态链接模型,将人脸用图上的节点表示,节点包含从预定义的人脸关键点上提取的Gabor小波变换系数
    • 除了Gabor,还有基于梯度直方图(HOG)的,【57-59】,效果更优,鲁棒性好
    机器视觉其他领域的局部特征描述子发展起来之后,基于特征的方法又火了一波。【60】
  • LBP描述子【61】
    • 将图像划分为局部,提取LBP直方图,然后拼接为一个全局的特征向量。
    • 使用卡方距离(chi-square distance)描述相似性
    • 这种方法的变体被广泛应用于人脸检测、表情分析等领域
    • 与Gabor特征图结合;使用傅里叶变换;LDP,通过编码方向信息来提取高层次的局部信息【63-66】
  • SIFT(Scale invariant feature transform,尺度不变特征变形)
    • 描述了三种匹配SIFT描述子的方法,基于规则网格(regular grid)的效果最好
    • SURF,dense feature extraction【69-70】
    • 其他变形:volume-sift,partial-descriptor-sift,人脸识别准确率有一定提高
  • 其他从训练集中学习局部特征的方法
    • k-means,PCA,随机树等,致力于对人脸局部微小特征进行离散编码,然后形成人脸不同区域的直方图,最后对每个直方图使用PCA建立人脸描述子【72-74】
    • 其他和LBP类似的方法【75-76】
    基于特征的方法更鲁棒,但也丢失了整体方法的一些缺点,例如不能很好的鉴别非判别信息,不够紧凑。
    4.混合方法
  • 这是在DNN出来前最常用的方法,通常是用LBP、SIFT等提取局部特征,然后用PCA、LDA将其投影到低维判别子空间
  • 利用Gabor小波特征和子空间方法结合【77-79】
    • 基本思路为将不同方向和尺度的Gabor核和图片卷积,将输出拼接成特征向量,再对特征向量进行降维
  • LBP描述子是许多混合方法的另一关键组件
    • 【81】将图像分成若干不重叠区域,从不同分辨率进行LBP描述子提取和拼接,再投影到PCA+LDA子空间
    • 【82】将上述方法拓展到彩色空间
    • 拉普拉斯PCA【83】
    • three-patch LBP和four-patch LBP月LDA和SVM结合,通过编码相邻patch像素之间的相似性来提升准确率【84】
    • 【85】从人脸特征点周围的多尺度LBP提取高维表述,然后用PCA降维,并用联合贝叶斯方法获取最后的判别特征,实验发现高维表述有利于提升精度(向量维度1k->100k,准确率提升6%~7%),但降维计算量巨大,因此这篇文章还提供了 一个对PCA和联合贝叶斯进行估计的稀疏线性投影矩阵,如下
                                    
    • GaussianFace 【86,87】,基于隐性高斯判别过程的多任务学习方法。其拓展了高斯过程方法,并使用了一种更高效的核LDA来从LBP描述子中学习人脸表述;这种方法能够有效利用不同来源的图像信息。该方法在LFW上准确率能达到98.52%,能与很多深度学习方法媲美。
    • 有的混合方法使用了不同局部信息的组合
      • Gabor小波特征和LBP特征组合【88】,此文认为LBP描述子提取细节信息,Gabor小波特征则编码了更大尺度的人脸轮廓信息,对二者特征各自进行PCA降维,拼接后用LDA投影到子空间
      • 用于光照变化环境中人脸识别的多特征系统【8】,三个贡献
        • 提出了一个降低光照影响的pipeline
        • 提出了LBP的一个变体,LTP,对噪声更不敏感
        • 提出了一种将Gabor wavelet和LBP、LTP特征集合并使用核LDA进行降维再做分数归一化、分数融合的系统
      • 稠密SIFT描述子
      • 使用其他低层次局部信息训练SVM
    • 总的来说混合方法分为两条思路
      • 一是通过组合不同形式的局部特征
      • 二是通过一些学习方法去提升特征的判别能力
    • 深度学习方法则通过训练端到端的系统,来学习到最适合识别任务的大量特征。
    5.基于深度学习的方法
  • 现有的大型人脸数据集【9-15】
  • 其优点在于
    • 学习到有判别性的特征
    • 特征降维
    • 可以训练分类器
  • 基本思路
    • 训练bottleneck feature作为表述【99】
    • 用其他目标识别方法对bottleneck进行优化,例如联合贝叶斯【9】,使用不同loss【10】
    • 或者通过优化距离度量直接学习bottleneck特征【100-102】
  • 早期:
    • 基于决策的概率神经网络PBDNN【103】,用强度和边缘特征训练两个PBDNN,然后联合决策
    • SOM(self-organising map)+CNN【104-105】。SOM是一种无监督的网络,能够将输入数据投影到低维空间,同时保留其拓扑信息。
        上述两种方法都不是端到端的,并且所用神经网络非常浅。
    • 【100】提出了一种端到端的CNN,使用了一种孪生神经网络结构和对比度损失【106】,不过这种网络也很浅,训练数据集也小。
        早期方法效果都比较一般,主要是训练集都比较小,造成网络泛化能力不强。
        直到ImageNet等大型数据集提出以后【107】,基于深度学习的人脸识别才真正获得state-of-art的准确率【9,99】】
    • Facebook DeepFace【99】,在LFW上97.35%
      • 采用softmax loss^2损失函数
      • 来自4030人的4.4m张图片数据
      • 主要贡献:
        • 提出了一种有效的基于3D建模的人脸对齐方法
        • 提出了一种包含局部连接层的CNN结构【108-109】,可以学习到一幅图像中不同局部的信息
    • DeepID【9】
      • 在10个区域、3个尺度、RGB和灰度通道等patches上训练了60个CNN???
      • 测试时,从每个patch及其水平翻转的副本中提取160个bottleneck特征,特征维数160x2x60=19200维
      • 在19200维特征上训练一个联合贝叶斯分类器实现人脸认证
      • 训练集有来自10177人的202599张图像
    • 影响DNN人脸识别精度的三要素
      • 训练集
      • CNN结构
      • loss
    • 数据集方面
      • 【110】研究了训练集中不同个体数量对识别精度的影响
        • 研究将大数据集中每个个体按所含图片多少降序排列
        • 实验发现,取前10000个个体的图片作为子集时训练所得精度最高,再增加后续个体图片反而会使精度下降,这是因为再往后,每个个体的图片非常少了。
      • 【111】则研究了数据集广度和深度对精度的影响
        • wider:数据集中含有更多不同个体
        • deeper:数据集中每个个体含有更多图片
        • 实验发现,数据集图片数量相同时,广度大的数据集,也就是个体数多的数据集,精度更高
        • 作者认为这是因为wider dataset包含更多类间信息
    • CNN结构方面
      • base VGG【112】的,【10,11】 
      • base GoogleNet【113】的,【102】,精度和VGG实现的差不多,但参数少了20倍
      • base ResNet【114】的,【115-121】,其主要特点为用一个shortcut connection去学习残差映射,使得深度网络更容易训练,因为它能促进信息在层间的传递
      • 不同网络结构的综述【121】,最佳平衡的网络结构为100层ResNet,参【122】
    • loss选择方面
      • softmax loss【99,9,10,123】,研究认为这种loss对训练集中不存在的个体的泛化性能不好,因为它学习的特征强调的是类间difference,但不能降低类内变化的影响
      • 改进:
        • 一是用联合贝叶斯等判别子空间去优化bottleneck feature,【9,124,125,126,10,127】
        • 二是使用metric learning(度量学习),例如将pairwise的对比度损失【100,101】作为监督信号,结合分类损失【124-126】
      • metric learning代表作
        • triplet loss【128,102】,通过一个边界来区别正样本对和负样本对的距离
          • 使用triplet loss的网络比使用softmax的收敛慢,主要是因为一个训练集中有许多triplets
          • 原文使用对hard triplet进行筛选的方法来提高训练效率,但更优的做法是先用softmax训练至收敛,再用triplet loss进行fine-tune【11,129,130】
          • 变体:
            • 用点积取代欧氏距离【129】
            • 概率triplet loss【130】
            • 【131-132】同时最小化正负样本的标准差
        • center loss【133】
          • 旨在最小化feature和其所属类中心的距离
          • 通过center loss和softmax的联合训练,能够很好地增加类间距离(softmax),同时缩小类内距离(center loss)
          • center loss比contrastive和triplet loss更容易实现,因为它不需要在训练中组成pair或者triplet
        • range loss【134】
          • 提升不平衡数据集的训练效果
          • 分为两部分,类内部分最小化样本对于同一类的k类最大距离(k-largest distance),类间部分最大化一个batch中最接近的两类的中心距离。
          • 通过使用这些极端的样本,range loss从每个类中使用了相同的信息,而不受每个类别所含图片数量多少的影响
          • 与center loss类似,也需要和softmax结合使用【133】
    将不同loss结合的一个难点在于如何在不同loss之间找到平衡,也就是如何设置系数,因此现在有很多方法开始调整softmax而不是把它和其他loss结合
      • 特征归一化,L2范数归一化【115】,标准化【118】
      • 给softmax loss的决策边界中引入一个margin【135】
      • 这类的其他变体主要区别在于怎么向softmax中放入这个margin
        • SphereFace【116】,权重系数全部归一化,因此决策边界只依赖于θ1和θ2
        • CosFace【119,120】,使用了一个累加余弦间隔,区别于【135,116】中的乘法间隔,累加间隔更易实现和优化,特征向量的归一化和缩放同【115】
        • ArcFace【121】,保持CosFace优势的同时,有更好的几何解释,因为其间隔累加在angle上而非cosine上
        • 带间隔的softmax loss总结:
三、结语
    提升数据集和网络size能够继续提高精度,前者可以通过GAN实现,后者可以通过使用Mobilenet等实现【154-156】
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》的更多相关文章

  1. Deep learning:四十(龙星计划2013深度学习课程小总结)

    头脑一热,坐几十个小时的硬座北上去天津大学去听了门4天的深度学习课程,课程预先的计划内容见:http://cs.tju.edu.cn/web/courseIntro.html.上课老师为微软研究院的大 ...

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

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

  3. 视觉中的深度学习方法CVPR 2012 Tutorial Deep Learning Methods for Vision

    Deep Learning Methods for Vision CVPR 2012 Tutorial  9:00am-5:30pm, Sunday June 17th, Ballroom D (Fu ...

  4. NLP related basic knowledge with deep learning methods

    NLP related basic knowledge with deep learning methods  2017-06-22   First things first >>> ...

  5. [报告] Microsoft :Application of deep learning methods in speech enhancement

    Application of deep learning methods in speech enhancement 语音增强中的深度学习应用 按: 本文是DNS,AEC,PLC等国际级语音竞赛的主办 ...

  6. 论文阅读笔记六十五:Enhanced Deep Residual Networks for Single Image Super-Resolution(CVPR2017)

    论文原址:https://arxiv.org/abs/1707.02921 代码: https://github.com/LimBee/NTIRE2017 摘要 以DNN进行超分辨的研究比较流行,其中 ...

  7. 论文翻译:2021_Towards model compression for deep learning based speech enhancement

    论文地址:面向基于深度学习的语音增强模型压缩 论文代码:没开源,鼓励大家去向作者要呀,作者是中国人,在语音增强领域 深耕多年 引用格式:Tan K, Wang D L. Towards model c ...

  8. 论文笔记:(CVPR2017)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    目录 一. 存在的问题 二. 解决的方案 1.点云特征 2.解决方法 三. 网络结构 四. 理论证明 五.实验效果 1.应用 (1)分类: ModelNet40数据集 (2)部件分割:ShapeNet ...

  9. 基于Deep Learning 的视频识别方法概览

    深度学习在最近十来年特别火,几乎是带动AI浪潮的最大贡献者.互联网视频在最近几年也特别火,短视频.视频直播等各种新型UGC模式牢牢抓住了用户的消费心里,成为互联网吸金的又一利器.当这两个火碰在一起,会 ...

随机推荐

  1. Redis真集群安装

    Redis真集群安装 命令文档:http://redisdoc.com/index.html 下载:https://code.google.com/archive/p/redis/downloads ...

  2. stream流篇

    流是C#中比较重要的一个概念,很多关键技术都需要用到流.何为流呢?可以理解流为江河中水的流动,不过C#中则为信息流,我们可以把信息写入流,也可以读出.比如以文件读写操作为例,首先以某种方式(如只读)打 ...

  3. 简要概括java技术体系

    以前一直在学java程序设计语言,学完了就以为自己已经把java学得差不多了,直到最近在看一本书<深入理解java虚拟机>,才发现自己以前学的只不过是冰山一角.相信很多小伙伴跟我一样,在没 ...

  4. presto-mysql/elasticsearch6.0.0安装部署测试,异种数据源关联查询入门实践

    本文简单记录一次实践使用过程,涉及presto-mysql,presto-elasticsearch,文中参数未做注释,请参考官方文档,希望能帮到大家 1 下载安装 presto-0.228 < ...

  5. 7、pytest -- 捕获标准输出和标准错误输出

    目录 1. 标准输出/标准错误输出/标准输入的默认捕获行为 2. 修改和去使能捕获行为 2.1. 文件描述符级别的捕获行为(默认) 2.2. sys级别的捕获行为 2.3. 去使能捕获行为 3. 使用 ...

  6. java的静态代理、jdk动态代理和cglib动态代理

    Java的代理就是客户端不再直接和委托类打交道,而是通过一个中间层来访问,这个中间层就是代理.使用代理有两个好处,一是可以隐藏委托类的实现:二是可以实现客户与委托类之间的解耦,在不修改委托类代码的情况 ...

  7. xss代码集

    </script>"><script>prompt(1)</script> </ScRiPt>"><ScRiPt& ...

  8. 【XSY2488】【HDU5818】Joint Stacks

    这题合并栈让我们想到了左偏树. 我们可以维护val值为时间,dis值为size的左偏树,定义两个根root1和root2,表示两个栈的栈顶,建大根的左偏树. 接下来的插入,删除,两个栈合并都是左偏树的 ...

  9. u检验粗浅理解

    假设检验是以小概率事件,在一次实验中是不可能发生为前提(事实上是有可能发生的,但不是这样说的话,就落入一个圈,不能继续玩了),来否认原假设. u检验的定义: 已知从正态母体N(u,σ2)中抽得容量为n ...

  10. C++学习笔记4_new和delete

    1. 默认的new和delete操作符new和delete是和c里面的mlloc和free是一样的,在堆中创建空间.堆中创建的,都要自己释放.C中void test(){ int *p=(int *) ...