基于多样本扩充的卷积神经网络人脸识别算法*
2020-06-18张汶汶周先春
张汶汶 周先春
(河海大学计算机与信息学院 南京 211100)
1 引言
现实生活中,人脸受外界影响较大,并且伴随着各种复杂多变的情况,识别会有一定的难度。因而有越来越多的算法应用于人脸识别[1~4]。
神经网络是由大量的人工神经元通过互相连接而构成的复杂系统,它能根据外界的信息变化情况从而改变自身的结构。BP(Back Propagation)神经网络是一种应用广泛的人工神经网络[5~6],它是一种以误差反向传播为基础的浅层神经网络,用于提取图像的表面特征,但是当输入图像样本数量较大时,过多的神经元数目会导致收敛速度慢,陷入局部较小的缺陷中。因而学者提出深度学习的思想,通过建立更深层次的神经网络自动提取人脸特征,卷积神经网络CNN(Convolutional Neural Network)[7~8],深 度 信 念 网 络DBN(Deep Belief Network)[9],深度神经网络DNN(Deep Neural Network)都是常见的多层神经网络。CNN网络对输入网络的图像不需要经过预先处理,自动提取更复杂的特征,因此在人脸识别中得到广泛的应用。本文提出的新算法使用CNN神经网络提取人脸特征。
由于有限的人脸样本无法满足现实生活中人脸识别的需要,学者通过构造新的虚拟人脸来提高人脸识别率,例如Xu etal.[10]提出了利用人脸的镜像图来构造新的人脸,Jung etal.[11]利用噪声合成新的人脸,Tang etal.[12]提出结合光流和基于图像的人脸原型算法产生虚拟的表情,这些算法均是在原始人脸数据库的基础上生成新的虚拟样本来进行人脸识别,它们有效地提高了人脸识别率。本文提出的新算法分别在原始样本与镜像样本的基础上,利用两个样本的均值构成平滑中值样本,因而新算法中每一类能够生成多个不同的虚拟人脸,增加人脸样本的数量。
本文提出的新算法在构造镜像图的基础上,分别取同一类中任意两个不同的原始图像和镜像图像,取它们的平滑中值样本作为新的虚拟图像,将新生成的镜像样本与两类平滑中值样本作为新的训练样本集,输入CNN网络得到更新权值,然后通过目的训练样本集训练CNN提取更多隐藏的人脸图像特征,最后使用支持向量机SVM(Support VectorMachine)[13]特征提取后进行分类。SVM在解决小样本、非线性和高维模式识别问题具有良好的性能。该算法与其他算法不同之处在于:1)在镜像图的基础上,利用平滑中值样本构造新的虚拟样本作为新的训练样本集;2)新的训练样本集输入CNN网络得到更新的权值,训练CNN网络更好地进行特征提取;3)使用SVM作为最终的分类器进行人脸识别。
本文对镜像图法与CNN网络算法进行相关描述,提出一种基于多样本扩充的卷积神经网络人脸识别算法,在ORL和FERET人脸库上使用新算法进行人脸识别,并与其他算法进行比较与分析。
2 相关工作
2.1 镜像图法
镜像图法是有一种改进的稀疏表示算法,有限的人脸库满足不了日益复杂的人脸识别的需要,镜像法通过人脸图像的镜像性构造新的镜像人脸图,是一种基于L2范数的稀疏识别算法。若人脸库有t类,每类有n个训练样本,训练样本总数为N=t*n。设Xi是第i类训练样本矩阵(i=1,2,…,t),Xi=[x(i-1)*n+1,x(i-1)*n+2,…,xin],Xi中每一个列向量代表第i类中每一个训练样本的列向量,设X表示总的训练样本矩阵,Xi。设样本矩阵具有C行和D列,它对应的镜像矩阵也具有C行和D列。第i类第j个训练样本列向量表示为x(i-1)*n+j,第i类第j个新生成的镜像样本表示为m(i-1)*n+j,(j=1,2,…,n)。由于新生成镜像矩阵,则总的训练样本矩阵M可以表示为M=[M1,M2,…Mi,…,Mt],Mi是第i类训练样本矩阵。
x'(i-1)*t+j(c,d)表示x(i-1)*t+j在第c行和第d列上的像素,m'(i-1)*t+j(c,d)表示m(i-1)*t+j(c,d)在第c行和第d列上的像素,有
将m'(i-1)*t+j(c,d))转化为m((i-1)*t+j(c,d)。对于第i类测试样本列向量为y,有
ui为Mi对应的系数。
ui=[u(i-1)*t+1,…,ui*t,u'(i-1)*t+1,…,ui'*t],令 y'作为y的重构图像,有
u'i=(MiTMi+ηa)-1MiTy,其中η取较小的常量,a是可识别的矩阵。用di来衡量y与y'之间的偏差程度:
di越小说明y越能表示y'。若class(y)=argmiin (di),则测试样本y被分配到第i类。
2.2 CNN网络算法的描述
CNN网络能自动对目标样本集进行提取和分类,是一种深层神经网络。深层神经网络的层数越多,就能够提取到更多的样本特征,但是网络层数越多也会增加训练的难度。本文构造9层CNN网络,包括1个输入层,3个卷积层,3个池化层,1个全连接层和1个输出层,如图1所示,C1,C2和C3作为卷积层,S1,S2和S3作为池化层。每个卷积层采用卷积核的大小为5×5,卷积层中每个特征图像的每个神经元通过5×5的局部感受野与前一层连接,每个池化层采用卷积核的大小为2×2,池化层每个特征图像的每个神经元通过2×2的局部感受野与前一层连接,池化层中特征样本的数目与它对应的卷积层数目相等。卷积层和池化层之间是部分相连,目的是保持非相关性。F1作为全连接层,该层中每个神经元与S3中所有神经元互相连接,提取的特征值通输出层对所有的输入样本进行识别,最后使用SVM作为分类层进行分类。
图1 9层CNN网络
其中f(x)是纠正线性单元函数ReLU(Rectified Linear Units),它是一种基于L2准则的函数,不同于常用的Sigmoid函数,ReLU更易产生稀疏性,在一定程度上避免过拟合现象发生。xli-1是卷积层中第l-1层的第i个输入特征样本,ki
lj是第l-1层中第i个输入特征样本与第l层中第j个输出特征样本之间的卷积权值,blj是第l层中第j个输出特征样本的偏差值,ylj是第l层中第j个输出特征样本。
池化层是一个采样过程,需要多次对输入样本进行重复采样,才能充分的提取图像特征,本文采用最大池化的数学表达式:
其中down(y)表示最大采样函数,ylj-1是池化层中第l-1层的第j个输入特征样本,ylj是第l层中第j个输出特征样本。
3 基于多样本扩充的卷积神经网络人脸识别算法的相关描述
3.1 基于多样本扩充的卷积神经网络人脸识别算法
新算法对人脸库中的人脸图像的像素调整为28×28像素,将人脸图像进行划分,得到目标训练样本矩阵X和目标测试样本矩阵Y。设X=[X1,X2,…Xi,…,Xt]Xi=[x(i-1)*n+1,x(i-1)*n+2,…,xin],Xi是第i类训练样本矩阵,Xi中每一个列向量表示第i类每一个训练样本的列向量,Y=[Y1,Y2,…,Yi,…,Yt],Yi是第i类测试样本矩阵,Yi中每一个列向量表示第i类每一个测试样本的列向量,Yi=[y(i-1)*m+1,y(i-1)*m+2,…yim](i=1,2,…,t)。
第一步:设样本矩阵具有C行和D列,它对应的镜像矩阵也具有C行和D列。第i类第j个训练样本列向量表示为x(i-1)*n+j,利用2.1构成第i类第j个新生成的镜像图列向量m(i-1)*n+j,(j=1,2,…,n),用M表示总的镜像样本图矩阵,M=[M1,M2,…,Mi,…,Mt]。
第二步:对于目标训练样本集,使用每类中两个不同的初始训练样本去构造新的训练样本,会构成Cn2个新的训练样本,若x(i-1)*n+m和x(i-1)*n+k均是来自Xi,新训练样本表示为
用Xa表示新生成的总的样本矩阵,Xa=[X1a,X2a,…,Xta],利用此法得到的新的人脸图如图2和图4所示。
图2 原始ORL人脸数据库中的人脸及构成的新人脸。第一行是ORL数据库中的人脸,第二行是利用ORL人脸数据库中的人脸构造的新人脸
图3 原始ORL人脸库中的人脸及相应的镜像人脸图和由镜像人脸图所构造的新人脸。第一行是ORL数据库中的人脸,第二行是第一行对应的镜像图,第三行是利用镜像图构造的新人脸
第三步:对于第一步生成的第i类镜像样本图矩阵Mi,运用第二步的算法,得到由镜像图构造的Cn
2 个新的镜像图,用Ma表示新生成的总的样本矩阵,Ma=[M1a,M2a,…,Mta]。利用此法得到的新的人脸图如图3和图5所示。
图5 原始FERET人脸库中的人脸及相应的镜像人脸图和由镜像人脸图所构造的新人脸。第一行是FERET数据库中的人脸,第二行是第一行对应的镜像人脸图,第三行是利用镜像人脸图构造的新人脸
第四步:令D表示新构成的训练样本集,D=[Xa,M,Ma],输入2.2提出的CNN网络,构建辅助CNN网络,通过训练辅助CNN网络得到表示人脸图像特征的权值。考虑到目标训练样本集和新的训练样本集之间的相关情况,使用得到的权值去初始化CNN网络前几层的权值,最后一层的权值采用随机初始化去设置。设置所有网络层的权值后,使用目标训练样本集去训练CNN网络,这样能够提取更深层次、更有效、更复杂的人脸特征。CNN网络中最终批量大小设为128,衰减系数设为0.0006,使用CNN网络提取人脸特征后再去训练SVM。对于目标测试样本集,使用已经训练好的CNN网络去提取人脸特征,再通过训练好的SVM分类器识别所有的样本。训练CNN网络中输出的特征训练集和特征测试集与输入SVM的特征训练集和特征测试集相同,CNN网络中的训练标签与测试标签分别与SVM中对应的训练标签与测试标签相同,使用径向基函数(Radial Basis Function,RBF)作为SVM分类器的核函数:
其中si是输入SVM中的第i个样本,β是核参数,识别函数为
其中ti是si对应的类别,ai是拉格朗日系数,惩罚系数σ是用来控制错分样本的惩罚情况。对目标样本集中的任意两个样本之间使用一对一的SVM,人脸样本数为t,设计个SVM分类器,分别在个SVM分类器中识别未知的样本,通过投票机制来确定未知的样本属于对应的类别。通过SVM在最有可能的类别上投票,最后通过计算总投票数所在的类别就是未知样本所在的类别。
3.2 基于多样本扩充的BP神经网络人脸识别算法
基于多样本扩充的BP神经网络的人脸识别算法是一种改进的BP神经网络算法。该算法首先对所有人脸样本运用奇异值分解(SVD)求得特征值矩阵,进行划分后得到特征训练样本矩阵X和特征测试样本矩阵Y,人脸样本数为t。使用3.1中第一步、第二步、第三步得到新生成的总的样本矩阵D,将X、Y和D分别进行归一化处理,得到PX、PY和PD。
通过构建三层BP神经网络模型进行分类,隐含层神经元个数设为200,输入层与隐含层之间的传递函数设为tansig,隐含层与输出层之间的传递函数为purelin,BP神经网络训练函数为trainrp,训练目标设为1e-7,训练次数设为3000,学习速率设为0.008。将PD输入BP神经网络,构建辅助BP神经网络,训练辅助BP神经网络后得到表示人脸面部特征的权值,使用权值来初始化BP神经网络的前几层的权值,最后一层的权值采用随机初始化去设置。设置好所有网络层的权值后,使用目标训练样本集去训练BP网络。
4 新算法的合理性分析
文献[10]中已经证明人脸镜像图存在的依据,新算法所使用的人脸库分别在同一类原始图像和镜像图像中,任取两个不同图像的平滑中值样本作为新的虚拟图像。若要生成有效的虚拟图像,虚拟图像一方面不能与原始图像过于接近,不然生成的虚拟图像毫无意义;另一方面,虚拟图像不能太偏离原始图像,不然就会对人脸识别造成误差。假设新算法任取同一类中的两个不同图像x1和x2,则新生成的虚拟图像用x3表示,。x1与x3之间的偏差值用v1表示,,x2与x3之间的偏差值用v2表示,。由于x1和x2均是同一类图像,则偏差值v1和v2均不会过大或过小。因此取同一类中两个不同图像的平滑中值样本作为新的虚拟图像,这是具有合理性的。
图6 ORL人脸库中分别使用新算法和CRC法得到的偏差值
图7 FERET人脸库中使用新算法和CRC法得到的偏差值
图6 和图7分别是ORL人脸数据库和FERET人脸数据库中,新算法得到的偏差值与CRC法得到的偏差值形成的对比图。偏差值越小,说明训练样本重建的测试样本越接近给定的测试样本图,因而对应的算法进行人脸识别的效果越好。从图6和图7中可以看出,在大多数类别数中,新算法求得的偏差值都比CRC法小。
5 实验结果与分析
将本文提出的新算法与现有一些成熟算法分别在ORL[14]人脸库和FERET[15]人脸库中进行识别率的比较与分析。用Matlab程序分别在ORL人脸库和FERET人脸库上对镜像法、在文献[16]中所提出的FCM法、DALM法、基于卷积神经网络的识别算法和本文提出的基于多样本扩充的BP神经网络人脸识别算法、基于多样本扩充的卷积神经网络人脸识别算法进行实验。实验结果如下所示。
ORL人脸库是有40个不同的人,每个人具有10幅的图像。FERET人脸库是有200个不同的人,每个人具有7幅的图像。表1是在ORL人脸库中不同训练样本数下的不同算法所求得的识别率,表2是在FERET人脸库中不同训练样本数下的不同算法所求得的识别率。在ORL人脸库和FERET人脸库中,新算法取的训练样本数分别为2、3和4,剩余的样本作为测试样本。从表中来看,基于多样本扩充的卷积神经网络人脸识别算法比其他算法都好。
表1 各算法在ORL人脸库中识别率(%)的比较
表2 各算法在FERET人脸库中识别率(%)的比较
基于多样本扩充的BP神经网络识别算法是一种改进的BP神经网络算法,BP神经网络只能用于提取人脸图像表面的特征,当目标训练样本集过多时,BP神经网络易陷入局部较小的缺陷中。基于CNN网络的识别算法充分运用CNN网络能够自动提取深层人脸特征的优势进行识别。考虑在实际生活中,当训练样本数较少时,有限的人脸样本数无法提供足够的人脸特征,因而基于多样本扩充的BP神经网络识别算法与基于卷积神经网络的识别算法在一定程度上无法得到更广泛的应用,本文提出的新算法通过简单易行的途径构造多种虚拟训练样本,作为新的训练样本集输入CNN网络,得到CNN网络的权值后,再通过CNN网络和SVM去提取人脸特征,极大地提高人脸识别的效果。从表中看出,基于概率协同表示和卷积神经网络识别算法比其他算法更具有优势。
在ORL人脸库中,当训练样本数为2时,基于多样本扩充的卷积神经网络人脸识别算法求得的识别率达到98.48%,基于多样本扩充的BP神经网络识别算法求得的识别率为92.57,基于卷积神经网络的识别算法求得的识别率为93.28%,在FERET人脸库中,当类别数为2时,新算法与基于卷积神经网络的识别算法之间最大的差值达到4%。
镜像法和DALM法是改进的稀疏识别算法。镜像法是通过构造新的虚拟人脸来提高人脸识别率,与镜像法和FCM法相比,DALM法具有一定的优势,但是还是无法与新算法相比。在ORL人脸库中,当训练样本数较少时,新算法与DALM法之间的差值达到12%,与镜像法之间的差值达到13%。在FERET人脸库中,当训练样本为2时,新算法求得的识别率为97.39%,而DALM法求得的识别率为64.90%。由于神经网络在提取人脸特征上具有的良好性能,即使训练样本数增多,镜像法、FCM法和DALM法求得识别率都没有新算法好。
6 结语
如何有效地提取人脸特征是人脸识别中一直需要解决的关键问题,本文提出一种基于多样本扩充的卷积神经网络人脸识别算法。新算法在人脸镜像图的基础上,提出利用原图和镜像图构造出多个新的训练样本,将新生成的镜像样本与两类平滑中值样本作为新的训练样本集,输入CNN网络得到更新的权值,然后通过目的训练样本集训练CNN提取更多隐藏的人脸图像特征,最后使用SVM进一步特征提取后进行分类。