DeepID2文章加深理解

来源:互联网 发布:知柏地黄丸主治什么 编辑:程序博客网 时间:2024/03/29 14:51

Deep Learning Face Representation by Joint

Identification-Verification(DeepID2)

简介:人脸识别的关键是建立有效的特征表达,关键减小同一个人照片之间的差异(类内差异),同时增大不同人照片之间的差异(类间差异)。本文提出同时使用人脸识别信号人脸验证信号作为监督信号。人脸识别通过DeepID2提取不同人脸的特征,增大类间差异;人脸验证通过DeepID2提取相同人脸的特征,减小类内差异。LFW的检测率为99.15%,相比较于DeepID1,误码率减少了67%

背景:在人脸识别时,由于姿态、光照、表情、年龄、遮挡等原因,程序会将同一个人的多张图片识别为不同的人,这大大提升了人脸识别的难度。因此需要减小类内差异,增大类间差异。研究表明,类内差异与类间差异是复杂的、高度非线性,因此不能用简单的线性模型来描述它。

人脸识别(IDentification):输入一张图片,从大量的身份类别中找到该图的身份。

人脸验证(Verification):比较两张人脸图片的身份是否相同。

 

训练阶段,给予带有标签的人脸图像,在DeepID层提取特征,映射到其中一个身份上。测试阶段,DeepID2特征可被用于人脸验证。人脸识别信号可以将不同身份的DeepID2特征分开,拥有非常强的身份关联性与类间差异;人脸验证信号可以克服人脸识别信号的缺点,它可以使相同身份提取的DeepID2特征更加接近,而不同身份提取的特征远离,对DeepID2每个元素的强有力约束也有利于减少类内差异。

 

DeepID一代与二代的网络结构对比:


DeepID网络结构:


DeepID2网络结构:


DeepID2特点:

第三层卷积层:权值局部共享

第四层卷积层(局部连接层):注意,说明卷积采用局部连接,没有用到全部60张特征图,卷积的权值也是完全不共享

 

DeepID层:同时对Max-pooling layer3Convolutional layer4全连接

 

激活函数采用:ReLU


公示表达:

①、DeepID2特征提取(卷积):是输入的patch是等待训练的卷积参数。

 

