本发明涉及指纹识别领域,特别涉及一种基于全卷积神经网络的指纹汗孔提取方法。
背景技术:
因为指纹的独特性和永久性,指纹特征作为最常用的生物特征广泛应用到了个人身份识别当中;目前的自动指纹识别系统(afrs)一般采用指纹的细节点特征来进行指纹识别,尽管目前的指纹识别系统(afrs)有着较好的正确率,但是随着公众对于个人安全需求的不断提升,自动指纹识别系统(afrs)需要使用更多的指纹特征来提高其正确率,指纹的汗孔特征属于指纹的第三层次特征,和指纹的细节点特征一样被证明具有独特性和永久性;
指纹汗孔提取技术是使用指纹汗孔特征的关键一步,目前,一些传统方法可以进行指纹汗孔的提取,如高斯差分滤波法,动态各向异性提取法等;但是,由于汗孔的大小与形态多种多样,传统方法只能提取出一部分的汗孔特征,存在着正确率不高和鲁棒性不强等缺点。
技术实现要素:
为了克服现有汗孔提取技术中汗孔特征形态多样,检测结果不够准确等问题,本发明提出了一种基于全卷积神经网络的指纹汗孔的提取方法,通过全卷积神经网络来学习提取形态大小各异的汗孔特征,从而提高汗孔提取的正确率。
为了实现上述目的,本发明采用的技术方案为:
一种基于全卷积神经网络的指纹汗孔提取方法,包括如下步骤:
1)获取分辨率为1200dpi的高清指纹图像,对每幅指纹图像中的汗孔区域位置和脊线区域位置进行手工标注,得到与指纹图像对应的标注图片,并对标注好的指纹图像进行预处理和数据增广,构成全卷积神经网络模型训练所需的标注数据集;
2)构建全卷积神经网络模型,设定训练参数和损失函数,使用标注好的数据集训练全卷积神经网络的模型,得到训练好的全卷积神经网络模型;
3)通过训练好的全卷积神经网络模型预测测试指纹图片汗孔和脊线的初步区域概率;
4)利用汗孔的大小形状有一定的规律和汗孔只存在于脊线上的特性从初步的汗孔区域中筛选并去除伪汗孔区域,得到真正的汗孔区域及中心坐标。
进一步,所述步骤1)中,指纹图像增广过程中包括如下步骤:
(11)将指纹图像分别顺时针旋转90度,180度,270度得到新的指纹图片;
(12)将指纹图像裁剪为原图1/4大小的四张子图片,再将每张图片面积放大4倍扩充到原图大小;
(13)对指纹图像进行归一化操作,归一化操作形式如下:
其中i代表指纹图像,m和n代表指纹图像矩阵的行值和列值,min(i)和max(i)代表指纹图像矩阵中像素的最小值和最大值,i*代表归一化后的指纹图像。
再进一步,所述步骤2)体包括如下步骤:
(21)构建一个全卷积神经网络模型,整个全卷积神经网络的层包括五个部分;第一部分由两个卷积层和一个池化层组成,其中输入图片的大小为
240×320×1,每个卷积层经过64个大小为3×3的卷积核和relu激活函数处理,输出特征为236×316×64,池化层中将每2×2的像素合为一个像素并取其中的最大值,输出特征大小为118×158×64;
第二部分由两个卷积层和一个池化层组成,其中输入特征的大小为118×158×64,每个卷积层经过128个大小为3×3的卷积核和relu激活函数处理,输出特征为114×154×128,池化层中将每2×2的像素合为一个像素并取其中的最大值,输出特征大小为57×77×128;
第三部分由两个卷积层组成,其中输入特征的大小为57×77×128,每个卷积层经过256个大小为3×3的卷积核和relu激活函数处理,输出特征为53×73×256;
第四部分由一个上采样层和两个卷积层组成,其中输入特征的大小为53×73×256,上采样层使用128个大小为2×2的卷积核进行反卷积操作,输出特征为106×146×128,然后每个卷积层经过128个大小为3×3的卷积核和relu激活函数处理,输出特征大小为102×142×128;
第五部分由一个上采样层和三个卷积层组成,其中输入特征的大小为102×142×128,上采样层使用64个大小为2×2的卷积核进行反卷积操作,输出特征为204×284×64,然后前两个卷积层经过64个大小为3×3的卷积核和relu激活函数处理,最后一个卷积层经过3个大小为1×1的卷积核和relu激活函数处理,输出特征大小为200×280×3,输出的特征包括3类:分别为脊线类,汗孔类和背景类;
(22)确定全卷积神经网络的参数,将训练集中的图片以32张图片为一个批次载入全卷积神经网络模型进行训练,迭代次数为100次即可得到训练好的网络。
更进一步,所述步骤(22)中,计算各网络层的参数更新采用带有动量项的批量随机梯度下降算法mini-batch-sgd,其中动量项的值为0.2。
所述步骤(22)中,使用基于softmax的交叉熵损失函数;softmax交叉熵损失函数形式如下:
上式中,ak(x)代表在x点上第k类的输出值,
交叉熵损失函数形式如下:
其中w(x)代表模型的权重参数,l(x)代表x点的真实类别,pl(x)(x)代表x点该真实类别的概率,e代表交叉熵函数的损失值。
进一步,所述步骤3)包括如下步骤:
(31)为了配合训练好的全卷积神经网络的输入图片尺寸,设立一个指纹图片1/4大小的窗口对测试指纹图片进行滑窗提取操作,得到一系列子图片,将子图片经过放大后输入到训练好的全卷积神经网络中,输出汗孔像素概率图p和脊线像素概率图j,其中p中的每一个像素点的取值范围为0~1,代表了该像素点是否为汗孔的概率,j中的每一个像素点的取值范围为0~1,代表了该像素点是否为脊线的概率,提取脊线的目的在于用来去除伪汗孔;
(32)确定阈值thr=0.3来对汗孔像素概率图和脊线像素概率图进行二值化操作,形式如下:
其中m为二值化后的初步汗孔区域图,n为二值化后的脊线区域图。
所述步骤4)的过程如下:初步汗孔区域图还有一些伪汗孔区域,利用汗孔大小有一定限制的特性和汗孔只存在于脊线上的特性,需要去除初步汗孔区域图m中的大于30像素和小于3像素的汗孔区域,以及去除初步汗孔区域图m中不在初步脊线区域图n上的汗孔区域,得到最终汗孔区域以及每个汗孔的中心坐标,最后将每个子图片得到的汗孔中心坐标映射到原指纹图片中,得到待测指纹图的汗孔区域和中心坐标。
与现有技术相比,本发明的优点在于:通过全卷积神经网络提高了指纹汗孔检测的准确率,降低了汗孔检测的误识率,同时本发明具有良好的鲁棒性,可以在光照,湿度等条件不同的情况下准确的提取出指纹的汗孔特征。
附图说明
图1是本发明算法的流程图;
图2是本发明中全卷积神经网络结构图;
图3是本发明算法提取指纹汗孔效果图,其中a图表示原始指纹图片,b图表示经过全卷积神经网络预测后的脊线概率图,c图表示经过全卷积神经网络预测后的汗孔概率图,d图表示最终汗孔提取结果图。
具体实施方式
下面结合附图和实施方式对本发明作进一步说明:
参见图1~图3,一种基于全卷积神经网络的指纹汗孔提取方法,包括如下步骤:
1)获取高清指纹图像,并手工标注出汗孔和脊线,对标注好的指纹图像进行数据增广操作,构成全卷积神经网络模型训练所需的标注数据集;具体包括如下步骤:
(11)获取分辨率为1200dpi的高清指纹图像,并对每幅指纹图像中的汗孔区域位置和脊线区域位置进行手工标注;
(12)将将标注好的指纹图像分别顺时针旋转90度,180度,270度得到新的指纹图片;
(13)将指纹图像裁剪为原图1/4大小的四张子图片,再将每张图片面积放大4倍扩充到原图大小。
(14)对指纹图像进行归一化操作,归一化操作形式如下:
其中i代表指纹图像,m和n代表指纹图像矩阵的行值和列值,min(i)和max(i)代表指纹图像矩阵中像素的最小值和最大值。i*代表归一化后的指纹图像。
2)构建全卷积神经网络模型,设定初始参数和损失函数,使用标注好的数据集训练全卷积神经网络的模型,得到训练好的全卷积神经网络模型,具体包括如下步骤:
(21)参见图2,构建一个全卷积神经网络模型,整个全卷积神经网络的层包括五个部分;第一部分由两个卷积层和一个池化层组成,其中输入图片的大小为240×320×1,每个卷积层经过64个大小为3×3的卷积核和relu激活函数处理,输出特征为236×316×64,池化层中将每2×2的像素合为一个像素并取其中的最大值,输出特征大小为118×158×64;
第二部分由两个卷积层和一个池化层组成,其中输入特征的大小为118×158×64,每个卷积层经过128个大小为3×3的卷积核和relu激活函数处理,输出特征为114×154×128,池化层中将每2×2的像素合为一个像素并取其中的最大值,输出特征大小为57×77×128;
第三部分由两个卷积层组成,其中输入特征的大小为57×77×128,每个卷积层经过256个大小为3×3的卷积核和relu激活函数处理,输出特征为53×73×256;
第四部分由一个上采样层和两个卷积层组成,其中输入特征的大小为53×73×256,上采样层使用128个大小为2×2的卷积核进行反卷积操作,输出特征为106×146×128,然后每个卷积层经过128个大小为3×3的卷积核和relu激活函数处理,输出特征大小为102×142×128;
第五部分由一个上采样层和三个卷积层组成,其中输入特征的大小为102×142×128,上采样层使用64个大小为2×2的卷积核进行反卷积操作,输出特征为204×284×64,然后前两个卷积层经过64个大小为3×3的卷积核和relu激活函数处理,最后一个卷积层经过2个大小为1×1的卷积核和relu激活函数处理,输出特征大小为200×280×3;
(22)确定全卷积神经网络的参数,权重参数用高斯正态分布进行初始化,将训练集中的图片以32张图片为一个批次载入全卷积神经网络模型进行训练,迭代次数为100次,其中计算各网络层的参数更新采用带有动量项的批量随机梯度下降算法mini-batch-sgd,动量项的值为0.2;
(23)本发明使用基于softmax的交叉熵损失函数,softmax交叉熵损失函数形式如下:
上式中,ak(x)代表在x点上第k类的输出值,
交叉熵损失函数形式如下:
其中w(x)代表模型的权重参数,l(x)代表x点的真实类别,pl(x)(x)代表x点该真实类别的概率,e代表交叉熵函数的损失值。
3)通过训练好的全卷积神经网络模型预测测试指纹图片汗孔和脊线的初步区域概率;具体包括如下步骤:
(31)设立一个指纹图片1/4大小的窗口对测试指纹图片进行滑窗提取操作,得到一系列子图片,将子图片经过放大后输入到训练好的全卷积神经网络中,输出汗孔像素概率图p和脊线像素概率图j,其中p中的每一个像素点的取值范围为0~1,代表了该像素点是否为汗孔的概率,j中的每一个像素点的取值范围为0~1,代表了该像素点是否为脊线的概率;
(32)确定阈值thr=0.3来对汗孔像素概率图和脊线像素概率图进行二值化操作,形式如下:
其中m为二值化后的初步汗孔区域图,n为二值化后的初步脊线区域图。
4)利用汗孔的特性从初步的汗孔区域中去除伪汗孔区域,得到真正的汗孔区域及中心坐标;过程如下:去除初步汗孔区域图m中的大于30像素和小于3像素的汗孔区域,以及去除初步汗孔区域图m中在初步脊线区域图n上的汗孔区域,得到最终汗孔区域以及每个汗孔的中心坐标,最后将每个子图片得到的汗孔中心坐标映射到原指纹图片中,得到待测指纹图的汗孔区域和中心坐标。