刘 霞,秦华锋
(重庆工商大学 a.智能制造服务国际科技合作基地;b.计算机科学与信息工程学院,重庆 400067)
生物特征识别是利用生物特征采集装置和计算机技术,基于人体本身固有的特征进行个人身份鉴别的技术,是目前最方便与最安全的个人身份鉴别手段[1]。目前的生物特征大体上可以分为两类:外部特征——例如指纹、人脸、掌纹、虹膜、语音、步态签名;内部特征——手部静脉血管。一些基于外部特征的生物识别系统如指纹识别系统和人脸识别系统是最成熟、应用最广泛的,但是它们作为体表特征,容易被复制和伪造。因此,在实际的应用中,用户的隐私性和安全性受到威胁。相反地,内部特征如手指静脉、手掌静脉、手背静脉,隐匿在人体表皮下面,在事先不知道用户的静脉特征情况下,很难复制,具有更好的隐私性和安全性能[2-3]。因此,基于内部特征的生物特征识别技术受到越来越多的关注。
在实际应用中,虽然内部手指静脉特征不易复制,但是存储在数据库中的注册模板存在着被盗的可能[4]。自然界的一些物质如炭和手指静脉中的血红蛋白都能吸收红外光,如果一旦获取到一个人的静脉纹路特征图像,就可以用这些物质绘制出静脉特征对系统进行攻击。所以,手指静脉识别技术仍然具有一定的挑战性任务。文献[5]已经表明:可以使用强烈吸收红外光的材料,如碳墨,从印刷或草图静脉图案创建假的静脉样本。另外,Idiap[6]团队也对手指静脉识别系统的防欺骗性方面进行了研究。研究人员将用户的手指静脉图像打印到纸张上,并使用打印的假手指静脉图像成功地攻击了手指静脉识别系统[4]。因此,一旦原始的注册模板被盗,那么整个手指静脉识别系统就有可能在攻击范围内暴露出来,从而会威胁到个人的安全和隐私。
为了解决上述问题,目前已有一些研究者提出多种假手指静脉图像鉴别算法,例如,文献[6]提出了基于二值化统计图像特征(BSIF)即通过使用自然图像的统计特性,得到一组不同大小与个数的滤波器用于提取图像特征,然后将其特征分别输入到SVM进行训练,再使用最小最大归一化方法与融合规则进行决策层的融合。文献[7]提出了基于频域和时域的快速傅里叶变换与小波变换,即首先分别使用FFT、Haar小波、Daubechies小波提取静脉特征并计算手指静脉图像检测分数,然后对其进行决策层的分数融合,最后把融合分数输入到SVM以验证图像真假。目前的算法子在鉴别假手指静脉图像方面表现出了良好的性能,但它们都是利用手工设计的描述子对静脉特征进行提取的,因此存在以下缺点:很难证明手工提取的特征一定与手指静脉图像的真伪鉴别是相关的;即使存在着鉴别图像真伪的特征,也很难建立有效的数学模型提取特征。鉴于此,本文首次将深度置信网络(Deep Belief Network,DBN)模型应用在假手指静脉图像的鉴别中。首先,为了扩大数据,本文将一幅手指静脉图像分成不同的小块,建立训练数据集合。然后,通过训练受限波尔兹曼机(Restricted Boltzmann Machines,RBM)并利用BP神经网络来进一步微调DBN模型。最后,将训练好的DBN模型用于真假手指静脉图像的鉴别。为了验证算法的性能,在试验中比较了目前的假手指静脉图像的鉴别算法,实验结果表明:基于DBN的假手指静脉鉴别方法能够有效地识别出假手指静脉图像。
DBN是由GEOFFREY E HINTON在2006年提出的一种多层的网络结构[8-10],是由若干个无监督的RBM和一个有监督的反向传播神经网络组成的深度学习网络模型。训练时可通过由低到高逐层训练RBM以提取数据特征[11],然后将最后一层RBM的输出作为BP神经网络的输入,使用BP神经网络将误差反向传播,微调整个DBN模型。DBN原理如图1所示。
图1 DBN原理图Fig.1 The schematic of DBN model
RBM由可见层和隐含层构成,是一类具有两层结构、对称连接且无自反馈的随机神经网络模型,层间全连接,层内无连接。如果一个RBM有n个可见单元和m个隐单元,用向量v和h分别表示可见单元和隐单元的状态,那么,对于一组给定的状态(v,h),RBM作为一个系统,其能量函数形式[11]可如下表示:
(1)
其中,θ=(W,a,b)是RBM的参数,vi表示第i个可见单元的状态,hj表示第j个隐单元的状态。基于该能量函数,可得到(v,h)的联合概率分布:
(2)
Z(θ)=∑v,he-E(v,h│θ)
(3)
其中,Z(θ)为归一化因子,为所有可见层与隐含层概率的和。
P(v,h│θ)对h的边缘分布为
(4)
RBM通过迭代的方式进行训练,其训练目的是求出参数θ=(W,a,b)的最优值θ*。参数θ可以通过最大化RBM在训练集上的对数似然函数学习得到,即:
(5)
其中,T为样本个数。但是通过随机梯度上升法计算式(5)的最大值不容易,故采用Gibbs采样与对比散度算法优化训练过程。
1.1.1 Gibbs采样
在计算最优参数θ*时,其关键步骤是计算logP(v(t)|θ)关于各个模型参数的偏导数:
(6)
其中,<·>P表示分布p的数学期望。但由于归一化因子Z(θ)的存在,P(v,h|θ)很难求得,因此只能通过一些采样方法如Gibbs采样获取其近似值[11]。
Gibbs采样过程为将可视向量值映射给隐单元,然后用隐层单元重建可视向量,接着再将可视向量值映射给隐单元,反复执行这种步骤,即:
(1) 产生[0,1]上的随机数rj;
(1) 产生[0,1]上的随机数ri;
1.1.2 对比散度(Contrastive Divergence,CD)算法
尽管利用吉布斯采样可以得到对数似然函数关于未知参数梯度的近似,但通常情况下需要使用较大的采样步数,这使得RBM的训练效率仍旧不高[11]。因此采用了Hinton提出的RBM的一个快速学习算法,即对比散度CD算法。与吉布斯采样不同,Hinton指出当使用训练数据初始化v0时,仅需要使用k(通常k=1)步吉布斯采样便可以得到足够好的近似[11]。CD算法的计算步骤如下:
Step1 对所有隐含层单元j,j=1,2…,n,计算:
(7)
对所有可见层单元i,i=1,2,…,m,计算:
(8)
(9)
其中,P(hj=1│v)表示在已知可见层状态v时采样出隐含层的第j个单元的状态hj等于1的概率,v表示可见层的输入状态,vi表示可见层第i个单元的状态,bj表示隐含层第j个单元的偏置,wij表示可见层第i个单元与隐含层第j个单元的连接权重。P(vi=1│h)表示在已知隐含层状态h时采样出可见层的第i个单元状态vi等于1的概率,hj表示隐含层第j个单元的状态,ai表示可见层第i个单元的偏置。
Step2 计算关于连接权重w、可见层偏置a、隐含层偏置b的梯度
(10)
(11)
Δb≈P(hj=1│v(0))-P(hj=1|v(k))
(12)
其中v(0)表示第一可见层即输入向量,v(k)表示第k可见层。
Step3 利用梯度上升法更新RBM参数
w(iter)=w(iter-1)+Δw(iter)
(13)
a(iter)=a(iter-1)+Δa(iter)
(14)
b(iter)=b(iter-1)+Δb(iter)
(15)
其中w(iter),a(iter),b(iter)分别表示当前迭代每小批量数据上的连接权重、可见层偏置和隐含层偏置。
因为RBM训练只能使该层网络的参数达到最优,而无法调整整个DBN的参数,因此利用BP神经网络微调整个DBN模型[12]。BP神经网络按有监督学习的方式进行训练,当一对学习模式提供给网络以后,其神经元的激活值将从输入层经中间层向输出层传播,在输出层的各神经元输出对应于输入模式的网络响应。然后,按最小化希望输出与实际输出误差的原则,从输出层经中间层最后回到输入层逐层修正连接权[13]。通过这种误差反向传播的方式,最后的结果即是DBN的最优参数。
基于深度置信网络对假手指静脉图像进行检测的算法流程是:首先,对图像进行分块处理后,建立训练集合,然后利用训练集训练DBN,并在DBN后面加上一个Softmax分类器作为输出层,以进一步微调DBN模型,再把每幅图像分块后所得训练结果进行均值融合,接着用验证集选择模型参数,最后用测试集验证模型的好坏。整体框架流程如图2所示。
图2 整体框架流程图Fig.2 The flow chart of overall framework
由于训练集合的样本数量太少,不利于特征的学习,故需要对其进行分块处理,以增大样本集,避免特征学得较少而导致的欠拟合[14]。在如图3所示的分块过程中,首先选择一个窗口,其行数与图像的行数相同,列数小于图像的列数。然后,使该窗口沿着列方向在图像上滑动,并截取窗口经过每一位置时的图像块。按照该方法,一幅图像可以产生若干图像块,并将该图像的真假标签作为对应若干子块的标签。
图3 图像分块Fig.3 Image block
首先随机地设置RBM的隐层单元数。其次,通过堆叠多个RBM构成一个DBN(如图4所示),其中,上一个RBM的隐层即为下一个RBM的显层,上一个RBM的输出即为下一个RBM的输入。然后把训练数据集分成不同的子集合,分批次输入到DBN中。当所有网络采用对比散度算法逐一训练后,得到更新的权重和偏置,通过反复迭代寻找权重和偏置的最优解。当精度满足要求时,停止迭代,从而完成本次深度置信网络模型的训练。
图4 DBN结构图Fig.4 The structure of DBN
首先,通过在DBN网络结构中增加一个softmax分类器构建一个神经网络NN。然后,利用DBN训练的权值初始化(NN),把带标签的训练图像输入到NN中进行训练。当网络进行一次前向传播后,计算梯度并进行反向传播以更新滤波器权值和偏移量。通过反复迭代寻找滤波器和偏移的最优解。NN结构如图5所示。
图5 NN结构图Fig.5 The structure of NN
当使用DBN和NN对手指静脉图像块进行训练后,把每幅图像所有块的训练结果进行决策层的均值融合,即累加每块图像预测分数,然后除以其块数,得到每幅图像的最终预测分数,其值为0~1。然后以0.5为阈值,预测值大于0.5的图像则作为真的静脉图像,否则为假静脉图像。
采用数据来自瑞士Idiap研究所的“Spoofing-Attack Finger Vein Database”[6],包括真假手指静脉,如图6所示。该数据库中真实获得的手指静脉图像来自110个人体产生的440幅图像,每人左右食指各采集两次。总的静脉图像为880幅,其中训练集中有240幅,验证集中240幅,测试集中400幅,每类样本集中真假图像各一半,每幅图像大小为150×565像素。训练集用来训练DBN模型与BP神经网络模型,验证集用于参数的选择,测试集用于检验模型的性能。根据第2.1节图像预处理方法,把原始训练集合中每幅图像分成36块,对于验证集合和测试集合的图像保持不变。故新的训练集合中共有8 640块图像,其中4 320块来自真的图像。验证集合中共有240幅图像,其中120幅真,120幅假。测试集合中共有400幅图像,其中200幅真,200幅假。
图6 真假手指静脉图像(左图为真,右图为假)Fig.6 True and false finger vein image (the left is true,the right is false)
采用认假率(False Acceptance Rate,FAR)、拒真率(False Reject Rate,FRR)、等误率(Equal Error Rate,EER)[15]、识别率以及每幅图像的平均运行时间来对假手指静脉图像检查算法进行评价。
(16)
(17)
其中,NF表示假静脉图像数量,NT表示真静脉图像数量,NFT表示假的静脉被误认作真静脉的数量,NTF表示真的静脉被误认作假静脉的数量。等误率是当认假率与拒真率相等的点。
根据文献[16]的研究表明:如果DBN的参数如层数、节点数、学习率不确定,将不能全方面地提取数据集的特征,从而影响分类准确性。同时也造成过拟合问题,并使算法运行速度变慢。为了使DBN选择合适的参数,本文在验证集合上进行了以下几组实验并对验证集做了误差比较。
3.3.1 层数的选择
为了检验隐藏层数对检测效果的影响,本文将其他参数固定,学习率为0.1,节点数为500,然后改变隐含层的层数。不同隐含层数DBN的检测误差如表1所示。由表1可知,当隐藏层数为1时,本文方法在验证集中具有最小检测误差。当层数增加时,其识别误率逐渐增加。因此,DBN的最佳隐含层数为1层。
表1 隐藏层数的选择Table 1 The choice of hidden layers
3.3.2 隐层节点数的选择
当确定了最佳隐含层数后,确定DBN隐含层节点数。首先DBN的隐含层数固定为1,学习率为0.1。然后选取神经元个数为100~5 000,实验结果如图7所示。
图7 隐层节点数的选择Fig.7 The choice of hidden nodes
由于隐含层神经元数过多,会造成过拟合问题,并使算法运行速度变慢[17],故选取验证集误差最小的最少神经元个数,即400作为最优隐层神经元数。
3.3.3 学习率的选择
经先前的研究[18]表明:如果学习速率较小,则学习速度比较慢;但学习速率较大,又有可能造成超过梯度下降的最低点,进而偏离最优值。因此,选择合适的学习速率对学习效果有一定的影响,学习速率的选取范围通常为0~1。为了选择合适的学习率,本文将隐含层数固定为1,隐层神经元数固定为400,在0~0.8以0.01为步长,得到不同学习率下的识别结果。图8展示了学习率对实验结果的影响。经实验发现,当学习率为0.1时,可以快速精准地对真假手指静脉图像进行识别。
图8 学习率的选择Fig.8 The choice of learning rate
为了测试DBN算法在假手指静脉图像的检测性能,还在相同的数据集、相同的流程上,分别利用SAE以及文献[4]提出的CNN方法进行了实验,并用识别率、等误率作为衡量指标对比分析。同时,比较了各种算法在4.2 GHz和16.0 GB的台式机下使用MATLAB 2012a对每幅静脉图像进行特征提取和图像识别的平均运行时间。表2展示了各种算法的检测效果。
表2 DBN与各种算法的比较Table 2 Comparison of DBN with other algorithms
实验结果表明:DBN在假手指静脉图像检测上的等误率达到1%,检测效果优于SAE和CNN算法。同时与文献[4]提出来的CNN方法相比,发现DBN算法的时间为2 ms,其运行速度明显快于CNN算法。
首次将DBN应用在手指静脉防伪检测模型上,通过逐层无监督的学习方法预训练深度网络的权值参数,解决了权值的初始化问题。通过三组实验,验证层数、隐含层节点数、学习率对检测结果的影响,并确定最佳DBN参数。最后,在测试集上对本文提出的DBN假手指检测模型进行了测试,实验结果表明,DBN的分类方法在在假手指检测中优于SAE和CNN算法,其等误率为1%,平均每幅图像的特征提取和匹配时间共为2 ms。