②、人脸识别信号通过DeepID层的nsoftmax层来实现,输出是n维的概率分布。通过最小化交叉熵损失函数(the cross-entropy loss来训练。

 

是之前提取的DeepID2特征;是目标的身份类;是softmax层的参数;是目标概率分布();是预测概率分布。

③、人脸验证信号使得相同身份图像提取的DeepID身份更加相似,有效减小类内差异。人脸验证信号常用的是L1/L2范数和余弦相似度。

基于L2范数的验证函数:

是从两张图片中提取的DeepID2向量;当时,说明来自于同一身份,此时我们需要最小化两个DeepID2向量的L2距离。当则是不同身份,尽可能的让两个向量之间的距大于阈值是待学习的阈值参数。

基于L1范数的验证函数(摘自另外一篇文章)

                                        

基于余弦相似度的验证函数:

                                        

其中是余弦相似度;是待学习的参数,分别表示缩放参数和位移参数;是sigmoid函数;判断是否为同一人。

我们的目的是为了学习中的参数,参数的更新通过随机梯度下降法,但是参数除外,因为其导数永远大于0,参数通过训练期间寻求样本的最低验证误差来调整。


算法:

目的是通过调整参数来求得误差函数的最小值。


算法验证:

1、使用SDM算法得到21个人脸标记,通过相似度变换进行人脸校准。

2、把一张图通过改变角度姿势、patch大小、颜色通道处理后,裁剪得到200个面部patches

3、用200个深度卷积网络对这200patches以及其水平旋转图进行特征提取,每个卷积网络生成2160DeepID2向量。

4、为了减少冗余并且加快训练速度,使用“前向后向贪心算法”筛选出25个有效且互补的DeepID2,形成25*160=4000维的DeepID2向量,最后通过PCA降到180维。

5、用提取的DeepID2训练联合贝叶斯模型,通过两张人脸图像的联合概率来判断是否属于同一个人。联合贝叶斯模型可表示为表示类间差异,表示类内差异,都符合高斯分布,且由训练数据估算得到。人脸验证通过对数似然比实现。


实验操作:

1、扩大CelebFaces数据库,使用CelebFaces+数据库训练,包含202599张图和10177个身份。

2、随机选取8192个身份,标记为CelebFaces+A,用于训练DeepID2;剩下的1985个身份,标记为CelebFaces+B,用于特征选取和训练联合贝叶斯模型。

3、当CelebFaces+A训练DeepID2时,CelebFaces+B被用作验证集,并决定学习速率、训练迭代次数和超参数

4、CelebFaces+B分出1485用于训练集,500用于验证集以进行特征选取。

5、最后使用整个CelebFaces+B来训练联合贝叶斯模型,并且使用筛选后的DeepID2特征来对LFW数据集进行测试。


具体细节:

1、调查超参数的作用:

①、,验证信号消失,只有识别信号;增加,验证信号逐渐主导训练过程;,只有验证信号。

②、由下图可得,当在0.05周围时,验证信号精确度最高。


③、用LDA(主题模型算法)来解释上述现象:

类间散射矩阵:

其中是第i个身份的所有图像特征均值,是整个数据集的图像特征均值,是第i个身份的图像数量(一共有个人,每个人的图片数量都不同)。

类内散射矩阵

其中是第i个身份的特征集合,是第i个身份的特征均值,是不同身份的数量。


注意:类内/类间变量的方差是对应散射矩阵的特征值

④、方差分析:



,特征包含类内、类间差异。其中类间差异有利于区分不同身份,但是数量级较大的类内差异则属于噪声,干扰人脸识别与验证

,类间差异的多样性保持不变,与红色曲线相比,绿色在某些维度上方差更大;但类内差异无论在大小还是多样性上都大大减小,更有利于人脸识别验证

,由于没有了识别信号,特征的多样性将会消失,区分不同身份会变的困难。因此类内、类间差异只存在于低纬度,性能大大降低。

⑤、PCA降维分析:


通过PCA降至二维,数据来源于LFW六个人的大量人脸图像。,即使各个群落的中心分开的较为明显,但是由于类内差异太大,导致不同群落的点混合,难以区分;当,类内差异明显减小,群落可以被区分;当,由于识别信号消失,群落的中心点崩溃,导致各个群落明显重叠,难以区分。

2、考察信息量的影响


训练过程,身份识别的对象从328192以指数增长,人脸验证由8192个训练样本生成。增加的样本数量生成了更为丰富的身份信息,有利于DeepID2形成不同的类间差异,有助于不同身份的区分。

3、调查验证向量:

为了调查验证信号是否能够减少类内差异,进行三组实验:第一组给所有样本对加上基于L2范数的验证信号,记为L2;第二组只给正样本对(属于同一个人)加上验证信号,记为L2+第三组只给负样本对(不属于同一个人)加上验证信号,记为L2-。并在测试集上观察DeepID2的人脸验证精确度。

结论:L2+只减少了同一个人的两张图片的DeepID2距离(缩小了类内差异),L2-只增加了极为相似的两个人图片的DeepID2距离(增加了类间差异)。因此可以证明验证信号有效地减小类内差异。并且相比之下,L2的验证效果最好。


4、系统流程和方法对比:

系统流程:

a、一张人脸图片筛选patches,进行DeepID2特征提取。

b、通过交叉验证(cross-validation)选取合适的维度,进行PCA降维。

c、在整个CelebFaces+B中训练联合贝叶斯模型,并用LFW6000个样本对来测试。

d、通过联合贝叶斯模型得到极大似然比,与阈值作对比以用于人脸验证。

e、重复特征提取七次,每次选取的样本相互独立,分别训练七个联合贝叶斯模型。

f、用这七个联合贝叶斯模型对每一个样本对进行测试,再用SVM融合七个模型的测试    

结果,最后实现了99.15%的精确度。

Patches与精确度、时间的关系:


方法对比:



















0 0
原创粉丝点击