李仁旺,杨 柳,陈高曙,施 展
(1.浙江理工大学 机械与自动控制学院,浙江 杭州 310018;2.浙江理工大学 信息学院,浙江 杭州 310018;3.浙江中正智能科技有限公司,浙江 杭州 310061;4.浙江工业大学 计算机科学与技术学院,浙江 杭州 310023)
生物识别技术能够依据生理特征或行为特征对人的身份进行识别验证,包括面部识别、指纹识别、虹膜识别、声音识别和笔迹识别等。生物识别技术因其便捷、快速和准确等优势,已得到了广泛应用。在生物识别技术中,指纹识别凭借其成本低与技术成熟等优势,成为了最受欢迎的认证方式之一[1-3]。然而指纹识别容易受到伪造指纹的安全攻击,且对于传统的指纹识别系统,伪造指纹欺骗指纹识别系统并不困难[4-5]。常见的伪造指纹可以由各种材料制成,例如树脂、明胶和塑料等,在这些材料的基础上加入导电膏使之具备导电性,伪造指纹还可以获得更多欺骗指纹识别系统的特征,因此需要使用指纹活性检测技术来保护指纹识别系统。指纹活性检测可以分为基于硬件的方法和基于软件的方法。基于硬件的方法可以通过增加硬件传感器获取更多真实手指的信息,例如手指温度[6]、皮肤电导率[7]、气味[8]、出汗状况[9]和脉搏血氧饱和度[10]等,这些信息虽然能够更加准确地判断指纹活性,但是增加了额外的硬件设备,提高了系统的总成本,实际部署受限。基于软件的方法可以从获取的指纹图像中检测指纹的特征信息,通过算法判断指纹活性,不需要额外的硬件设备支持,同时随着算法的更新可以很容易地进行更新迭代,因此笔者采用基于软件的方法。基于软件的方法一般从指纹图像中提取手指的动态特征和静态特征,识别真假指纹在这些特征上的细微差距,从而辨别出真实指纹与伪造指纹。指纹的动态特征包括出汗和皮肤变形等,这些一般都是复制品所不具备的特征,因此被用于检测指纹活性。例如Marasco等[11]提出的一种指纹活性检测方法可从单独的指纹图像中提取指纹形态和出汗状况等多个特征,在测试结果中表现出很高的鲁棒性。Moon等[12]提出一种根据表面粗糙度进行检测的方法,通过真假指纹在表面粗糙度上存在的差异,使用小波分析来提取特征,从而检测指纹活性。Yuan等[13]首先通过多尺度构建特征向量,然后使用主成分分析降低特征向量的维数,最后使用支持向量机分类器进行模型训练,同样取得了较好的表现。Sharma等[14]通过分析真假指纹脊谷结构的微小细节,构建了一个13维的特征向量,使用支持向量机、随机森林和梯度增强树分类器的技术,在LivDet 2009竞赛的公开可用数据集上进行了测试,并取得了较好的表现。
指印是一种特殊的指纹,特指由手指蘸取油墨或印泥,在纸类介质上按压而成的指纹图像。指印一般在商业合同和法律文书中用作个人身份的证明,在社会生活中起着至关重要的作用。指印的研究与一般指纹的研究存在差异,由于指印的特殊性,通过指印无法获取手指温度、皮肤导电率等诸多真实手指的特征,因此众多基于硬件的方法都不适用。同时指印是通过手指按压介质产生的痕迹图像,与扫描仪直接获取的指纹图像有所不同,导致利用传统基于软件的指纹活性检测方法检测指印活性的表现不佳。传统的指纹活性检测方法采用的特征通常是由研究者在训练前就设计完成的,预设特征的方法可以简化运算,使得模型整体也更具可解释性。然而指印图像与指纹图像存在差异,为指纹图像预设的特征不完全适用于指印图像,且预设特征会使得图像所包含的有用信息未被完全使用,这些因素均会导致指纹活性方法在指印活性检测方面达不到预期效果。传统的指印检测往往采用专家人工识别的方法,应用范围受专家人数的限制,准确率也非常依赖于专业人员的熟练度[15]。近年来,越来越多新的技术被应用到指纹的活性检测中,其中深度神经网络展现出了优秀的性能,为指印活性检测提供了借鉴思路。例如Nogueira等[16]证实使用深度卷积神经网络进行指纹活性检测具有良好的准确性,并在2015年的指纹活性检测大赛上获得第1名。目前已经有许多基于深度卷积神经网络的指纹活性检测模型,例如LeNet-5[17],VGG[18]和GoogLeNet[19]等,且在准确率方面表现良好。传统深度神经网络模型虽然准确率高,但存在参数量大、内存占用高和模型复杂的问题,对设备的运算能力有较高的要求,在嵌入式设备等运算能力受限的场景中应用困难。因此,笔者构建了一种轻量级的神经网络模型,在传统神经网络模型的基础上取消了全连接层,用分通道的残差结构替代卷积层,大幅减少了模型的参数量。实验结果表明:笔者构建的神经网络模型在准确率上表现优于传统神经网络模型,同时模型参数量大幅度减少,方便移植到嵌入式设备中。
指印活性检测方法包含图像预处理和构建神经网络模型等步骤。首先,对采集到的原始图像进行数据增强,从少量的原始图像中获取大量的可用图像,增加数据集的数据量,从而提高模型训练的性能,同时也能起到防止过拟合的作用;然后,构建应用于嵌入式设备中的轻量级神经网络模型,对传统的神经网络模型进行改进,精简网络结构,降低网络复杂度,减少参数量,使其能够适用于运算能力受限的嵌入式设备场景;最后,将图像数据导入笔者构建的轻量级神经网络模型中,训练并得到最终的判别模型。
以600 dpi的分辨率对带有指印的纸张文件进行扫描,获得原始图像。在原始图像上,选取200×200的窗口大小,以10像素的步长进行上下左右滑动,通过滑动窗口的方式生成多张固定大小的指印图像。对进一步处理得到的指印图像进行旋转,分别按90°,180°,270° 3个角度旋转生成3张不同的图像,再对生成的图像进行翻转操作,增加可用的图像数量。
在采用滑动窗口的策略时,从单张原始图像中可获取的可用图像数计算式为
(1)
式中:N为生成的可用图像数;Oh,Ow分别为原始图像的像素高度和像素宽度;Eh,Ew分别为窗口的像素高度和像素宽度;Δh,Δw分别为滑动窗口在高度和宽度上的滑动步长。
笔者采集的原始图像大小为500×300,依据式(1)计算可得:采用滑动窗口策略后可用图像数为341,在此基础上对图像进行旋转和翻转操作,最终可用图像数为341×4×2=2 728,即通过单张原始图像可生成2 728张可用图像。通过这一系列数据增强的方法,在有限的原始图像基础上生成大量可用的图像,可以提高神经网络泛化能力,有效防止模型过拟合。
传统的卷积神经网络在处理二分类任务时,首先会对导入的图像进行一系列卷积池化操作;然后通过全连接层;最后在Softmax输出层得到2个数值,即判断真伪的概率。笔者对传统的卷积神经网络结构进行修改,取消全连接层,采用纯卷积的结构,大幅度减少了模型的参数量,精简了网络结构。
为了有效降低网络的复杂度,在深入分析各类网络结构、复杂度的基础上,采用由Gao等[20]提出的残差结构Res2Net,并对其进行改进,进一步降低网络的复杂度,减小网络规模。在该残差结构中,特征图像经过1×1的卷积层后通道数调整为64,按每16个通道分为1组的策略将特征图像分为4组,第1组的特征图像不作处理,其余组的特征图像分别经过3×3的卷积层以及1×1的卷积层,然后对其进行混合,最后全部通道的特征图像经过1×1的卷积层调整通道数后输出,残差结构如图1所示。
图1 分通道残差结构示意图Fig.1 The image of sub-channel residual structures
对残差结构的参数量进行分析,传统卷积层的参数量计算式为
Pnum=Kh×Kw×Cin×Cout+Cout
(2)
式中:Pnum为卷积层的总参数量;Kh为卷积核高度;Kw为卷积核宽度;Cin为卷积层输入的特征通道数;Cout为卷积层输出的特征通道数。
由式(2)可知:当卷积核大小不变、输入特征通道数与输出特征通道数相同时,卷积层的参数量会随着特征图像通道数的增加而平方增长,因此减少特征图像通道数可以有效减少参数量,对特征图像进行分组处理就是一个有效降低参数量的解决方案。
笔者提出的残差结构中,先采用1×1的卷积层将大的通道数转化为64个通道,然后进一步分为4组,每组只有16个通道,通过降低组内的通道数可大幅度降低整体的参数量。假定特征图像的输入通道数量为256,输出通道数同样为256,那么传统卷积层中的参数量为256×256×9+256=590 080,而如果采用笔者提供的分通道卷积残差结构代替卷积层,那么该残差结构所需的参数量为256×64×1+64+(16×16×9+16)×3+(16×16×1+16)×2+64×256×1+256=40 592,可以看到使用分通道卷积残差结构将明显降低整体参数量,仅为原有参数量的6.88%。
为提高残差结构的表达能力,在分通道卷积残差结构的基础上采用混合的策略,分组后第3组的特征图像会与通过卷积层后的第2组特征图像混合,同样第4组的特征图像会与通过卷积层后的第3组特征图像混合,这增加了各通道之间的信息传递能力,提高了残差结构整体的性能。对该残差结构进行分析,考虑到残差块在参数全置零时应当输出为零,以保证经过残差结构处理后特征图像不发生改变,而原残差结构在混合时采用直接连接,这使得参数全置零时第2,3组的输出不为零,影响残差结构的性能。笔者采用该残差结构的同时对其结构进行改进,采用1×1的卷积层取代原有的直接连接,这使得残差结构能够较好地实现不改变输入这一特性,同时添加的改进部分参数量极少,不影响整体参数量级,并且1×1的卷积层实现了数据的更多运算可能,从而使得残差结构具有更好的性能。
为避免过拟合,在卷积层后添加BN层与Leaky ReLU层,其中BN层可以减小训练数据分布的差异,而Leaky ReLU层与一般的ReLU层相比区别在于可以输出负值,保证了在任意输入情况下都存在输出,可以拥有更多的输出可能,同时还能避免使用传统ReLU层可能出现的神经元无法激活的问题。考虑到残差结构应当可以输出负值的残差,在最后输出的卷积层处调整了BN层与Leaky ReLU层的位置,将其置于卷积层之前,以增大残差结构最终输出值的值域范围,有助于提高残差结构的性能。
笔者采用的残差结构对输入通道数和输出通道数没有要求,同时结构也与神经网络其余部分无关,因此该残差结构可替换任意卷积层,在任意神经网络中都可以使用,起到降低参数量的作用。笔者构建的神经网络模型中用该残差结构代替了大部分的3×3卷积层,从而实现减少总参数量、构建轻量级神经网络模型的目标。
对卷积层与全连接层之间参数量的区别进行分析,卷积层由于采用卷积核实现了共享权重,其参数量与卷积核大小、输入输出通道数相关,而与特征图像的尺寸无关,因此其参数量与全连接层参数量相比更小。假定输入通道数为3,输出通道数为64,特征图像尺寸为32×32,则全连接层的参数量为3×30×30×64×30×30=155 520 000,而采用卷积层的参数量为64×64×9+64=36 928,可以看到全连接层的参数量远远大于卷积层所需的参数量,这会导致运算缓慢、过拟合以及对设备运算能力要求过高等问题。因此笔者构建的神经网络模型中取消了全连接层,采用了纯卷积的结构,降低了参数量,实现了网络结构的轻量化。
笔者构建的轻量级神经网络模型整体由Conv1~6层、Res层、Maxpool层和SoftMax层等组成(表1),整个网络说明如下:1) Conv1,Conv2均为卷积核大小为3×3的卷积层,其作用是向下采样,生成合适通道数的特征图;2) Conv3,Conv4,Conv5均为卷积核大小为1×1的卷积层,其作用是调整通道数量;3) Res层为笔者提出的分通道残差结构,在网络中多个残差结构叠加使用,确保网络具有足够的深度;4) Maxpool层为最大池化层,可将特征图的大小缩小一半,降低运算量;5) Conv6为卷积核大小为1×1的卷积层,其作用是调整通道数量,与Maxpool层搭配使用,从而取代全连接层,降低整体的参数量;6) SoftMax层将最终输出转换为概率;7) 所有卷积层均采用了BN层与Leaky ReLU层,用于防止梯度消失。
表1 神经网络完整结构Table 1 The complete structure of neural network
目前尚没有公开可用的指印数据集,为此笔者建立了一个指纹数据集用于实验分析,以验证笔者模型的有效性。笔者建立的数据集包含两个子数据集:无笔迹签名的指纹图像集和有笔迹签名的指纹图像集。无笔迹签名的指纹通过真实手指和伪造指纹膜蘸取印油或印泥后在不同材质的纸张上按压而成。有笔迹签名的指纹获取过程则在上述操作的基础上增加一个步骤,即使用不同类型的笔在纸张上指纹按压的部位签字,从而模拟现实生活中签字并按压指纹生成的纸张文件。所有原始图像均采用文档扫描仪扫描获取,扫描仪型号为爱普生Perfection V12,分辨率为600 dpi。在原始图像的基础上,选取200×200的窗口大小,以10像素的步长进行上下左右滑动,生成多张固定大小的指印图像。
指纹数据集中的图像分别来自真实手指与伪造指纹膜。伪造指纹膜的材料包括导电硅胶、硅色木胶、透明硅胶和白乳胶,部分采集到的指纹如图2所示,图2中上下两行分别为无签名指印和有签名指印,从左到右依次为真手指、导电硅胶、肤色硅胶、透明硅胶和白乳胶。训练集和测试集以4∶1的比例进行划分,具体数量如表2所示。为了保护指纹提供者的隐私,所有指纹仅用于算法研究。
图2 部分指纹示意图Fig.2 A partial fingermark image
表2 指纹数据集Table 2 Fingermark data set
本研究实验环境硬件配置:Intel core i7-7700HQ处理器,内存为16 GB,GPU型号NVIDIA GeForce GTX 1060,笔者算法实现基于版本号为1.1.0的Pytorch框架。采用批量为64个样本的随机梯度下降来训练模型,初始学习率设置为0.001,衰减指数为0.9。
在笔者模型中,设置多个评价指标,包含样本(真实指纹和伪造指纹)的正确分类率、模型的参数文件大小以及模型的计算量大小。其中:样本的正确分类率即识别准确率,在本研究中设定检测阈值为0.5,模型计算的概率结果大于阈值则视为分类为真实指纹,反之则视为分类为伪造指纹。
将训练数据集中的指印图像顺序打乱,重新随机排列后导入神经网络模型进行训练。每个指印图像都为其设置相应的标签:真实指印的标签设置为1,伪造指印的标签设置为0。通过训练后,神经网络模型可以依据输入的测试图像计算出识别概率,将计算的概率结果与预先设定的检测阈值相比较,即可对输入的测试图像进行分类。所有实验均采用这一流程进行。
首先,对笔者模型的性能进行评估,在无笔迹签名的指纹图像集测试样本和有笔迹签名的指纹图像集测试样本上分别进行测试,测试结果如表3所示。由表3可知:笔者模型在不同的子数据集上都取得了令人满意的识别准确率,说明笔者模型在准确率方面具有良好的性能表现。
表3 笔者模型在不同数据测试集上的识别准确率Table 3 The recognition accuracy of this model on different data test sets
然后,测试笔者模型在面对不同材质的伪造指纹攻击时的性能表现,结果如表4所示。由表4可知:在常见的几种不同材质伪造指纹攻击中,笔者模型都达到了良好的识别检测效果,说明笔者模型对常见的伪造指纹均具有很高的识别准确率,能有效抵御大部分的伪造指纹安全攻击。
表4 笔者模型在不同材质伪造指纹上的识别准确率Table 4 The accuracy of this model on different material fingerprint identification
最后,将笔者模型与传统神经网络模型的性能进行对比,选取AlexNet和Resnet34作为对比模型,分别从准确率、参数量和参数文件大小3个方面进行比较,测试结果如表5所示。由表5可知:笔者模型的识别准确率比AlexNet和Resnet34传统神经网络模型更高,同时笔者模型在参数量和参数文件大小方面明显有着更好的表现。结果表明:笔者模型改进了网络结构、缩小了整体的网络规模、大大减少了参数量、降低了运算量,能以较小的参数量达到较高的性能。
表5 笔者模型与其他模型的性能比较Table 5 The performance comparison between this model and other models
指印在司法鉴定中起着重要的作用,而伪造指纹攻击则会对其安全性造成巨大威胁,因此采用指印活性检测技术是一种重要的防御手段。目前,在指印活性检测上表现较好的深度神经网络存在参数量大和模型结构复杂等缺陷,对设备的运算能力要求高。为解决这一问题,笔者提出了一种指印活性检测方法。在传统卷积神经网络模型的基础上进行修改,取消了全连接层,加入了分通道的残差结构代替原有的卷积层,构建了一个可应用于嵌入式设备的轻量级神经网络模型。笔者建立了数据集,并在建立的数据集上进行了实验分析。实验结果表明:笔者模型的准确率高于其他模型,整体的准确率达到了96.22%,同时笔者模型在网络结构大小上表现更加优秀,能以较小的参数量达到较高的性能。未来,将进一步研究如何优化网络的结构以及提高模型的识别准确性。