文/袁颖
基于传统细节特征点指纹识别算法在指纹细节特征点有限时,误识别率FPIR和误比对率FMR往往不能达到预期要求,而且传统指纹基于特征点的指纹识别还面临大库衰减和比对速度减慢等问题。伴随近年来神经网络等算法的不断成熟,越来越多的研究者将指纹识别的重心转向对指纹图像中的纹理特征进行识别,基于神经网络的指纹识别是基于指纹图像纹理特征而非指纹中的细节点特征,研究显示基于神经网络的指纹识别可以高效处理海量指纹数据,解决识别计算量大识别速度慢的问题。
本研究对导入的指纹灰度图像进行二维小波变换,用spliteachlable将导入指纹的图像拆分,分为75%的训练集和25%的测试集,加载原始神经训练网络进行训练,通过使用Activitions来对目标图像进行卷积计算提取特征,使用小波特征提取函数Imfilter再次提取图像特征,将两个特征使用矩阵计算进行合并,用Fitcecoc函数合共以上特征参数和训练集标签参数,得到训练好的分类器Classfier;用之前的矩阵计算融合的图像特征训练新的神经网络,得到训练好的新神经网络;将待识别指纹输入用卷积函数和小波特征提取函数对指纹图像进行特征提取,用训练好的深度学习训练好的新神经网络和分类器对该特征进行匹配,最后输出结果。本研究不需要繁琐的预处理,运算效率较高,还可适用于质量较低的指纹图像。
图1:Gabor滤波向量
图2:指纹图像小波变换图
Gabor函数是有一个高斯函数和一个正弦平面波叠加形成,Gabor 滤波是位于边缘检测的线性滤波器,提取图像的Gabor特征,形成含有图像Gabor特征的方向向量,Gabor函数的表达式如下所示:
λ为正弦函数sinθ的波长,σ为高斯标准差,ψ为相位偏移,γ为x、y两个方向的纵横比。本算法利用Gabor滤波器将图像进行8个方向的滤波,如图1所示,图2是指纹图像小波变换图。
CNN算法通过多层的卷积神经网络提取更抽象的特征,每一层的神经元组织都和前一层以及后一层的神经元相连,输入的信息在通过层层神经元处理之后,构成更复杂的输入的深度学习的特征。具体来说,CNN是由输入层、卷积层和池化层、全连接层以及输出层构成,其中卷积层和池化层会有若干个,每一个卷积层都会和对应的池化层相连,之后再链接卷积层,这样交替叠加连接构成庞大的卷积池化层处理,浅层的卷积层收到来自输入层的信息,经过之后的局部加权求和,得到输入值如图3所示。
图3:CNN卷积网络结构
图4:系统架构图
图6:新神经网络训练流程图
CNN的卷积核对于二维图像而言可以是一个3*3或者5*5的矩阵。通过卷积层和相连接的池化层处理输入的不同特征,浅层卷积层提取例如纹线宽度、边缘形态等形象的特征也称为基础特征,深层卷积层提取图像中更为抽象的特征。神经元满足如下关系:
图5:分类器设计图
其中iMapN表示输入层输入图像特征面的大小,CWindow表示卷积核的大小,CInterval表示卷积核与前一层的滑动步长,池化层在卷积层之后,每一个池化层的输入特征面的神经元大小为DoMapN。
其中池化核的大小用DWindow表示,池化层通过对卷积层的处理减少神经元的数量。
特征面是CNN的一个重要参数,特征面的数量可以根据实际需求进行设置,本文使用金字塔架构,通过实验并观察所得训练模型的分类性能,最终确定特征面数量。采用指纹方向场提取指纹图像特征,浅层卷积层提取图像的边缘、轮廓特征,相当于轮廓检测器。
Matlab的小波纹理特征融合指纹识别系统架构分为深度学习模块和特征匹配模块两个部分如图4所示。
本系统的分类器主要是使用SVM极限向量机对导入的指纹图像进行二维小波变换,用spliteachlable将导入的指纹图像拆分为两个新的数据存储,分别为75%的训练集和25%的测试集,加载原始神经训练网络进行训练,通过使用Activitions对目标图像进行卷积计算提取特征,使用小波特征提取函数Imfilter再次提取的任意多维图像进行滤波,提取到一组指纹图像特征,将两个特征使用矩阵计算进行合并,用Fitcecoc函数合共以上特征参数和训练集标签参数,得到训练好的分类器Classfier,整个流程如图5所示。
将待识别指纹输入用卷积函数和小波特征提取函数对指纹图像进行特征提取,使用提取到的指纹图像特征对新神经网络进行训练,新神经网络在通过深度学习以后对输入的指纹图像特征进行匹配,过程如图6所示。
图像特征匹配的过程是在待识别的图像输入后,用前一阶段指纹特征深度学习过后训练出的新神经网络重复第一阶段的流程,对输入的指纹特征进行提取,分类识别结果输出。如图7所示。
图7:特征匹配流程图
实现平台:MATLAB(Matrix Laboratory)矩阵实验室,是由美国mathworks公司设计,为可视化交互程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中。
运行环境:CPU:PENTIUM4 以上,内存512以上,硬盘50G以上,操作环境:Microsoft Windows XP/ Microsoft Windows10/ Microsoft Server 2003;指纹输入设备:MBF200固态电容传感器
实验环境:本文利用Matlab MatConvnet 工具箱建立卷积神经网络,MatConvnet是基于Matlab设计的卷积神经网络工具箱,可以直接进行调用,它的优点是运算效率高实现简单,可以训练处高水平的深度网络,本文使用的训练数据是1000枚指纹照片。
建立MATLAB GUI界面,在界面中设置了选择图片、特征提取及混淆矩阵、训练和识别模块,选择图像之后,图片会和训练库中已经训练好的图像进行比对,最终匹配结果会显示与该指纹图片匹配的数据库指纹图片编号,如图8所示。
整个实验进行的过程中,新神经训练网络训练时间花费约6小时,通过图9可以看出,横坐标为迭代次数,纵坐标为精确度与loss值,当迭代到2000次的时候,开始逼近90%的精确度,同时loss已经低至0.2,随着迭代次数的增加,震动逐渐,减少趋近平稳,最后收敛于98.6%,而loss值收敛于0.0107。
图8:Matlab GUI界面
图9:对应训练图像 横坐标是迭代次数 纵坐标是精度
基于传统细节特征点的经典指纹识别算法在指纹细节特征点有限时,误识别率FPIR和误比对率FMR往往不能达到预期要求,面临大库衰减和比对速度减慢等问题,对指纹图像中的纹理特征进行识别,可以高效处理海量指纹数据,解决识别计算量大识别速度慢的问题,本研究通过MATLAB仿真实验研究,通过深度学习方法对指纹库进行训练,采用Matlab GUI友好界面对指纹库指纹进行识别,实验结果显示特征融合后的识别精度为99.95%,与传统基于细节特征的经典算法相比较,本识别的方式是解决目前传统基于特征点识别算法面临的大库衰减等问题,为解决可识别特征点少的残缺指纹的识别问题以及指纹自动识别中人工干预带来的误差等问题提供可能,应用前景广阔。