人脸识别 论文阅读(2)

理解参考:张雨石博客

  1. DeepID1 (Linkface 孙祎)
    参考论文:Deep Learning Face Representation from Predicting 10,000 Classes
    CVPR 2014,LFW 准确率 97.20%
    主要思想:通过深层网络学习high-level的特征表达,利用深层网络,泛化能力强,容易拓展到未见过的新身份类别。

输入: 图片的一个patch
输出: 10000身份类中的一个类别

为什么是10000的分类器,不用二分类? 为了学习到更有区分能力和简洁的特征。
虽然提升了训练难度,利用神经网络的强学习能力,同时学习得到的特征具有一定的泛化能力。为了证明这点,作者将训练的softmax输出层由136增加到4349个,然后观察分类能力以及之后的人脸识别能力。然后发现,准确率几乎都是随着识别种类的翻倍而线性增长的,效果提升很明显。

为什么DeepID神经元数量固定为160个,比分类输出差那么多?因为DeepID层只有160维,远远小于其分类类别,这样会形成压缩之后的密集特征。 作者试图把4349个输出作为特征,后续的测试惨不忍睹。我理解的是这样做特征太稀疏,特征之间的相关性太强。

trick:

  • 引入了外部数据集CelebFaces和CelebFaces+,因为LFW虽然身份多,但是很多身份只有一张人脸,更适合测试一些。
  • 输入图像的处理。拿到一张图像,选取60个patch分别训练60个模型,并行学习,每个模型提取2✖️160维的DeepID特征。
    这里"2"的解释:patch本身和它的水平翻转。???疑问:是对原patch水平翻转还是对DeepID之前那一层的输出矩阵水平翻转????
    60个patch怎么来的:先裁剪10个regions,基础上分别选取3个scales,基础上再分别选取两种颜色(RGB和灰度)
    这样特征总维数就是160✖️2✖️60。

为什么要multi-scale? 我理解的是图像的尺度大能一览图像的全貌,小可以关注一些细节信息,这一点可能对学习有帮助。

如图,上部分为10个regions的示例,下部分为3cales的示例。

  • face representation 使用自己设计的Multi-scale ConvNets结构,提取high-level特征

  • face verification 使用 Joint Bayesian 或者 Neural Network,经作者实验证明前者更好。

① face detection:学习5个关键点(眼睛、鼻尖、两个嘴角)

② face alignment:根据两个眼睛和两个嘴角的中点,做相似变换(保持形状不变,大小和方向可变),全局对齐面部。

③ face representation:
对于对齐的人脸,选取60个patch
在这里插入图片描述

  • 输入:如果patch为长方形,输入尺寸为39✖️31✖️k;如果patch为正方形,输入尺寸为31✖️31✖️k( k为1时为灰度图像,k为3时为RGB图像)
  • C1:卷积核为4✖️4✖️k,20个,特征图为36/28✖️28✖️20
  • M2:池化窗口为2✖️2,特征图为18/14✖️14✖️20
  • C3:卷积核为3✖️3✖️20,40个,特征图为16/12✖️12✖️40
  • M4:池化窗口为2✖️2,特征图为8/6✖️6✖️40
  • C5:卷积核为3✖️3✖️40,60个,特征图为6/4✖️4✖️60
  • M6:池化窗口为2✖️2,特征图为3/2✖️2✖️60
  • C7: 卷积核为2✖️2✖️60,80个,特征图为2/1✖️1✖️80
  • F8(DeepID): 可以形成高度紧凑和预测性的一些特征。

拉平为160维的特征=10regions✖️3scales✖️2(RGB and Gray)✖️2 (翻转)

值得注意的是CNN最后一层DeepID层不仅和C7直接相连,也和M6相连,作者将之称为Multi-scale ConvNets。为什么连接两层,是因为:C7神经元数量少,携带的信息比较少,使用M6可以减少信息损失。这一步的具体做法是:先将C7和M6这两层拉平(flatten),然后分别和DeepID层全连接,经过ReLU激活函数后的输出就是DeepID特征。如公式所述:
在这里插入图片描述
上标1表示M6,上标2表示C7

其中,使用Relu作为激活函数跟在每个卷积层后面,代替Sigmoid,是因为:gradient的性质不同,Relu的gradient大多是常数,有助于解决深层网络的收敛问题;而Sigmoid的gradient比较平缓,接近于0,容易造成梯度消失的问题。

