1.本发明属于指静脉识别领域,特别涉及一种基于深度度量学习的指静脉特征提取方法。
背景技术:2.特征提取是指静脉识别过程的一个关键阶段。在该阶段,将红外传感器采集到的指静脉图像映射的某一特征度量空间,以特征向量表示指静脉的可量化属性。这些特征向量将作为指静脉识别的模板,用于下一阶段的匹配或识别。
3.传统的指静脉特征提取方法大致有三类:基于静脉模式的方法、基于局部二进制码的方法、基于降维的方法。这些方法通过人类专家手工设计特征参数(如:静脉图案的几何和拓扑结构、局部二进制码等)提取特征,需要图像有清晰的静脉纹路,并且需要人为精心调整参数,实现复杂且算法鲁棒性差。随着深度学习的发展,让计算自主学习特征参数成为一种可行的途径。基于深度学习的特征提取方法,如:fv-net、fv-gan等,在一些公开的指静脉数据集上取得了不错的效果,但是这些方法存在两个问题:首先,算法测试是基于闭集识别的,这可能无法满足指静脉场景下不断新增类别的需求。其次,这些方法骨干网络通常采用小型cnn,无法表示丰富的深层特征,优化目标也只关注特征可分离性,没有考虑特征的类内紧凑性。
技术实现要素:4.针对现有技术存在的不足,本发明目的是提供一种基于深度度量学习的指静脉特征提取方法,解决上述背景技术中提出的问题。
5.本发明通过以下的技术方案实现:一种基于深度度量学习的指静脉特征提取方法,包括以下步骤:
6.步骤1,对指静脉原始图像做预处理,提取图像的感兴趣区域;
7.步骤2,将正负样本对组成的三元组(a,p,n)传入特征提取网络,得到特征三元组;
8.步骤3,在欧式度量空间上计算损失,然后,将特征三元组传入分类器得到类别概率,并计算在余弦度量空间上的损失,通过反向传播一并优化。
9.作为一优选的实施方式,步骤1中,首先获取手指的上下边界,确定手指的位置,其次,根据手指的边界计算出手指的中轴线,反求出手指平面偏移的角度,以便对手指进行旋转矫正,最后寻找手指第二关节的位置,截取感兴趣区域。
10.采用了上述技术方案后,本发明的有益效果是:(1)基于样本配对的训练方式,让数据集以另一种形式得到了扩充。(2)能够提取显著性特征,在度量空间中达到同类距离小,异类距离大的目标。(3)具有良好的鲁棒性,在大规模的数据集上仍然有不错的性能。
附图说明
11.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
12.图1为指静脉特征提取整体框架示意图。
13.图2为手指边界检测示意图。
14.图3为手指旋转矫正示意图。
15.图4为手指图像roi提取示意图。
16.图5为残差学习示意图。
17.图6为残差模块示意图。
18.图7为fv-fe-net网络结构表示意图。
19.图8为度量学习中存在的问题示意图。
20.图9为样本更新方向示意图。
21.图10为与其他的方法对比示意图。
具体实施方式
22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.本发明提供一种技术方案:一种基于深度度量学习的指静脉特征提取方法,包括以下步骤:
24.步骤1,对指静脉原始图像做预处理,提取图像的感兴趣区域;
25.步骤2,将正负样本对组成的三元组(a,p,n)传入特征提取网络,得到特征三元组;
26.步骤3,在欧式度量空间上计算损失,然后,将特征三元组传入分类器得到类别概率,并计算在余弦度量空间上的损失,通过反向传播一并优化。
27.请参阅图1,作为本发明的一个实施例:
28.对于步骤1。
29.对指静脉原始图像做预处理,提取图像的感兴趣区域(region of interest)。其次,将正负样本对组成的三元组(a,p,n)传入特征提取网络,得到特征三元组,并在欧式度量空间上计算损失,图中||a-p||《||a-n||表示正样本对距离小于负样本对距离的目标。然后,将特征三元组传入分类器得到类别概率,并计算在余弦度量空间上的损失,图中cos(a,p)《cos(a,n)表示正样本对间角度小于负样本对间角度的目标,通过反向传播一并优化。这样做可以让网络受到距离和角度的双重约束,保证网络的有效学习。
30.如图2,图2中,(a)原始图像;(b)x方向梯度;(c)y方向梯度;(d)手指边界,为了保证数据分布的一致性,同时去除外界因素的干扰,在指静脉识别前需要提取手指的感兴趣区域。干扰来自于两个方面:1)指静脉成像设备在近红外光下采集图像,采集的图像包括手指区域以及背景区域,这些背景区域和手指的边缘区域存在许多噪声,会影响指静脉的识别;2)指静脉的采集设备虽然都有一个凹槽限制手指的活动范围,但由于用户的手指存在粗细、长短等差异,不可避免会出现手指的前后偏移、左右偏移和轴向姿态变化等问题。因
此,在进行识别前,通常需要对采集的图像进行预处理,最主要的就是感兴趣区域提取。
31.g=g
y-g
x
ꢀꢀ
(3-1)
[0032][0033]
手指的感兴趣区域提取,实际上就是获取不同用户手指的某一相对部分。类似人脸识别中的人脸对齐,就是获取图像中的头部区域再进行相似性对比。手指的感兴趣区域应该尽可能包含多的静脉纹路,排除无关信息的干扰,保证图像有丰富的信息、清晰的纹路和统一的尺寸。提取手指感兴趣区域的思路是:首先获取手指的上下边界,确定手指的位置,其次,根据手指的边界计算出手指的中轴线,反求出手指平面偏移的角度,以便对手指进行旋转矫正,最后寻找手指第二关节的位置,截取感兴趣区域。为了获取手指的上下边界,采用sobel算子进行边缘检测。物体的边缘在图像中会呈现较大的梯度值变化,sobel算子通过卷积核运算(3-2)获取图像的梯度值,加权各方向的图像梯度值即得到物体的边缘。为了避免图像中噪声的干扰,在边缘检测前还需要用高斯低通滤波器得到过滤噪声后的图像a。x方向和y方向的sobel算子的定义如下:
[0034]
在指静脉图像中,因为采集图像时受到自然光的干扰,自然光圈在图像中也有明显的边缘,如图2(a)。希望只获取手指的边缘信息,避免一些无关的环境干扰。考虑到手指的上下边界平行于x轴,用y轴方向的图像梯度减去x方向上的梯度(3-1)得到去除了光圈干扰的图像。由于其他环境噪声点较为分散,这里通过并查集算法过滤小数量的联通区域,得到手指的上下边界,如图2(d)。
[0035]
手指在平面内的任意角度的旋转,可能会导致一个手指多次采集时姿态不同,因此对手指进行旋转校正是必要的。获取手指的上下边界后,可以根据边界坐标计算手指中点的位置。但是手指边界在过滤噪声后是不连续的,所有通过最小二乘法拟合手指中点得到一条直线,即手指的中轴线。最后基于手指中线的斜率k反求手指旋转的角度θ=arctan k,对原始图像旋转-θ完成矫正,如图3所示,(a)拟合中线;(b)旋转原图。
[0036]
参阅图4,图4中,(a)截取内切矩形;(b)中轴线灰度差;(c)提取roi,为了去除设备等背景的干扰,需要截取手指上下边界的内切矩形图4(a)。但手指径向平移仍会导致提取的图像区域差异过大,因此需要进一步定位到手指图像的稳定区域。指静脉图像采集通常是包含了两个指骨间的关节,而手指关节腔存在关节液,在指静脉图像中会呈现为较亮的区域。因此希望能定位到手指关节腔的横向坐标,通过手指图像的中轴线灰度差变化图4(b),可以发现指关节腔在相应横坐标上呈现为两个峰值。所以确定峰值所在的x轴坐标,就可以定位手指的感兴趣区域图4(c)。
[0037]
对于步骤2。
[0038]
想要构建一个深度神经网络,这样的网络可以进行更复杂的特征提取,在指静脉识别任务上效果也会更好。但另一方面,网络层数不断增加会出现网络性能退化的问题(深度网络开始收敛时,精度达到饱和后迅速退化,训练的误差变大)。resnet通过残差学习的方式解决了网络退化问题。
[0039]
如图5所示,x表示网络输入,f(x)表示网络输出。假设h(x)是一个理想的映射函数,传统的网络就是让f(x)去逼近h(x),而残差学习的目标则是让f(x)去逼近h(x)-x。残差
学习的思路就是建立网络输入与输出的恒等映射,令f(x)+x=x,即f(x)=0,这样网络的深层参数在初始化为零后就可以很容易满足。此外,网络深层的梯度还可以通过快捷连接直接传回浅层,这可以避免梯度消失的问题。
[0040]
学习指静脉图像的显著性特征是提高网络判别能力的关键。卷积网络通过融合每一层的空间和通道信息来构建图像特征,这些图像特征不是相对孤立的,本文希望能对特征之间的相互依赖关系进行显式建模。
[0041]
如图6,以resnet34为基础,根据指静脉场景重新设计网络,得到指静脉特征提取网络fv-fe-net(finger vein feature extraction network),如表3-1所示。resnet34包含一个7
×
7的卷积层,和四个不同数量的残差模块堆叠的网络层,输出经过平均池化和1000维的全连接层。由于指静脉识别任务更关注静脉的细节部分,用3
×
3的小卷积核替换7
×
7的卷积层,这样网络在训练过程中将保留更多的细节信息,同时能降低模型的参数量。在每次卷积之前进行批归一化,这样保证每层数据的分布不发生太大的改变而影响网络的特征提取能力。同时将relu激活函数替换为leaky relu激活函数,避免出现均值偏移,让网络更稳定。在基础网络输出之后,还需要构建延申网络,进一步提取具有区分力的静脉特征。延申网络将基础网络的输出通过批归一化层后,采用dropout避免网络过拟合,之后通过全连接层得到256维度的特征向量。为了保证网络输出的特征分布不发生太大变化,对输出的特征向量进行l2正则化,这样做还可以保证相似性度量的准确性。
[0042]
对于步骤3。
[0043]
损失函数对于神经网络的性能有重要的作用,一个合理的损失函数能约束网络的搜索空间,使网络的输出更接近优化目标。
[0044]
如图7,为了让fv-fe-net提取的特征满足类内紧凑、类间分散的特性。
[0045]
通过让特征向量在欧式度量空间上满足||a-p||《||a-n||的约束,在余弦度量空间上满足cos(a,p)《cos(a,n)的约束。这是因为,在指静脉识别的下一阶段:特征匹配与识别,通常采用欧式距离或余弦相似度作为判别准则。并且,网络在两种度量空间中训练,也有助于其学习到对高级特征的表示能力。
[0046]
针对上述目标,定义损失函数目标形式为lfv=α
·
l1+β
·
l2,其中,l1是欧式度量空间的距离损失,采用三元组损失。l2是在余弦度量空间上的角度损失,采用arcface,arcface是softmax loss的一个改进版本,该损失从弧度上添加间隔以扩大决策边界。式中,α和β是调节因子,防止两部分的损失差距过大。损失函数具体形式如下:
[0047][0048]
损失函数第一项是三元组损失,表示在欧式空间中的样本距离度量,其中γ是距离间隔,f(
·
)表示特征提取函数,xai表示锚点样本,xpi表示与锚点同类的样本,xni表示与锚点不同类的样本。第二项与softmax的不同点在于:将偏置置为零,并将特征x与权重w分别归一化,二者的向量点乘结果就为cosθ,其中θ为特征x与权重w之间的角度,s是缩放因子,m是类别间隔。三元组损失从欧式度量空间上约束样本的位置,而arcface从余弦度量空
间上调整样本,该方法提供更丰富的度量标准,因此让网络有更好泛化能力。
[0049]
像式(3-3)这样的式子似乎可以满足目标,但是在实际训练中会出现收敛困难。因为在度量学习中,选取的同类样本间距离与不同类样本间距离太小,会造成网络训练过程震荡幅度较大,网络难收敛的现象。以三元组损失为例,图8为样本在一次训练迭代的过程。该方法只考虑将正样本p往锚点a方向拉近,将负样本n推向远离锚点a方向。这样会导致训练过程中将负样本n推到锚点a所在类别当中,在本次迭代完成后,负样本n与锚点样本a所在类别的其他样本距离变小了。不仅会造成网络收敛困难,还会导致网络的鲁棒性变差。因此,需要约束样本的更新方向。
[0050]
为了探究样本更新的方式,对三元组损失求导,得到下式。其中fa表示锚点在度量空间中的嵌入,f
p
表示与锚点同类的正样本在度量空间中的嵌入,fn表示与锚点不同类的负样本在度量空间中的嵌入。
[0051][0052]
通过求导可以发现,在梯度下降过程中,正样本会受到一个fa-fp方向的力,这个力将正样本拉向锚点,负样本会受到一个fn-fa方向的力,这个力将负样本推离锚点,而锚点样本受到一个fp-fn方向的,具体如图9所示。
[0053]
为了避免图3-8所示的问题,希望负样本尽可能地向锚点所在类别中心远离。记锚点a和正样本点p之间的中点为c点,在每个batch中可以近似认为c点为锚点所在类别的类心,可得fc=f
a+fn
/2。因此,优化目标就成了令负样本点径向远离近似类心c点,也就是令nc与ap正交。
[0054][0055]
可以知道nc=f
c-fn,并且pa=f
a-f
p
,于是上式就成了
[0056][0057]
因为||fa||=||fn||=||f
p
||=1,容易得知fc⊥
pa,也就是fc·
(f
a-f
p
)=0,将上式的分母展开,可以得到
[0058]fn
·fp-fn·
fa=0(3-7)
[0059]
上式就是希望样本更新的方向,于是在损失函数上增加方向约束,可以得到
[0060]
[0061]
式子(3-8)是在联合损失函数的基础上添加了一个方向约束正则项,式中λ是一个超参数。带有方向约束的联合损失在训练过程中收敛变快,并且得到的网络精度也更高。
[0062]
作为本发明的一个实施例:为了与其他的指静脉识别方法进行了公平对比,这里采用其他算法提出的试方法。在公开数据集中选择所有类别一半样本进行训练,其余的样本作为测试集。图10中展示了对比的结果,提出的方法在公开数据集上取得了最好的性能。这是因为:利用样本配对的度量学习,从某种程度上说扩充了数据规模,为深度网络提供了数据驱动力。另外,这种方式能充分挖掘数据之间的相对关系,有利于网络学习更丰富的特征表达。
[0063]
所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。