一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于深度学习的现场指纹特征点提取方法

2022-05-26 19:40:20 来源:中国专利 TAG:


1.本发明属于计算机视觉领域,涉及深度学习方法。


背景技术:

2.指纹是人体生物特征之一,因其唯一性、易获取和低成本而被广泛使用,在我国法庭科学中有着广泛的应用。随着指纹数据库容量的不断扩大,应用计算机技术对指纹实现快速的自动比对识别成为趋势。我国从20世纪80年代初开始指纹自动识别系统的研发工作,至20世纪90年代逐步走向成熟,21世纪初在公安机关得到了广泛的应用。
3.传统的指纹识别算法以指纹细节特征点的提取和匹配作为算法的主要工作目标和性能评判标准。进入21世纪,随着指纹库容量的不断扩大,因现场指纹图像质量问题造成特征点提取或标注不准确,使得后续指纹匹配识别准确率无法持续提高,基于传统方法提取特征点的指纹识别技术遇到瓶颈。与此同时以深度学习技术为代表的人工智能技术开始在指纹识别领域崭露头角。
4.深度学习技术是通过建立具有多层结构的人工神经网络,实现了模拟人类对图像中所包含内容进行识别分辨的初级人工智能。基于深度学习的基础理论,衍生出了大量结构各异的深度神经网络,如卷积神经网络、循环神经网络等,在很多应用领域均取得了良好的效果。在指纹领域,借助深度神经网络对高分辨率图像特征学习和提取的优势,本发明将深度学习技术应用于对指纹图像的细节点特征提取。


技术实现要素:

5.本发明提出一种基于深度学习的现场指纹特征点提取方法,充分发挥神经网络在图像特征学习和提取的优势,以及对大量数据的学习适应能力。由于科技发展,指纹库容量不断扩大,以及现场指纹质量的参差不齐,都加大了指纹专家标注指纹细节点的人工成本。
6.本发明要解决的问题就是:利用神经网络对现场指纹图像进行特征点提取,适应现场指纹数据,提高提取效率,减小人工成本。
7.具体技术方案如下:
8.第一步,指纹数据集准备;第二步,训练一组小波框架基;第三步,制作神经网络训练集;第四步,使用第二步训练出的框架基,对第一步中的现场指纹图像进行滤波;第五步,构建网络;第六步,网络训练,将第四步中滤波得到的图像和对应标注信息输入到第五步构建的网络中,通过设计的损失函数进行反向传播,对神经网络参数进行优化,得到最终优化模型;第七步,网络实测使用。
9.所述方法包括以下步骤:
10.步骤1,指纹数据集准备,包括每个人两张原始指纹图像,和对应两张增强图像,其中原始指纹图像包括一张现场指纹图像和一张对应捺印指纹图像;
11.步骤2,训练小波框架基。将现场指纹图片作为输入,采用bregman算法迭代求解如下带约束的最优化问题,使得经过滤波后的图片尽可能的稀疏,达到预处理的目标。
[0012][0013][0014][0015]
该最优化问题应用在二维图像领域,即d=2,表示滤波器维数,每个滤波器都是一个矩阵;其中zd表示一个d维整数域空间,n∈zd,n表示大小为d
×
d的对角矩阵,对角线元素是从zd中取的d个整数;xj是原始指纹图像,一共有n张图像;ai是滤波器,一共有m个;是使用滤波器ai对原始指纹图像进行滤波变换;φ(v
i,j
)是衡量滤波得到图像v
i,j
的稀疏性价值函数,通常采用l1或l2范数,本发明使用l1范数,即对滤波得到图像的像素值求和;m是采样矩阵,通常取或本发明中m取ai(mn k)表示取滤波器ai索引为mn k的值;|det(m)|-1
表示采样矩阵m的行列式的倒数;当时δk=1,否则δk=0。
[0016]
步骤3,神经网络训练集的制作,是对步骤1的现场指纹图像进行细节点标注。由于指纹标注需要专业的指纹专家进行,并且也没有公开的标注指纹数据集,所以本实验提出了一种方法,选取步骤1的现场指纹图像,对其增强图像进行二值化、细化操作,由于端点的八邻域内只有一个指纹点,分叉点的八邻域内只有三个指纹点,并且互不相连,所以通过这种特殊空间特征,找到现场指纹图像的所有指纹细节点位置,指纹细节点包括指纹端点和指纹分叉点,得到训练集。
[0017]
步骤4,对现场指纹图像进行滤波。使用步骤2计算得到的小波框架基,对步骤3中标注的现场指纹图像进行滤波,过滤掉噪声等干扰因素,加快步骤5构建的神经网络训练。
[0018]
步骤5,网络构建。本发明神经网络是对faster r-cnn网络进行改进,以适应指纹特征点检测。如图6,神经网络结构分三个部分,第一部分是前置卷积网络层,输入为步骤4得到的滤波图像,用于提取滤波图像的特征图;第二部分是region proposal networks层,输入为第一部分输出的特征图,用于逐像素的将特征图上的每个像素点映射到滤波图像上的一点,并在滤波图像上自动生成以该点为中心的预设候选框,输出每一个候选框包含细节点的预测概率以及候选框中心点相对于可能包含的细节点位置的预测偏移量;第三部分依次是roi pooling层和三层全连接层,输入为第一部分得到的特征图和第二部分得到的初步预测细节点信息,输出为每一个候选框最后的预测概率和位置偏移量。
[0019]
步骤6,网络训练。网络训练输入为步骤3的标注信息和步骤4对应的滤波图像。分阶段训练,第一训练阶段为:首先读取imagenet预训练模型,加载进前置卷积神经网络,整体训练第一部分和第二部分region proposal networks网络。
[0020]
第二训练阶段为:固定第一阶段训练出的region proposal networks网络参数,重新加载前置卷积神经网络预训练模型,根据第一阶段训练出的region proposal networks层网络参数,输出初步预测概率和位置回归信息,对滤波图像上的候选框进行修改,将修改后的候选框映射到特征图上,训练第一部分和第三部分网络,输出最终预测概率和位置回归偏移量,使其结果更加准确。
[0021]
第一训练阶段的损失函数由二分类损失函数和smoothl1损失两部分组成,其中,二分类损失函数为:
[0022][0023]
其中t为候选框数量,i为候选框索引。pi为第二部分网络输出的第i个候选框包含细节点的预测概率,为表示第i个候选框是否包含细节点的真实类别,细节点包括端点和分叉点,值为1表示包含细节点,0表示不包含细节点,具体通过步骤3的标记信息获得。
[0024]
smoothl1损失为
[0025][0026]
其中,xi是由第二部分网络输出求得的第i个候选框包括的预测细节点位置坐标,由第二部分网络输出的第i个候选框的细节点预测位置偏移量与求和得到,为该候选框包含的真实细节点坐标;
[0027]
整体损失函数如下:
[0028][0029]
l是网络整体损失;l
cls
是对特征图每一点的二值交叉熵损失;l
loc,i
是对每一个候选框预测细节点位置损失,乘以是表示只有当该候选框预测为包含细节点后,位置损失才有效。λ是控制位置损失的重要性,取值范围为[0.2,1]。
[0030]
第二训练阶段的损失函数具体为:
[0031][0032]
其中,
[0033][0034]
为第三部分网络输出的第i个候选框包含细节点的预测概率,是由第三部分网络输出求得的第i个候选框包括的预测细节点位置坐标,由第三部分网络输出的第i个候选框的细节点预测位置偏移量与求和得到。
[0035]
步骤7,网络实测使用,将待分析的现场指纹图片经过小波框架基滤波后输入训练完成的神经网络,先通过第一部分网络得到特征图,将特征图输入第二部分网络得到初步预测信息,最后将特征图和初步预测信息输入第三部分网络,得到最终预测的特征点。
[0036]
有益效果
[0037]
与传统方法相比,本发明应用目标检测中神经网络结构对指纹细节点特征进行提取,增加了方法对数据的适应性,极大降低了指纹专家的人工成本,并且结合了小波框架基
方法,降低了神经网络训练的时间。
附图说明
[0038]
图1是本发明方法的完整流程图;
[0039]
图2是本发明制作神经网络训练集方法的流程图;
[0040]
图3是细化后分叉点的空间结构图;
[0041]
图4是细化后端点的空间结构图;
[0042]
图5是细化指纹图像和标注细节点图像;
[0043]
图6是本发明神经网络结构图;
[0044]
图7a是选取质量较好的现场指纹图像;
[0045]
图7b是现场指纹图像的滤波图像。
[0046]
具体实现方式
[0047]
本发明使用到的实验环境如下所述,采用gpu为gtx 3080(10g)用于神经网络的加速训练;win10平台,matlab r2020,python版本3.8,pytorch版本1.8.0等。
[0048]
具体实验步骤细节如下:
[0049]
步骤1,指纹数据集准备;
[0050]
包括每个人两张原始指纹图像,和对应两张增强图像,其中原始指纹图像包括一张现场指纹图像和一张对应捺印指纹图像;
[0051]
步骤2,训练小波框架基;
[0052]
本发明选取的是训练一组小波框架基对指纹进行滤波,使得指纹图像稀疏化,剔除一部分噪音。并且只使用一部分指纹图像进行训练,得到一组自适应的小波框架基,来对所有数据滤波加快提取速度。求解如下带约束最优化问题:
[0053][0054]
该最优化问题应用在二维图像领域,即d=2,表示滤波器维数,每个滤波器都是一个矩阵;其中zd表示一个d维整数域空间,n∈zd,n表示大小为d
×
d的对角矩阵,对角线元素是从zd中取的d个整数;xj是原始指纹图像,一共有n张图像;ai是滤波器,一共有m个;是使用滤波器ai对原始指纹图像进行滤波变换;φ(v
i,j
)是衡量滤波得到图像v
i,j
的稀疏性价值函数,通常采用l1或l2范数,本发明使用l1范数,即对滤波得到图像的像素值求和;m是采样矩阵,通常取或本发明中m取ai(mn k)表示取滤波器ai索引为mn k的值;|det(m)|-1
表示采样矩阵m的行列式的倒数;当时δk=1,否则δk=0,这一变量表示该小波框架基中每两不同的滤波器是正交的,且每个滤波器都经过标准化,目标是求解m个滤波器ai。
[0055]
为方便理解该公式中各个变量的含义,举例如下:
[0056]
当时,那么a1(mn k)就是滤波器a1的第一行第三列的值,为0。
[0057]
将符号简化,问题变为:
[0058][0059]
q为约束条件
[0060]
wa为小波框架基,即m个滤波器ai;x是训练指纹图像集,d是x在wa下的系数,即使用wa对x得到的滤波图像。本发明采用bregman迭代算法,求解上述约束方程。
[0061]
为了方便理解,先简单介绍一下bregman迭代算法的应用背景和求解方法。
[0062]
bregman迭代算法是osher等人在研究全变分图像去噪时提出的一种新型迭代正则化算法,该方法思想是用图像的全变分的bregman距离代替全变分求解原始图像,随后被拓展到基于小波的图像去噪、压缩感知(compressed sensing,cs)重构稀疏信号中,并且取得了很好的效果,如今,bregman算法成为了求解l1范数相关最优化问题的最有效方法之一。一般求解问题形式如下:
[0063][0064]
其中u为希望得到的目标图像,j(u)是对u的一个得分判定,一般目标是使得u在满足条件下更加稀疏;f是原始图像,a是重构基,约束条件是u在基a上的系数组合,可以完美还原原图像f。但是这种约束条件太严格了,求解基a难度太大,所以可以将约束项也加入优化目标中,得到问题:
[0065][0066]
参数μ用来衡量通过基a重构后数据的稀疏性。抽象问题,一般将后半部分记为h(u),即我们给出一般的最值问题形式
[0067][0068]
bregman算法主要定义了次梯度和bregman距离,并且证明了使用bregman距离取代j(u)进行迭代效果同样满足公式(5)的求解。
[0069]
次梯度定义:假设函数j:x