④ face verification:
1) Joint Bayesian 联合贝叶斯

输入:两张图像的DeepID特征向量
输出:二分类结果(是or不是)

参考论文:Bayesian Face Revisited: A Joint Formulation,ECCV 2012

在LFW上 准确率达92.4%

联合贝叶斯模型可表示为在这里插入图片描述在这里插入图片描述表示类间差异,在这里插入图片描述表示类内差异,都符合高斯分布,且由训练数据估算得到。人脸验证通过对数似然比在这里插入图片描述实现。

使用PCA降维,将两张人脸联合建模,利用EM算法求解条件概率,后面是具体的推导:

基于普通的 Bayesian Face 的方法:

在这里插入图片描述
注意:这里在这里插入图片描述写错了,改为在这里插入图片描述

在这里插入图片描述作者经过实验证明,联合贝叶斯可以增加两张人脸的可分性。

详细EM算法求解的过程见这篇文章,没有搞懂,先跳过????????

关于协方差的解释:
协方差的意义是度量两个随机变量的相关性,正值为正相关,负值为负相关。
两个性质:
在这里插入图片描述

其中 ,在这里插入图片描述 可以看出协方差矩阵是一个沿着对角线对称的变量,且对角线为各个变量的方差。

2 ) Neural Network 神经网络
在这里插入图片描述

验证用神经网络只是一个三层的浅层网络,输入是成对的图像patches,640(一对图像水平翻转)*60(patch)维,输出层是2分类结果输出(是or不是)。


  1. DeepID2:Deep Learning Face Representation by Joint
    Identification-Verification

CVPR 2014

trick:

  • 使用Supervised Descent Method(SDM)算法来检测关键点

  • 在DeepID2的softmax层(softmax作为识别信号)后添加了验证信号Logistic Regression作为最终的目标函数,可以有效减小类内距离

  • 使用 前-后向贪婪( forward-backward greedy) 算法来选择更有效的DeepID2向量,降低冗余,节省验证时间

关于与SDM算法:
求解非线性最优化问题的两个难点:

  • 方程不可微,或者计算量太大

  • Hessian矩阵太大,或者不是正定矩阵

通过学习得到了一系列下降的方向和该方向上的尺度,使得目标函数以非常快的速度收敛到最小值,回避了求解Jacobian矩阵和Hessian矩阵。
参考论文:Supervised descent method and its applications to face
alignment, CVPR 2013

在这里插入图片描述
现实中可能不会有足够的计算资源去一次训练所有的样本,于是就有了上面右图的方法,更新每一个daerta(x),每次都会找到一个局部最小值(作为监督),然后不断迭代,减少最小值之间的误差距离(也就是损失函数曲线变得越来越平缓),最终就会找到全局最小值。

① face detection: 通过SDM算法来学习21个关键点

② face alignment:基于21个关键点做相似变换,全局对齐

③ face representation:
在这里插入图片描述
公式表达:

  • 识别信号 :softmax层,n=8192
    在这里插入图片描述
    其中 f 为DeepID2特征向量,t为groud truth的类别,在这里插入图片描述是softmax参数,在这里插入图片描述是目标概率分布(在这里插入图片描述),在这里插入图片描述是预测概率分布。
  • 验证信号:
    1)基于L2的验证信号:
    在这里插入图片描述
    其中,在这里插入图片描述在这里插入图片描述是两个图像的DeepID2特征,在这里插入图片描述表示ground truth是否为同一身份,在这里插入图片描述={m}是需要学习的参数(m不能简单通过梯度下降更新,因为梯度可能为0,可以通过最小化先前N个训练对的验证错误来更新,N经过实验证明可取 200, 00)。
    同一身份时,需要最小化两个DeepID2的L2距离;不同身份时,设置一个阈值m,使得L2距离尽可能大于阈值m。即前者减小了类内距离,后者增加了类间距离。取1/2倍L2距离的平方是为了便于求梯度。
    2)基于L1的验证信号:
    在这里插入图片描述
    3)基于余弦相似度的验证信号:在这里插入图片描述
    其中在这里插入图片描述表示余弦相似度(通过测量两个向量的夹角来度量相似性在这里插入图片描述
    在这里插入图片描述),在这里插入图片描述={w,b}是需要学习的参数。

