厍向阳,刘 巧,叶 鸥
西安科技大学 计算机科学与技术学院,西安 710054
身份认证是人们日常生活中经常面对的一个问题,在国家安全、公安司法、电子商务等方面都具有十分广泛的应用。人脸作为人的内在属性,具有很强的自身稳定性和个体差异性。因此,利用人脸特征进行身份验证是最直接的手段[1]。传统的人脸验证与识别方法包括几何特征法、模板匹配法、统计分析法等,在非限制条件下取得了一些很好的成果,但是由于易受到图像光照差异、尺度变化及表情的影响,在现实场景中识别准确率较低。近几年,随着Hinton等人掀起深度学习[2](Deep Learning)的研究热潮,卷积神经网络(Convolutional Neural Network,CNN)在人脸认证和识别[3-4]领域中得到了广泛的研究与发展。卷积神经网络可以自主学习提取出人脸的隐性特征。大部分基于深度学习的人脸认证算法是将人脸认证归结为一个人脸识别问题来处理,其认证过程需先确定测试人脸的身份信息,再根据身份信息判断两张人脸是否来自同一人,该类算法的典型代表有DeepFace[5]算法、DeepID[6-7]系列算法、FaceNet[8]算法等。但由于这些方法在训练阶段需要大量带有身份标记的训练样本进行监督学习,因此增加了额外标记数据的成本,且在认证阶段,需先确定人脸样本的身份信息才能判断样本类别,使人脸认证过程变得复杂。针对以上问题,本文提出了融合LeNet-5和Siamese神经网络模型的人脸验证算法,通过直接度量两张人脸的相似性,判断两张人脸是否为同一人。算法在Siamese神经网络框架下,构建双分支卷积神经网络,并对双分支网络结构进行改进,利用改进后的双分支卷积神经网络进行特征提取,通过测量人脸特征间的相似性,判断两张人脸是否是同一人。
卷积神经网络最早是由Fukushima[9]提出的,一个完整的卷积神经网络模型的结构分为:输入层、卷积层、池化层、全连接层和输出层,如图1所示。
图1 卷积神经网络结构图
(1)输入层。一般为若干张M×N大小的图像。
(2)卷积层。输入层的下一层为卷积层,通过若干个卷积核进行卷积运算。卷积核重复作用于整个输入区域的每个感受野,卷积后的结果就构成了输入图像的特征图(Feature Map)。令Hi表示第i层卷积输出的特征图,那么卷积公式表示如下:
其中,Wi表示第i层的卷积核权重矩阵,当i=1时,Hi-1表示输入的图像;bi为卷积核对应的偏置值;表示卷积运算;f(⋅)表示激活函数。
(3)池化层。卷积层的下一层为池化层,它的主要作用是对卷积层输出的特征图进行尺度缩小,是一种非线性的下采样方法。
(4)全连接层。靠近网络输出层之前,一般有多个连续的全连接层,这些全连接层构成了一个浅层的神经网络,起到了一个分类器的作用。全连接层对经过卷积、池化操作后的特征进行回归或分类处理,映射到样本标记空间。
(5)输出层。在人脸识别领域常用softmax分类器进行分类。softmax是一个多分类器,特征向量输入到softmax分类器中,会输出当前样本x属于第i类的概率值。设给定h(x,yi)为x属于第i类的原始度量,则softmax公式如下:
其中,P(y=i|x)表示样本x属于第i类的概率。
Siamese网络又称孪生网络[10],主要思想是通过卷积神经网络对样本进行非线性转化,将样本从原始的数据空间映射到低维度易区分的目标空间,在目标空间中对数据向量进行相似度判断,辨别两个样本是否属于一类。
Siamese网络是一种双分支网络,网络有两个结构相同且权值共享的子网络。将样本x1、x2同时输入到这两个子网络中,通过子网络映射转换到向量空间,输出特征向量Gw(x1)和Gw(x2),计算Gw(x1)和Gw(x2)之间的距离得到相似性度量Dw,通过判别相似性度量Dw大小达到分类的目的。Siamese网络结构图如图2所示。
图2 Siamese网络结构图
Siamese网络对成对样本进行训练,获得一组参数,使得当x1、x2来自同一类别时,相似性度量Dw为一个较小的值;当x1、x2来自不同类别时,相似性度量Dw为一个较大的值。Dw计算公式如下:
其中,Gw(x1)、Gw(x2)为x1、x2的特征向量。
首先将人脸数据集进行匹配,处理为成对的数据样本。然后将成对样本输入到融合网络模型中,利用双分支LeNet-5卷积神经网络进行特征提取。卷积网络将样本从原始空间映射到容易进行相似性度量的低维度目标空间中,在目标空间中通过使用Contrastive Loss函数对融合网络进行训练,最后通过测量样本相似性,判断两张人脸样本是否来自同一人。融合LeNet-5和Siamese卷积神经网络的模型流程图如图3所示。
图3 算法流程框架图
3.2.1 融合神经网络特征提取
融合神经网络模型使用双分支LeNet-5卷积神经网络进行特征提取,具体特征提取过程如下。
令M×N表示输入图像的大小,s表示步长,k×k表示卷积核大小。融合神经网络模型采用pad为1的零填充(zero padding)方式,对输入图片的边缘使用零值进行填充,填充后的图像大小为(M+2×p)×(N+2×p)。设窗口矩阵Xij表示当前卷积滑动窗口内的所有像素,Yij表示Xij经过卷积运算后的特征值。则融合神经网络中两个子网络的卷积操作过程如图4所示。
图中融合神经网络中两个子网络的卷积核权重矩阵W和偏置值b相同。特征值Yij的具体计算公式如下:
其中,f(⋅)表示激活函数,融合神经网络模型采用修正线性单元(Rectified Linear Unit,ReLU)作为激活函数,计算公式如下:
在卷积操作完成后,将得到的特征图输入到池化层。常见的两种池化方法有最大值池化(max-pooling)和平均值池化(average-pooling)。融合神经网络采用最大池化的方法对特征图进行池化操作,池化操作过程如图5所示。
图5 融合神经网络池化操作
图片经过卷积、池化后得到一系列特征矩阵。在全连接层,对两张图片的特征矩阵进行整合得到两组特征向量 Fleft、Fright。
其中,Ni表示第i层全连接神经元的个数。融合神经网络的两个子网络各有两个全连接层。
融合神经网络还采用了Dropout技术[11]预防网络过拟合,每次迭代以0.5的概率随机让网络中某些隐藏节点暂时被删除,在反向传播阶段,让这些隐藏节点的权值不更新,提高模型的泛化能力。
图4 融合神经网络卷积操作
3.2.2 融合神经网络的损失函数
融合卷积网络模型没有采用Softmax分类器进行分类,而是使用Contrastive Loss函数[12]指导训练网络模型。双分支卷积神经网络对人脸样本进行非线性转化,将数据集从原始空间分布转换为另一种空间分布,在新空间中Contrastive Loss函数通过减小同类样本距离、增大不同类样本距离,指导网络模型进行训练。设输入样本为(x1,x2),若x1、x2来自同一类,标签Y为1;否则,标签Y为0。Dw表示样本(x1,x2)之间的欧式距离。Contrastive Loss函数的表达式如下:其中,超参数m(margin)为距离阈值,当Y=0时对整个网络起作用。
融合网络优化目标是最小化损失函数L(w,(Y,x1,x2))。当Y=1时 ,-Y){max ( 0 ,m-Dw)}2为 0,若 使L(w,(Y,x1,x2))最小化,则不断缩小来自同一类样本的Dw;当Y=0时(Dw)2为0,若使L(w,(Y,x1,x2) )最小化,则让max(0,m-Dw)=0,即m 本文算法实验的系统环境Linux Ubuntu16.04,编程环境为Python,采用Caffe深度学习框架。 数据集来自CMU_PIE数据库。该数据库包含有67个人,其中每个人都包含5种姿态变化、光照差异和部分表情变化。对该数据集进行预处理操作,将图片进行两两无重复匹配生成成对样本集,将来自同一个人的两张图片称为正样本,标签设为1,来自不同人的两张图片称为负样本,标签设为0。一共生成12 000对样本集,正、负样本各6 000对。正、负样本如图6中(a)、(b)所示。 图6 正、负样本 4.2.1 参数设置 随机选择10 000对样本(正负样本各5 000对)作为训练集,用于模型的构建和参数的调整,剩下2 000对样本(正负样本各1 000对)作为测试集,用于检验已训练模型的性能。对数据集进行归一化处理,并将训练集的图片进行镜面翻转,扩充数据量。 将训练集输入到网络中进行模型训练,训练过程所涉及的参数有:batch_size大小、学习率设置、优化方法选取、激活函数及损失函数中margin值的大小。模型参数设置如表1所示。 表1 参数设置 4.2.2 评价指标 对模型进行评估时,使用的评价指标有:ROC曲线、AUC、十折交叉验证准确率。 ROC曲线以假阳率(FPR)为横坐标、真阳率(TPR)为纵坐标,真阳率(TPR)、假阳率(FPR)及ACC的计算公式如下: 其中,TP(True Positive)表示正类样本对被判定为正类;TN(True Negative)表示负类样本对被判定为负类;FP(False Positive)表示正类样本对被判定为负类;FN(False Negative)表示负类样本对被判定为正类;dist.size表示距离数组的大小。 4.2.3 实验方案 为了设计最佳LeNet-5模型结构并验证融合网络模型的有效性,本文采用在相同的实验环境下,相同数据集以及相同数据量,设计如下实验方案: 方案1分别将卷积核大小设置为3×3、7×7进行实验,并与原LeNet-5模型[13]5×5卷积核结构进行对比。 方案2分别采用卷积层数为3、4、5层进行实验,并与原LeNet-5模型2层卷积结构进行对比。 方案3 对原LeNet-5、Alexnet[14]、LBPH+Joint Bayesian[15]以及本文的融合LeNet-5与Siamese神经网络模型进行人脸验证的对比实验,并使用评价指标对四种模型进行评估。 方案1不同卷积核大小实验结果如图7所示,3×3和5×5卷积核结构的训练准确率基本相同,但3×3卷积核结构的测试准确率略高于5×5卷积核结构,7×7卷积核结构的训练准确率和测试准确率最低。这是因为在相同卷积层数的情况下,当选择较大的卷积核时其参数个数和计算复杂度也会随之增加,这可能使得网络计算性能降低。在本文实验中3×3卷积核结构最合适。 图7 不同卷积核大小实验对比结果 方案2不同卷积层数实验结果如图8所示,3层卷积结构的训练准确率和测试准确率最高,4层及5层卷积结构次之,原LeNet-5的2层卷积结构训练准确率和测试准确率最低。分析方案2可知,深层的神经网络可以学习到图片的本质特征,但是过度加深网络,可能会增加网络训练的难度,反而降低网络性能。在本文实验中3层卷积结构最合适。 图8 不同卷积层数实验对比结果 方案3根据方案1、方案2实验结果,方案3中LeNet-5模型采用3×3的卷积核、3层卷积结构。图9、图10为四种模型在CUM_PIE数据集、ORL数据集上的ROC曲线图。 AUC为ROC曲线下的面积,ROC曲线越靠近左上角,意味着在某个FPR水平下,TPR越高,AUC值越大,模型认证性能越好,其中影响模型认证性能的主要因素是模型对人脸特征的表达能力。从图9、图10可知,LeNet-5+Siamese网络模型在两个数据集上的ROC曲线最靠近左上角且AUC值最高,模型性能最好。相比于原LeNet-5模型特征提取和LBPH特征提取,本文模型对人脸图片具有更强的特征提取能力,且相对于原LeNet-5网络模型和Alexnet网络模型,本文网络模型通过使用Contrastive Loss函数减小同类样本距离、增大不同类样本距离,提升了模型对样本的区分能力。 方案3四种模型在CUM_PIE数据集、ORL数据集上的AUC值和十折交叉验证准确率,结果如表2、表3所示。 图9 各算法在CUM_PIE数据集中ROC曲线图 图10 各算法在ORL数据集中ROC曲线图 表2 模型在CUM_PIE数据集中测试结果 表3 模型在ORL数据集中测试结果 由表2、表3可知,本文模型在两个数据集上都取得了不错的认证结果,相比于其他三种模型,融合神经网络模型的AUC值和准确率均为最高。相比于原LeNet-5人脸认证模型,论文改进的算法模型认证准确率有较大提升。分析方案3可知,相比于原LeNet-5算法模型与Alexnet算法模型,LeNet-5+Siamese算法模型结构简单有效,且各层之间参数共享,使得训练参数大大减少,提升网络计算性能。相比于LBPH+JoinBayesian算法模型,融合神经网络通过使用双分支网络提取特征,避免了繁杂的人工提取特征,泛化能力更强。另外,融合网络在训练阶段不需要大量带有身份标记的训练样本,减少了标记数据的成本。 本文提出了融合LeNet-5和Siamese神经网络模型的人脸验证算法,相较于大部分基于身份标记的人脸验证算法,该算法通过直接测量两张人脸特征间的相似性,来判断两张人脸是否来自同一人,既简化了人脸认证的过程,又减少了标记数据的成本。且该算法的网络模型采用双分支卷积网络结构同时进行提取特征,并使用Contrastive Loss函数对网络进行训练,提升融合网络对图片的识别、区分能力,提高了二分类人脸验证问题的准确度。经测试,该网络模型具有较强的泛化能力,在CUM_PIE和ORL数据集上的准确率分别达到了95.1%和90.5%。但由于实验环境限制,该网络模型只适用于中小型数据集,对于数量较大的数据集,网络模型的计算效率还有待提高。未来应对大型数据集和真实环境中的数据集进行深入的研究和分析。4 算法验证与分析
4.1 实验环境与数据集
4.2 参数设置与实验方案
4.3 实验结果及分析
5 结束语