对Deep Learning Face Representation from Predicting 10,000 Classes论文的理解

接下来从以下四个方面来介绍我对这篇论文的理解:

一.目的

利用深度学习学习人脸的高维特征来进行人脸验证

二.Deep convnets(特征提取模型)

                                          图1 卷积网络模型

结构:包含4个卷积层提取特征,全连接层即deepid层(160个神经元,由第三卷积层的max_pooling层和第四层卷积层得到),最后一层为softmax层分类层

三.特征提取

特征提取来自于一个人脸的60个面部块,他的组成包括人脸10个区域,每个区域三个尺度,每个尺度分为rgb和灰度图,所以总共由10*3*2=60patch(论文的原话是:features are extracted from 60 face patches with ten regions,three scales,and rgb or gray channels,不知道理解的对不对).下图2是一张脸的10个区域,和其中两个区域的三个尺度

                                                  图2 一个人脸的划分示意图

因为有60个patch因此需要训练60个如图一的神经网络。每一个patch,我们做一个水平翻转,所以一个网络我们可以提取两个160维的DeepId向量。所以总共的DeepId特征向量的长度为19200(160*2*60),这个特征可以为后人脸验证做准备

四.人脸验证

人脸验证算法,论文上提取两种算法,一个是使用联合贝叶斯网,另一个是使用神经网络。由于第一种算法不太熟悉,所以主要讲下第二种,利用神经网络。神经网络模型包含一个输入层(输入的是上述讲的DeepId特征向量),一个局部链接层,一个全连接层,最后是单个的输出神经元表示是否为同一个人。模型如下图3

 

                                       图三 人脸验证模型

如上图所示,输入特征分为60组,因为有60个patch。每一组包含640(在第三点特征提取讲过,一个卷积网络提取的特征为160*2,因为验证是否为同一个人,所以输入的一对图片,所以还得乘以2,即160*2*2=640)个特征。特征在同一组是高度相关联的,所以在第一个隐层使用局部连接,局部层有60个组,每一组有80个神经元,这80个神经元只和输入层的一个组连接,学习局部相关性与此同时减少特征维度。第二个隐层是全连接层,学习第一个隐层的全局相关性。单个输出层是和第二个隐层全连接的。隐层之间的激活函数为RELU,输出层的激活函数为sigmoid.另外所有隐层加入dropout learning,输入神经元不使用dropout。  

五.试验

模型训练使用的数据集是celebFaces,测试使用的LFW数据集。CelebFaces数据集有87628张图片,5436个人(第一代,现在有更新了)。从celebface随机选取80%(4349)个人学习特征提取模型,使用剩下的20%的图片去学习人脸验证模型。从训练集中随机选取10%的图片作为验证集,训练模型每迭代一次,观察top-1验证集的错误率,选择最低的那个作为最终模型

5.1multi-scale convnets(多尺度卷积神经网络)

在图一的时候,可以发现最后的隐层(DeepId层),是由是由第三个卷积层(最大池化层后)和第四个卷积层连接得到的,而不是像传统的那样。因此被称为多尺度卷积神经网络。通过比较top-1 验证集在分类4349身份类别时的错误率可以看出在使用多尺度卷积神经网络时效果要好,如下图4所示是60个不同的patch 在60个神经网络上的top-1验证集错误率,蓝色表示在传统的卷积神经网络上的错误率,红色表示在多尺度卷积神经网络的错误率

 

                                            图4 top-1验证集错误率

5.2 学习有效特征

同时分类大量的身份是学习有判别力和紧凑的隐藏特征的关键。(原文是:classifying a large number of identites simultaneously is key to learning discriminative and compact hidden feature).为了证明这个,论文指数增加了人的身份类别,从136增加到4349(输出层也随之增加)。但特征提取模型其他层的神经元数量不变(DeepId层还是160维),观察top-1验证集分类的错误率,和人脸验证的准确率。下图5是人脸验证的准确率随着身份数量增加的图,图6是top-1验证集身份分类的错误率

 

                                             图5 人脸验证准确率

 

                                            图6 身份分类错误率

论文还测试了4349维分类器输出作为特征进行面部验证,在联合贝叶斯上达到的精确度大约维66%,而神经网络是失败的,因为有很多类,而每个类样本比较少,分类器输出是多样的和不可靠的,因此不能作为特征

5.3不同patch组合的准确率

我们评估了不同组合面部patcht提取特征对于人脸验证准确率的贡献。我们从Kpatch(K=1, 5, 15,30, 60)的特征训练人脸验证模型。不可能计算所有可能的patch组合,所以我们选择最有代表性的组合。 如图7所示,从不同区域、尺度和颜色通道中添加更多的特征始终提高性能。组合60个patch分别提高了4.53%和5.27%的最佳单补丁的联合贝叶斯和神经网络,分别。我们使用联合贝叶斯和神经网络分别达到96.05%和94.32%的准确度。曲线表明,如果提取更多的特征,则可以进一步提高性能。

 

                           图7 不同patch数目人脸验证的准确率

 

猜你喜欢

转载自blog.csdn.net/qq_29023939/article/details/81434996