江 璐, 赵 彤, 吴 敏
(1 中国科学院大学计算机与控制学院, 北京 101408; 2 中国科学院大学数学科学学院, 北京 100049;3 中国科学院大数据挖掘与知识管理重点实验室, 北京 100049)(2016年3月16日收稿; 2016年4月12日收修改稿)
在当代社会,指纹识别技术已广泛应用于金融、 保险、网络、公共安全等各个领域.自动指纹识别系统(automatic fingerprint identification system, AFIS)利用指纹的唯一性、普遍性、便捷性和终身不变性等特点对个人身份进行识别.各类AFIS在进行指纹识别时,待认证的指纹通常需要与数据库中大量的模板指纹进行比对(通常是1∶N的比对).为减少比对次数较多带来的巨大耗时,AFIS往往会根据指纹纹型进行指纹的快速筛选,即,待认证的指纹只需与同一纹型的模板指纹进行比对即可.随着生物特征识别应用的普及,各类指纹数据库规模迅速增长,许多数据库已突破千万人级别,在海量数据库中进行指纹的快速索引显得尤为重要,指纹纹型分类的算法直接影响到索引的可靠性.然而随着数据库的增大,同类纹型的差异逐渐变大、而不同纹型之间的界限变得模糊,使得该问题难度进一步增大.特别是对于残缺指纹和存在大量噪声的指纹,对它们的纹型进行判断更为困难.因此,指纹纹型分类问题一直是该领域专家学者关注的热点和难点.
Henry指纹分类体系[1]将指纹图像按照其拓扑结构分成5种类型,即弓(arch),帐弓(tented arch),左旋(left loop),右旋(right loop)和斗(whorl).根据统计,这5种指纹类型的自然分布比例分别为3.7%,2.9%,33.8%,31.7%和27.9%[2].由于弓和帐弓2类指纹所占比例非常低,在实际的AFIS中,通常将二者合为一类,即将指纹纹型分为弓,左旋,右旋和斗4类,如图1所示.
图1 4种常见的指纹类型Fig.1 Four common patterns of fingerptints
·斗型指纹有多条脊线具有在其中心旋转至少360°的路径.完整的斗型指纹通常包含2个三角点,1个或2个中心点.
·弓型指纹由弓形线组成,它的脊线从指纹的一端流入,在中间拱起一定的高度,并从相反的一端流出.完整的弓形指纹可能有一个(帐弓)或没有(平弓)中心点和位于其下方的三角点.
·左旋型指纹有多条脊线从左侧流入,在中心转弯后并从同一侧流出.完整的左旋指纹包含1个中心点和位于中心点右下方的三角点.
·右旋型指纹则有多条脊线从右侧流入,在中心转弯后并从同一侧流出.完整的指纹包含1个中心点和位于中心点左下方的三角点.
目前,国内外己有的指纹纹型分类算法基本上都是基于以下某一种或多种特征的:脊线流[3-4]、方向场[4-5]、奇异点[4,6]和Gabor滤波响应[3,7-8].在这些算法中,需要首先对相应的特征进行提取,然后再根据这些特征进行纹型判断.然而,这样做只利用了指纹图像中少量人工定义的特征信息,而大量的信息被丢弃.并且,纹型分类的准确率将直接受相应特征提取准确度的制约.不幸的是,相应特征的准确性很难被保证,特别是对于有噪声的低质量指纹和未完全采集的残缺指纹,相应特征的提取会受到很大的影响.这将直接导致纹型的错误分类,进一步影响整个指纹识别系统的性能.因此,若能够解除纹型分类问题与其他特征提取步骤的精合,将极大程度上提升该问题的稳定性.
近年来,随着深度学习浪潮的兴起,卷积神经网络发挥了它的潜力,在图像、语音、自然语言理解等领域都得到了很好的应用.由于网络本身具有特征提取、正则化以及一定程度的平移旋转不变性的能力[9],加上深层的结构能对特征进行更有效的表达,若经过适当的设计,将可以自动地进行特征提取,而不必依赖人为定义的特征.目前,它已成功应用于于写数字识别(MNIST)[10]、字符识别[11]、人脸识别[12]、行为检测[13]等多个问题中.
在最近几年,卷积神经网络也正在逐渐迈进指纹识别领域.Frassetto等[14]将其应用于指纹活体检测问题中,作为一种特征自动提取工具来辅助判断指纹的真伪;Cao和Jain[15]利用它的抗噪能力将其应用于现场指纹的方向场提取问题中,取得了很好的效果.这说明卷积神经网络在指纹识别领域的潜力巨大,需要进一步挖掘.但是,由于指纹模式变化多端,同类纹型类内方差很大,不同纹型的界限却较为模糊,并且训练数据的获取难度较大,因而目前未查到深度神经元网络在指纹纹型分类问题中应用的文献.
我们提出一种基于卷积神经网络的指纹纹型分类算法,充分利用卷积神经网络的自动特征提取的能力,从大量数据中的学习得到纹型的特征,因而可以直接在指纹原图上进行纹型识别,成功地解除了该问题与其他特征提取问题的精合.并且采取一系列数据扩充技术,有效地克服了训练数据不足的困难,提升了纹型识别的准确性.在本文中,我们首先对提出算法的流程进行介绍,并针对该问题准备训练数据和设计网络;接着,网络参数根据训练数据进行调整,使它能够提取出具有区分力的特征;训练好的特征将用于对新的指纹纹型进行预测.另外,为提高算法的准确性,我们采用多模型平均策略,训练出多尺度的网络.并且,为了使网络能够对残缺指纹进行适应,我们对输入数据进行切割处理,提升网络的鲁棒性.最后,通过实验证明算法可以获得很好的效果.算法充分挖掘指纹图像中的信息,不再需要任何人工定义的特征提取步骤,极大地简化了指纹纹型分类算法的复杂度.
指纹纹型是一种可以被人眼轻易识别的空间模式.然而,使用计算机进行自动分类并不是一件容易的工作,特别是对低质量或残缺的指纹图像的纹型进行分类.由于图像灰度、噪声、脊线宽度和采集条件千差万别,导致人为定义的预处理和特征不能有效地适应这些变化.卷积神经网络,作为在图像识别领域应用最成功的深度学习模型之一,可以自动地从大量数据中学习得到具有判别力的模式特征.当使用大量数据进行训练时,它可以达到接近(甚至超过)人眼识别的结果.因此,我们将它应用于指纹纹型分类问题中,通过调整网络结构来适应该问题,并取得了很好的效果.
算法整体流程如图2所示.首先,使用有纹型信息标签的指纹图像生成训练数据,并根据训练数据设计卷积神经网络(convolutional neural networks, CNN).接着,训练数据被用来训练CNN.最后,待预 测指纹图像按照训练数据的生成方法生成预测数据, 并将预测数据输入到训练完成的CNN 中.根据网络的 输出进行判断,得到纹型的预测结果.
训练数据来源是NIST Special Database 4 (NIST DB4)[16]的F库(512像素×512像素,500 ppi) 和中国公安部前科人员十指指纹数据库(640像素×640像素,500 ppi).NIST DB4F库是国际公开的用于指纹测试的数据库,其中包含2 000张指纹图像,其中斗、左旋、右旋、弓和帐弓各400张.由于我们认为弓和帐弓是一类,所以相当于弓类型的指纹有800张.但是,为了训练具有更强分类能力的CNN,需要更大的数据量来使网络适应各种各样的指纹模式.因而我们又从公安部前科人员十指指纹数据库中随机选取4种类型的图像,使得每一类指纹数量扩充到4 000张(共16 000张).为消除2种数据来源尺寸上的差异,我们在确保指纹在图像中心的前提下统一将图像裁剪成为512像素×512像素,作为原始的训练数据.
图2 算法整体流程图Fig.2 Flow chart of the overall algorithm
由于指纹纹型不会随分辨率的改变而变化,为使网络适合不同的分辨率,提高算法鲁棒性,对原始数据进行不同倍数的下采样.在实验中,分别采用2倍和3倍的下采样,得到256像素×256像素和171像素×171像素的图像.
另外,为了克服训练数据不足,同时防止过拟合现象产生,对数据量进行进一步扩充.对下采样后的数据进行切割,分别选左上、左下、右上、右下和中间区域作为训练数据,切割后的尺寸分别是224像素×224像素和148像素×148像素(见图3).此时,数据量已扩充到原来的5倍,整个训练集数据量为80 000张(每类20 000张).另选出验证集,数据量为8 000张(每类2 000张).
为了提取更具判别能力的特征,我们设计了多个尺度的卷积神经网络.即用2种维度(224像素×224像素和148像素×148像素)的训练数据分别构建卷积网络,称为Net148和Net224.2个网络均包括一系列卷积层(convolution layer)、池化层(pooling layer)、若干个全连接层(inner product layer)以及一个分类器层(classifier layer).网络结构和参数如图4所示.其中,Conv(1,2,3)卷积层,数字为卷积核大小,s为表示卷积的步长.所用的激活函数为ReLu函数.Pool表示池化层,数字为池化核大小,s为池化的步长.
图3 训练数据准备Fig.3 Training data preparation
IP(1,2)表示第1、2个全连接层.分类器层未在图上展示出.
图4 网络结构示意图Fig.4 Diagram of the networks architecture
卷积层对输入进行卷积操作.卷积核是一个行和列维数相等的矩阵,它的参数通过学习得到.这些卷积核在网络中扮演滤波器的作用.所有的卷积核一起作用来提取输入图像的特征.因此,每一层输出就是对该层输入的更为抽象的表示.每一个卷积层均使用整流线性单元(rectified linear units,ReLus)作为激活函数.相比于饱和激活函数(例如sigmoid或tanh),它具有更快的收敛速度,并能得到更低的训练误差[17].
紧接着卷积层的是池化层.池化层是用一个特殊的值表示一个相邻区域的操作,通常选择的特殊值是该区域的平均值或最大值(分别对应平均池化和最大池化).池化本身可以在很大程度上降低特征维度,减少网络计算量,防止过拟合,并能提供一定程度的平移和旋转不变性.这里使用的是有重叠的最大池化.由于该过程是固定的,因此可以选择出更具代表性的特征[18].
我们设计了3个卷积层和池化层来进行特征提取和选择.随后,这些特征被转化为一个一维的特征向量,并输入到几个全连接层.通过一个softmax分类器,可以得到该图像属于每一类的概率.概率最大的类即是该图像最可能属于的类别.
整个网络的参数使用误差反向传播算法(back propagation, BP) 通过最小化分类误差来优化.
完成网络优化后,2个网络被用于预测.对待预测 的指纹图像,同样需要对其进行下采样来保证它的分 辨率与训练数据相同,并需按照训练数据的尺寸对其 进行切割.为提高分类的准确性,每一张指纹图像 将被切割成10张输入图像(148像素×148像素和224像素×224像素各5 张,分别对应左上、左下、右上、右下和中心位置).由于卷积神经网络模型复杂度较高,因而倾向于是一个高方差低偏差的模型[19].通过多尺度模型平均作用可以消除其高方差的特点,从而提高准确率.这10张输入图像被分别输入相应的网络中,输出其属于每一类的概率值.最后,对这些概率值取 平均,选出概率最大的类别作为该指纹的分类.
为验证算法的有效性,我们进行了一系列实验.实验在一个具有Intel Core i7-960 3.2 GHz的处理器、32 G内存和NVIDIA GeForce GTX 970显卡的工作站上进行.使用深度学习框架Caffe[20]对网络进行构建和优化.Net148和Net224的网络结构如图4所示.网络使用随机梯度下降法对网络参数进行优化,通过数小时的训练,2个网络在验证集上的准确率分别达到92.9%和93.3%.
我们在NIST DB4的S库(2 000张,500 ppi)对该算法准确率进行测试,测试结果如表1所示.从表中可以看出,模型平均后的准确率优于每个网络单独作用的准确率.这一方面是因为对指纹图像进行不同倍数的下采样,可以更好地提取出不同分辨率下的特征. 另一方面是因为多模型平均可以很好地减小预测的方差,从而提升准确率.
表1 网络在NIST DB4 S库上测试的准确率Table 1 Test accuracy on NIST DB4 S database
为了对算法进行进一步分析,我们对每一类的分类 情况进行统计,如表2 所示,斗类型的指纹分类准 确率较高,而弓与左旋、右旋分错的次数相对较多. 事实上,在指纹图像中左旋、右旋和弓确实在空间 模式上相似度较高.另外,有一些指纹图像的质量较 低,这也很可能导致分类的错误.
表2 在NIST DB4 S库上每一类别的测试结果
为验证算法的准确性,我们在NIST DB4指纹数据库上对纹型分类的准确率进行测试,与优秀的经典纹型分类算法进行对比,结果如表3所示.其中测试集一栏,S表示测试集是NIST DB4 S库,而Whole表示整个数据库.使用特征一栏,S表示奇异点,G表示Gabor滤波响应,R表示脊线流,O表示方向场.
可以看出我们的算法超过了大多数经典的算法.尽管在该数据库上的准确率略低于文献[23],但文献[23]算法需要同时对方向场、奇异点和Gabor滤波响应3种特征进行提取,因此算法的健壮性不强,较容易受到噪声的干扰.而我们的算法是唯一不依赖任何预处理和特征提取算法的,并且是从大量指纹数据中学习得到的特征,因而可以适应更多样的数据,并获得很高的准确率.
表3 与其他指纹纹型分类算法在NIST DB4数据集上四分类准确率对比Table 3 Comparison of four-class classification resultson NIST DB4 S database with other algorithms
另外,我们对实验结果与训练数据量的关系进行探索,图5展示不同训练数据量时在训练过程中Net224网络在验证集上的准确率与迭代次数的关系.随着迭代次数的增加,不同训练数据量下验证集上的准确率均是先上升,最后趋于稳定.但可以看出在2万训练数据时验证集上的准确率稳定在87.7%,4万训练数据时准确率稳定在90.2%,而在8万训练数据时准确率可达到93.3%.可以预见,如果能够进一步扩大训练数据量,网络的分类性能可以得到更大的提升.
图5 不同训练数据量时验证集准确率随迭代次数变化的关系Fig.5 Accuracy of validation set versus iteration number with different amounts of training data
本文提出一种基于卷积神经网络的指纹自动分类算法.首先,针对该问题设计训练数据和网络结构;接着,网络从大量数据中学习得到可以区分指纹纹型的特征;最后,使用该网络对新的指纹纹型进行预测.在NIST DB4 S库数据集上进行测试,并与前人工作进行对比,结果证明了算法的准确性和有效性.同时,也对实验结果进行分析,找出进一步提高分类性能的方法.
算法利用卷积神经网络的特征表示能力,通过对网络和训练数据的有效地设计,在不进行图像预处理和其他特征提取的情况下直接从指纹原图中提取纹型的特征,从而对其进行有效的识别,获得很高的准确率.本算法成功地解除了指纹分类问题对预处理和特征的依赖,极大地降低了指纹分类问题的复杂度,提升了分类的准确性.