首页 » 刷脸背后:人脸检测 人脸识别 人脸检索 » 刷脸背后:人脸检测 人脸识别 人脸检索全文在线阅读

《刷脸背后:人脸检测 人脸识别 人脸检索》7.12 深度学习特征

关灯直达底部

深度学习和传统模式识别方法的最大不同在于它是从大数据中自动学习特征,而非采用手工设计的特征。好的特征可以在很大程度上提高模式识别系统的性能。深度学习运用于物体识别领域具有重大突破意义的就是人脸识别。无论是传统的人脸检测和识别,还是基于深度学习的检测和识别,面临的最大挑战都是如何区分由于光线、姿态和表情等因素引起的类内变化和由于身份不同产生的类间变化。这两种变化分布是非线性的且极为复杂,传统的现行模型无法将它们有效地分开。深度学习的目的是将各种因素成功地分开,例如在深度模型的最后一个隐含层,不同的神经元代表了不同的因素。如果将这个隐含层当作特征表示,人脸识别、姿态估计、表情识别、年龄估计就会变得十分简单,因此通过多层的非线性变换得到新的简单线性特征表示。这些特征就尽可能多地去掉类内变化,而保留类间变化。人脸识别有两类任务,即人脸确认和人脸辨识。人脸确认的任务是判断两张照片是否为同一个人,属二分类问题,随机猜中的概率为50%。人脸辨识的任务是将一张人脸图像准确地分到N个类别之一内,类别是由人脸的身份定义的。这是一个多类问题,更具有挑战性,其难度随着类别数的增多而增大,随机猜中的概率为1/N。这两类任务都可以通过深度模型学习人脸的特征表达。

7.12.1 深度学习算法的使用

本部分的特征是使用Ubuntu上的Caffe工具提取的。

算法对应的项目文件名称为“deepLearningSearch.sln”,位于“../deepLearning Search”路径下。

打开deepLearningSearch文件夹,使用Visual Studio 2010打开“deepLearning Search.sln”,运行“deepLearningSearch.cpp”即可。

7.12.2 深度学习算法原理

我们使用ImageNet网络结构,主要包括5个卷积层、3个全连接层、下采样层(Pooling层)、线性修正单元(ReLU层)以及标志所属类别的输出层[17]。网络最后一个全连接层的输出需要设置为类别数,输入图片尺寸为227×227像素,输出为属于每个类别的概率值。我们选择网络结构中的倒数第二个全连接层作为要提取的深度特征层,由于该层后跟有线性修正单元(ReLU层),所以提取出的深度特征向量都是非负值。为了防止过拟合现象,网络中使用了Drop-Out层,过滤学习到的一些冗余信息。

使用ImageNet训练模型,我们选择网络结构中的倒数第二个全连接层作为要提取的深度特征层,因此对于每张图片,都能得到一个4096维的特征向量,所以每张图片我们可以获得的特征向量维度为4096。

7.12.3 深度学习算法实现

算法步骤:该部分对应的代码包含在源码中的 extract_feature 文件夹下,geetDeepID.m文件可以实现对指定文件列表中的所有图片进行提取深度特征。

7.12.4 深度学习算法的实验数据、实验结果及分析

1.实验数据

图像库中为利用深度学习得到的497(行)×128(列)或者497(行)×4096(列)的数据。

查询图像的深度特征为1(行)×128(列)。

2.实验结果

实验结果在与“deepLearningSearch.cpp”同一目录下的“similityDLFeature.txt”文件中。每行中第一列代表图像的编号,第二列代表查询图像与图像库中的当前图像的余弦相似度。

查询图像如图7-19所示。

图7-19 查询图像(8)

根据余弦相似度的阈值,检索出的部分相似图像如图7-20所示。

图7-20 检索出的部分相似图像(8)

表7-8所示为基于4096维度的余弦相似度度量的深度学习算法之图像检索的结果。

表7-8 图像检索结果

续表

续表

续表

3.实验分析

128维度时:相似图像的余弦相似度阈值为0.74。

4096维度时:相似图像的余弦相似度阈值为0.773以上。

最后,使用深度学习算法进行人脸检索的查准率为41/43×100%=95.35%,查全率为41/42×100%=97.62%。