在这里插入图片描述

实验结论:

  • 经过实验证明,λ在0.05周围时,验证信号精确度最高
    这里超参数λ的作用:λ=0,只有识别信号,λ->∞,只有验证信号。
    在这里插入图片描述

  • DeepID的训练集人数越多,最后的验证率越高。

  • 对不同的验证信号,包括L1,L2,cosin等分别进行了实验,发现L2 最好。

④ face verification:
在这里插入图片描述
使用前-后向贪婪算法来选择更有效的DeepID2特征来节省时间,降低冗余。
论文中,作者对一张图片裁剪400个patch,其位置、比例、颜色通道、水平翻转都有所不同,用前-后向贪婪算法选择25个DeepID2特征向量(如下图所示),拉平成25✖️160=4000维,再用PCA降维成180。
在这里插入图片描述

再送入联合贝叶斯,得出结果(是or不是)。

解释前-后向贪婪算法:
前向和后向都属于特征选择的范畴。
前向选取(Forward Selection),首先,初始化特征子集F为空集,然后对不属于F的特征,计算添加该特征之后模型提升的精度,选取其中提升精度最大的特征添加到F中,循环以上操作直至精度不再提升。
后向淘汰(Backward Elimination),与前向选择相反,后向淘汰将F初始化为所有特征的集合,每次选取一个特征,计算不考虑该特征的时候模型的精度,若精度提升,则将该特征剔除F,直至精度不再下降。


3.DeepID2+
参考论文:Deeply learned face representations are sparse, selective, and robust,CVPR 2014

LFW 准确率99.47%

trick:

  • 训练数据集Merge了celebFaces+和WDRef数据集,总共290000副人脸图片,12000个人;
  • 特征图个数由原来的20、40、60、80增加到128,最终产出512维DeepID2+的特征(原始160维);
  • 在每个卷积层都增加了监督信息,不仅和第三层第四层的max-pool层连接,还连接了第一层和第二层的max-pool层,通过连接max-pool层的一个512维的全连接实现。 (是否可以解决上周intermediate supervision浅层标签如何设置的疑问???)

网络结构:
在这里插入图片描述

Id(识别信号)、Ve(验证信号)表示监督信号,相当于损失函数


  1. DeepID3
    参考论文:Face recognition with very deep neural networks,CVPR 2015

LFW 准确率 99.53%

改进:采用图像识别方面当时最新的网络结构,且层数加深(更加Deep试试)

trick:

  • 在pooling层之前堆叠卷积层或inception层,有助于学习具有更大感受野和更复杂非线性的特征,同时能限制参数数量。但是准确率提升不大(99.47%->99.53%),可能因为网络还不够深。

感受野的定义是:卷积神经网络某层的神经元在前一层映射的区域大小。

关于更大的感受野:例如,3x3 是最小的能够捕获像素八邻域信息的尺寸。两个 3x3 的堆叠卷基层的有限感受野是 5x5 ;三个 3x3 的堆叠卷基层的感受野是7x7,故可以通过小尺寸卷积层的堆叠替代大尺寸卷积层,并且感受野大小不变。我理解的是越大的感受野,越能提取更多的上下文信息,提取的特征更为高层(high-level)一些。

感受野计算:

	  RF = 1 #待计算的feature map上的感受野大小 
	  for layer in (top layer To down layer): 
	    RF = ((RF -1)* stride) + fsize

在这里插入图片描述

为什么使用Inception?随着网络深度增加, 容易过拟合并且参数量太大,可以通过增加宽度的方式缓解。
在这里插入图片描述


  1. Self-supervised Multi-level Face Model Learning for Monocular Reconstruction at over 250 Hz,CVPR 2018,马克斯-普朗克研究所和斯坦福大学合作完成 ,Oral
    论文链接

trick:

  • 自监督的损失函数

仅凭一张图片,重构脸部 3D 模型,是非常有难度的。斯坦福大学研究者针对这一挑战,建造了一种多层人脸模型,将 3D 形态模型正则化的优点和经验纠正空间的外部泛化相结合,能够更好地推广到现实世界的人脸建模中,同时运行频率超过 250 Hz。

  1. The Devil of Face Recognition is in the Noise ,ECCV 2018
    论文链接

发现:

在CVPR 2018的paper中,很多提到了3D&2D、GAN、fiducial point/landmark、loss。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章