r是映射到实数域空间的凸函数,并且变量u∈x,则一个变量p∈x
*
被称为函数j在点u处的一个次梯度,如果满足
[0070][0071]
bregman距离定义:假设函数j:x

r是映射到实数域空间的凸函数,u,v∈x并且则在点u和v之间的bregman距离为
[0072][0073]
那么求解问题(5)的bregman迭代算法为
[0074][0075]
问题难点在于求解迭代中的u
k 1
,将问题具体化,一般采用l1范数来衡量数据的稀疏性,所以定义j(u)=μ||u||1,又那么具体迭代求解u
k 1
的方法为
[0076][0077]
其中shrink()函数为
[0078][0079]
如此就可以解决如下形式的问题
[0080][0081]
了解完bregman迭代算法的基本过程后,再来求解问题(2),不难发现其问题形式和问题(6)基本一样,只不过加了一个对基的约束项。通过加入辅助变量迭代求解可以解决。解决问题(2)的算法如下所示。
[0082][0083]
通过上述算法求解小波框架基a,因为是应用到图像的二维空间中,所以a共有m个r
×
r的滤波器。具体实现采用matlab,初始化a0是生成正交的单位向量。实验中η=100,当a的变化量大于0.0001时迭代500次。
[0084]
步骤3,制作神经网络训练集;
[0085]
神经网络需要用带标注的数据集训练。然而,现有指纹集缺少人工标注,且标注难度大,所以本发明需要制作神经网络训练集,具体采用的方法为:使用传统指纹识别方法,提取指纹细节点位置信息。由于传统指纹识别方法极大依赖于指纹质量,本发明共选取步骤1中2000张质量较好的现场指纹图像,对其增强图像依次采用二值化、细化等方法,再通过空间特征查找细节点。
[0086]
二值化操作:输入现场指纹图像的增强图像,转换为像素值为[0,255]的灰度图像,计算该指纹图像的平均像素值,大于等于该平均值的设为白色指纹,小于该值的为黑色背景,输出二值化指纹图像。
[0087]
细化操作:在不改变指纹图像的拓扑结构下,将二值化指纹图像中的指纹线条从多像素宽度减少到单位像素宽度。本发明实验采用的是matlab的bwmorph(pic,

thin’,10)函数,输出细化指纹图像。
[0088]
端点以及分叉点的特殊空间特征,指以端点或者分叉点为中心的像素八邻域内,指纹点与背景点之间的空间拓扑关系,指纹细节点包括指纹端点和指纹分叉点。如图3是分叉点的八邻域空间空间结构图,黑色表示指纹像素点,白色表示背景像素点,图3中心点就是分叉点,其周围的八邻域内只有三个指纹点并且互不相连,图4为端点的八邻域内空间结构图,八邻域内只有一个指纹点。
[0089]
根据这种特殊空间结构,编写程序遍历细化指纹图像的每一个指纹像素点,查找其八邻域内指纹像素点个数和是否相连。若细化指纹图像上某一像素点的八邻域内指纹像素点个数为1,则该像素点就是端点。提取出所有端点和分叉点的位置信息,并将其坐标和指纹图像序号存为.mat文件,得到细化指纹图像对应的现场指纹图像的细节点信息。图5显示步骤3标注的细节点位置信息。
[0090]
步骤4,得到滤波图像。
[0091]
使用步骤1训练得到的小波框架基a,对步骤3中标注的2000张现场指纹图像进行滤波,由于小波框架基a共有m个滤波器,每张现场指纹图像大小为[1,288,288],滤波后得到的图像大小为[m,288,288]。
[0092]
步骤5,网络构建。
[0093]
本发明使用的深度神经网络,是对faster r-cnn进行改进,借用faster r-cnn思想,将细节点作为目标对其检测。改进具体表现在:faster r-cnn中每一点自动生成的预设候选框数量由9个改成1个,并且固定大小为32x32,对每一个候选框的位置回归参数个数由4个变成2个,只输出对候选框横轴和纵轴的位置偏移量,即只对候选框进行平移操作,不改变候选框大小。将roi pooling层之后的全连接层输出多分类损失改成输出二分类损失。
[0094]
神经网络结构分三个部分,第一部分是前置卷积网络层,用于输入步骤4得到的滤波图像,输出特征图。结构具体为:第一卷积层的卷积核大小为7x7,个数为96,步长为2;第一最大池化层窗口大小为3x3,步长为2;第二卷积层的卷积核大小为5x5,个数为256,步长为2;第二最大池化层窗口大小为3x3,步长为2;第三卷积层的卷积核大小为3x3,个数为384,步长为1;第四卷积层的卷积核大小为3x3,个数为384,步长为1;第五卷积层的卷积核大小为3x3,个数为256,步长为1;
[0095]
第二部分是region proposal networks层,用于输入第一部分得到的特征图,对特征图每一点映射到滤波图像上的一点,在滤波图像上自动生成以该点为中心的32x32大小的预设候选框,输出每一个候选框包含细节点的预测概率和候选框中心点对包含细节点的预测位置偏移量。若该候选框中包含标记细节点,则该框为正样本,真实标签为1,框的真实位置为最接近中心点的标记细节点位置。因为原始图像大小为288x288,所以通过实验认为32x32大小的候选框区域可以较好的描述细节点的局部特征。结构具体为:第一卷积层的卷积核大小为3x3,个数为256,步长为1;第二卷积层的卷积核大小为1x1,步长为1,分两条并行支路,一条支路卷积核个数为1,为输出预测概率;一条支路卷积核个数为2,输出预测位置偏移量;再根据步骤6中第一训练阶段损失函数定义,计算分类损失l
cls
和位置回归损失具体含义见步骤6中损失函数定义。
[0096]
第三部分是roi pooling层和三层全连接层,用于输入第一部分得到的特征图和第二部分得到的初步预测细节点信息,将修正的候选框映射到特征图中,使用roi pooling层输出5x5固定大小的特征向量,再加入全连接层,最后输出对每一个候选框修正后的预测细节点概率和细节点位置偏移量。结构具体为:roi pooling层为faster r-cnn网络原本结构;第一全连接层的维度为4096;第二全连接层的维度为4096;第三全连接层分两条并行支路,一条支路全连接层维度为1,输出预测概率;一条支路全连接层维度为2,输出预测位置偏移量。再根据步骤6中第二训练阶段损失函数定义,计算分类损失l
cls
和位置回归损失详见步骤6中损失函数定义。
[0097]
步骤6,训练网络
[0098]
步骤5中本发明所述神经网络分为三部分,每部分都有对应网络结构参数,训练网络分为两个阶段,第一训练阶段为训练第一部分和第二部分网络,确定第二部分rpn网络参数;第二训练阶段为固定第二部分rpn网络参数,训练第一部分和第三部分网络参数。具体
操作为:
[0099]
第一训练阶段:在pytorch官网下载对应的imagenet预训练网络模型参数,加载进第一部分的前置卷积网络层参数,输入滤波图像,输出特征图;再通过region proposal networks(rpn)网络,结合步骤3对现场指纹图像的标注信息,逐像素的将特征图上的每个像素点映射到滤波图像上的一点,以该映射点为中心,32x32为候选框,对每个候选框输出包含细节点的预测概率和对应细节点的预测位置偏移量,计算第一阶段网络损失,再进行反向传播,训练第一部分和第二部分网络参数。
[0100]
第二训练阶段:固定第一阶段训练出的rpn网络参数,重新使用imagenet预训练模型加载第一部分前置卷积层,利用rpn网络输出的候选框包含细节点预测概率和细节点的预测位置偏移量,对候选框位置进行修正,再映射到特征图上,经过第三部分roi pooling操作,将映射矩阵平均分成5x5的网格,每个网格使用最大值,就转换成固定长度的特征向量,再通过后续全连接网络结构,输出预测概率和预测位置偏移量,按照第二阶段损失函数进行反向传播,训练第一部分和第三部分网络,保存全连接层参数和前置卷积神经网络参数。
[0101]
网络输入数据大小为[batchsize,m,h,w],其中batchsize为200张,设置epoch为20,m为步骤1训练得到的小波框架基中基的个数,h和w为指纹的高和宽,等于288。通过pytorch提供的faster r-cnn网络模型,修改其中的数据集标记信息结构、候选框结构、预测和位置回归部分代码。
[0102]
第一训练阶段的损失函数由二分类损失函数和smoothl1损失两部分组成,其中,二分类损失函数为:
[0103][0104]
其中t为候选框数量,i为候选框索引。pi为第二部分网络输出的第i个候选框包含细节点的预测概率,为表示第i个候选框是否包含细节点的真实类别,细节点包括端点和分叉点,值为1表示包含细节点,0表示不包含细节点,具体通过步骤3的标记信息获得。
[0105]
smooth l1损失为:
[0106][0107]
衡量预测细节点位置与真实位置的差距,并方便求导传播。其中,xi是由第二部分网络输出求得的第i个候选框包括的预测细节点位置坐标,由第二部分网络输出的第i个候选框的细节点预测位置偏移量与求和得到,为该候选框包含的真实细节点坐标,若候选框包含多个标记细节点,则以离候选框中心点的欧氏距离最近的细节点为真实细节点位置标签。
[0108]
整体损失函数如下:
[0109][0110]
l是网络整体损失;l
cls
是对特征图每一点的二值交叉熵损失;l
loc,i
是对每一个候
选框预测细节点位置损失,乘以是表示只有当该候选框预测为包含细节点后,位置损失才有效。λ是控制位置损失的重要性,取值范围为[0.2,1]。
[0111]
第二训练阶段的损失函数具体为:
[0112][0113]
其中,
[0114][0115]
为第三部分网络输出的第i个候选框包含细节点的预测概率,是由第三部分网络输出求得的第i个候选框包括的预测细节点位置坐标,由第三部分网络输出的第i个候选框的细节点预测位置偏移量与求和得到。
[0116]
步骤7,网络实测使用
[0117]
网络训练完成后,对测试指纹提取细节特征点步骤为:
[0118]
第一步:输入现场指纹图像,使用小波框架基,得到滤波图像。
[0119]
第二步:输入滤波图像,通过第一部分前置卷积层,输出特征图。
[0120]
第三步:输入特征图,通过第二部分网络,输出候选框包含细节点的初步预测概率和预测位置偏移量。
[0121]
第四步:输入特征图和第三步的初步预测信息,修正候选框位置,再映射到特征图上,输入第三部分网络,得到最终候选框的预测概率和位置回归偏移量。
[0122]
第五步:通过设定概率阈值,本发明中设定为0.7,大于该阈值的候选框,则按输出的最终预测位置偏移量对候选框进行平移,该候选框的中心点就是提取的细节特征点。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献