本发明涉及生物特征识别领域,特别涉及一种基于cnn的指静脉身份验证方法。
背景技术:
:随着信息技术的不断发展,当代社会对信息安全的要求越来越高,人们迫切需要一种更加安全可靠的身份认证方式来保障自己的信息安全。相比于传统的身份认证方式,即基于密码等的方式,基于生物特征的身份验证方法具有更突出的便利性与安全性,因此具有广泛的应用前景。目前,应用比较广泛的生物特征识别方式有人脸识别和指纹识别等,它们主要应用在了门禁系统、atm系统、安防监控系统等领域。相比于人脸识别和指纹识别等方式,指静脉由于其处于人体皮肤表皮之下,不会像指纹一样受到皮肤表面磨损等影响,同时也不容易被窃取与伪造,因此具有更高的安全性。当前的指静脉识别算法,大体可以分为以下几类:基于指静脉纹路的方法、基于局部不变特征的方法、基于指静脉纹理特征的方法。基于指静脉纹路的方法主要是从预处理后的指静脉图像中提取出包含指静脉纹路的二值图像,通过比对两幅指静脉图像的纹路来判断其是否对应同一根手指。基于指静脉纹路的方法可以充分利用指静脉图像中纹路的方向、宽度和空间信息,但是由于采集设备限制而导致的图像质量问题,以及手指旋转平移导致的纹路偏差问题等因素,该方法在最终效果上总体较差。基于局部不变特征的方法主要是从指静脉图像上检测局部不变特征点,然后利用局部不变特征描述方法对其进行表征并匹配,通过匹配分数来判断两幅指静脉图像是否对应同一根手指,典型的方法有基于sift的方法。这种方法在一定程度上可以克服平移和旋转问题,但是由于指静脉图像通常较为模糊,因此较难获得稳定的特征点,从而使得算法的性能及应用场景受限。基于指静脉纹理特征的方法是当前指静脉识别领域的主流方法,它主要是通过统计指静脉图像中的灰度变化信息来获取特征,并最终将该特征用于匹配,其使用的典型特征包括lbp、wld、hog等。该方法较有效地表征了指静脉纹理引起的图像灰度变化情况,同时在实际使用中可以通过分块提取特征,在一定程度上保留空间结构信息。但是总的来说,这些特征提取方法都是人工设计的,特征的表达能力仍然不够强,在指静脉图像出现稍大的旋转平移时,性能会迅速下降。以上提及的传统方法,大都是基于人手工设计的特征,其表征能力总体较差,因此系统鲁棒性不够。近年来,由于数据量的增大及硬件性能的提升,深度学习这种可以自动地从大量图像中学习和提取特征的方法逐渐受到了人们的重视,并在如物体识别、目标检测、人脸识别等一系列领域取得了重大突破。由于指静脉识别领域数据集较小,难以满足深度学习对训练数据量的需求,从而使得深度学习在指静脉识别领域上的应用受到了限制。技术实现要素:本发明的目的在于克服现有技术的缺点和不足,提供一种基于cnn的指静脉身份验证方法。为了实现上述发明目的,采用的技术方案如下:一种基于cnn的指静脉身份验证方法,包括下述步骤:1)数据采集及处理:使用公开数据集或者自行采集若干指静脉图像,并随机使用旋转、平移和裁剪的操作对所获取指静脉数据集的图像数据进行扩增;2)构建cnn网络并对cnn网络进行训练:所述cnn网络包括基础网络和延伸网络,所述基础网络用于提取指静脉图像的基础特征,所述延伸网络用于cnn网络更好地适配于指静脉识别的任务;对cnn网络进行训练包括:搭建训练cnn网络所需的网络架构,建立训练样本对并利用损失函数分阶段进行cnn网络训练;3)注册阶段:对于每根手指采集若干幅指静脉图片,提取出其roi区域并进行归一化处理,然后利用步骤2)中训练完成的cnn网络计算出指静脉图像的特征向量并存储到数据库中;4)验证阶段:再以步骤3)的方式采集指静脉图片并计算其特征向量,然后计算该特征向量与数据库中每一特征向量的欧式距离,并依据欧式距离判断其是否对应同一根手指。作为优选的技术方案:步骤1)还包括,对所获取指静脉数据集的图像数据进行扩增之后,将所获取指静脉数据集中的每一张图片归一化为64*128分辨率大小。作为优选的技术方案:在步骤2)中,所述基础网络由在imagenet数据集上预训练的resnet50网络的前10层构成;所述延伸网络在基础网络之上,添加14个网络层。作为优选的技术方案:所述延伸网络的第1、3、6、8层为卷积层,所述第1、6层使用了1*1大小的卷积核,分别有128、192个滤波器;所述第3、8层使用了3*3大小的卷积核,分别有256和384个滤波器;所述延伸网络的第2、4、7、9、13层为batchnormalization层;所述延伸网络的第5、10层为池化层;所述延伸网络的第11、14层为全连接层,所述第11层有256个神经元,所述第14层的神经元数量与训练数据中的类别数相同;所述延伸网络的第12层为l2normalize层;所述延伸网络在第1、3、6、8、12层后使用了prelu激活函数,在第5、10、13层后使用了dropout技术,在第14层后使用了softmax函数获取cnn网络输出的类别概率分布。作为优选的技术方案:在步骤2)中,所述搭建训练cnn网络所需的网络架构为siamese网络架构,所述siamese网络架构将构建的cnn网络复制为两个分支,两个分支的cnn网络参数是一样的,在进行cnn网络训练时输入的是成对的指静脉图片即样本对。作为优选的技术方案:在步骤2)中的所述建立训练样本包括下述内容:对训练数据集中的每一张指静脉图片,在同类图片中随机选取两张指静脉图片与其组建正样本对,所述同类图片为同一根手指的指静脉图片,同时在其他类别图片中随机选取两张指静脉图片与其组建负样本对,所述其他类别图片为不同手指的指静脉图片,合并正负样本对作为最终的训练样本对;该选取过程将在每个batch的训练阶段结束时重新进行;此外在训练过程中,每500次迭代保存一次cnn网络参数。作为优选的技术方案:在步骤2)中,所述损失函数包括分类损失和验证损失,所述分类损失用于将样本对中不同类别的个体区分开来,其数学形式为:其中n表示每个mini-batch中样本数量;yi表示cnn网络输出的样本属于真实类别的概率;i表示样本在一个mini-batch中的编号。所述验证损失,用于减小同类样本对特征向量间的距离并扩大不同类样本对特征向量间的距离;对于单个样本对的情况,验证损失的数学形式如下:vli=yi*max(0,d-mpull)2+(1-yi)*max(0,mpush-d)2其中,yi表示该样本对的类别,若为同类样本对则取1,不同类样本对则取0;mpull代表类内样本对的距离阈值,mpush代表类间样本对的距离阈值;d表示样本对特征向量间的欧式距离;在计算最终损失时,只挑选难分的样本对,即没有满足约束距离的样本,完整的验证损失公式如下:最终的损失函数j结合分类损失和验证损失,如下式所示:其中,λ1和λ2分别表示分类损失和验证损失的权重比例,j表示样本在一个样本对中的编号。作为优选的技术方案:在步骤2)中,所述训练cnn网络包括三个训练阶段,分别为训练阶段一、训练阶段二和训练阶段三;在所述训练阶段一,固定基础网络的权值,使用分类损失训练延伸网络部分的权值,学习率为0.01;在所述训练阶段二,固定基础网络的权值,使用分类损失和验证损失共同训练延伸网络部分的权值,且学习率调整为阶段一的十分之一;在所述训练阶段三,使用分类损失和验证损失,同时训练基础网络与延伸网络,且学习率调整为阶段二的十分之一;在所述训练阶段二和训练阶段三,采用难分样本挖掘技术,计算没有满足距离约束的样本对的损失。作为优选的技术方案:在步骤3)中,对于每一幅图片,经过预处理后,将其输入训练完成的cnn网络,得到一个256维的特征向量,在注册阶段和验证阶段直接利用特征向量,不再需要原图来进行匹配;所述预处理包括提取roi区域并进行归一化处理,所述特征向量为cnn网络倒数第二层输出的向量。作为优选的技术方案:步骤4),具体包括下述步骤:采集待验证手指指静脉图片即待验证样本,进行预处理,并使用训练完成的cnn网络获取该样本的特征向量;然后分别计算该特征向量与数据库中所有已存储样本的特征向量间的欧式距离,即d=||f(p1)-f(p2)||,其中f(p1)和f(p2)指两张图片的特征向量,p1表示待验证样本,p2表示数据库中已存储的样本;最后选取与待验证样本欧式距离最小dmin的类别作为目标类别,同时判断最小距离dmin是否大于设定的欧式距离阈值dthreshold,若dmin<dthreshold,则该手指指静脉图片p1属于目标类别,如果dmin>dthreshold,则该手指指静脉图片p1不在数据库中;所述欧式距离阈值dthreshold的确定通过如下步骤进行:挑选一批已知类别的样本图像并构建样本对,使用训练完成的cnn网络获取样本的特征向量并计算每一个样本对间的欧式距离,在0-1之间以0.01为增量依次取值作为欧式距离阈值,计算每个阈值下cnn网络的far错误接受率和frr错误拒绝率,找到满足far和frr参数指标要求的欧式距离阈值作为最终的欧式距离阈值dthreshold;所述错误接受率为非同类样本对距离小于阈值的次数占总类间匹配次数的比例,所述错误拒绝率为同类样本对距离大于阈值的次数占总类内匹配次数的比例。本发明相对于现有技术具有如下的优点和效果:(1)本发明结合使用多项技术,解决了难以在指静脉识别领域应用深度学习的难题,同时本发明所应用的匹配方式简单易行,系统性能相比传统方法也有很大提高。(2)本发明使用数据扩增技术,大幅度增加了训练样本的数量,从而解决了指静脉图片样本不足的问题。(3)本发明采用resnet50的前10层作为基础网络,用于提取基础特征,在此基础上,搭建具有14个网络层的延伸网络,使得网络能够更加适应于指静脉识别的任务。(4)本发明在训练阶段,构建siamese网络结构,结合使用分类损失与验证损失,使得网络能够提取更具有辨别力的特征;分多个阶段训练网络,并在训练过程中采用难分样本挖掘技术,不计算已满足距离约束的样本对的损失,使得网络的优化与收敛更加稳定。(5)本发明根据指静脉领域的实际情况,对原始数据集进行扩增,采用dropout及l2正则等技术控制过拟合,并结合分类及验证损失,进行多阶段的迁移度量学习,最终在训练数据集极小的情况下,成功训练出了性能大幅超越传统算法的cnn网络。(6)本发明基于cnn网络,对于每一幅图片,经过预处理,将其输入训练完成的cnn网络,可以得到一个256维的特征向量,无论注册还是验证阶段,均可以直接利用特征向量,而不再需要原图来进行匹配,匹配方式简单易行。附图说明图1是本发明基于cnn的指静脉身份验证方法流程图。图2是本发明的siamese网络架构示意图。图3是本发明的cnn网络的训练目标示意图。具体实施方式下面结合附图对本发明进行详细描述,但本发明的实施方式不限于此。实施例如图1所示,本发明的一种基于cnn的指静脉身份验证方法步骤为:1)数据采集及处理:使用公开数据集或者自行采集若干指静脉图像,并随机使用旋转、平移和裁剪的操作对所获取指静脉数据集的图像数据进行扩增;2)构建cnn网络并对cnn网络进行训练:所述cnn网络包括基础网络和延伸网络,所述基础网络用于提取指静脉图像的基础特征,所述延伸网络用于cnn网络更好地适配于指静脉识别的任务;对cnn网络进行训练包括:搭建训练cnn网络所需的网络架构,建立训练样本并利用损失函数分阶段进行cnn网络训练;3)注册阶段:对于每根手指采集若干幅指静脉图片,提取出其roi区域并进行归一化处理,然后利用步骤2)中训练完成的cnn网络计算出指静脉图像的特征向量并存储到数据库中;4)验证阶段:再以步骤3)的方式采集指静脉图片并计算其特征向量,然后计算该特征向量与数据库中每一特征向量的欧式距离,并依据欧式距离判断其是否对应同一根手指。下面详细介绍本发明所用的cnn网络的构建及训练方式。1.数据集扩增及预处理根据指静脉识别领域的开放数据集,一个数据集通常只包含数千张指静脉图片,数据量很小,因此如果直接应用深度学习方法,网络很难从中学习到能够应对平移、旋转、色彩变动等各种变化的具有区分力的特征。在本实施例中,需要对原始数据集中的图像进行扩增,对原始训练数据集中的每一张图片,随机组合旋转、缩放、水平平移、竖直平移、剪切变换以及颜色变换(channelcolorshift)的操作,将1张图片扩增至20张。扩增之后,将每一张图片归一化至64*128分辨率大小。2.网络架构应用上述的扩增策略产生大量的新样本数据,但由于新样本数据是原始数据经过简单的变换得到的,因此二者仍然存在很高的相关性;如果自行构建浅层网络并使用这些数据训练,由于浅层网络的表达力有限,仍旧难以适应指静脉识别的任务;如果从零开始构建深层网络,由于深层网络其参数量较大,在训练数据集有限的情况下难以获得充分训练,在本实施例中尝试采用迁移学习的方法克服这一问题。由于cnn网络的浅层部分提取的是一些边缘、条纹和颜色块等特征,高层部分提取的才是更加抽象的适用于具体任务的特征,因此如果采用在imagenet数据集上预训练的模型,保留其浅层部分用于提取基础特征,在基础特征的基础上构建延伸网络,可以在最小化网络参数数量的情况下训练出具有较强表达能力的网络。目前存在的网络架构有vggnet、googlenet、resnet等,在本实施例中采用resnet50网络的前10层作为基础网络,用于提取指静脉图像的基础特征,网络架构如表1所示。表1在基础网络之上搭建了延伸网络,架构如表2所示,延伸网络交替采用了1*1卷积和3*3卷积,1*1卷积用于组合通道间信息,同时通过减少通道数量去减小参数量,3*3卷积用于进一步提取特征;使用了prelu激活函数,用于在一定程度上减小神经元死亡的情况;使用batchnormalization层稳定网络训练并加速收敛;使用池化层降低特征图大小,获取一定程度的平移不变性并减少参数数量;使用l2normalization层避免计算距离时的尺度问题;使用dropout技术进一步减少过拟合的发生。在延伸网络的最后使用两个全连接层,其中倒数第二层设置了256个神经元,即使用256维的特征向量来表征每一幅指静脉图片;延伸网络的最后一层输出分类结果,只在训练阶段使用。表2网络层编号类型卷积核大小数量步长1conv1×112812bn---3conv3×325614bn---5maxpool2×2-16conv1×119217bn---8conv3×338419bn---10maxpool2×2-111fc-256-12l2norm---13bn---14fc-训练集类别数-3.训练方式对于每一张指静脉图片,获得一个固定长度的特征向量,并通过计算不同指静脉图片特征向量的欧式距离来判断其是否对应同一根手指。因此,根本目的在于构建一个能充分表征指静脉图片的网络,对于输入的指静脉图片,它能输出满足下述约束的特征:即对于同类图片,其输出的特征向量间的距离尽可能小;对于其他类图片,其输出的特征向量间的距离尽可能大,所述同类图片表示同一根手指的指静脉图片,所述其他类图片表示不同手指的指静脉图片。如果仅使用softmaxloss训练网络,将很难获取到充分满足上述约束的特征。因此,在本实施例中搭建siamese网络架构,如图2所示,该siamese网络架构将cnn网络复制为两个分支,两个分支的cnn网络参数是一样的,p1和p2表示输入的两张指静脉图片即样本对。训练过程中采用的损失函数由两部分构成。第一部分是分类损失,分类损失主要用于将不同类别的个体区分开来,其数学形式为:n表示每个mini-batch中样本数量;yi表示网络输出的某个样本属于其真实类别的概率;i表示样本在一个mini-batch中的编号。第二部分是验证损失,主要用于减小同类样本对特征间的距离并扩大不同类样本对特征间的距离。原始的contrastiveloss形式如下式所示:从上式可以看出原始形式的contrastiveloss只考虑了类间样本对的距离阈值,即约束非同类样本对的距离需要大于设定的阈值。在本实施例中考虑一种特殊情况,即手指在正常姿势和旋转较大角度姿态下的两张指静脉图片,此时两张图片虽然属于同一类,但从画面上看已经有了明显的区别,如果仍然不加考虑的计算二者的特征向量的距离,并约束其接近于0,将会导致模型易受这种极端情况影响,从而使得模型的泛化性能变差。因此,为类内样本也加上一个阈值,考虑单个样本对的情况,验证损失verificationloss如下:vli=yi*max(0,d-mpull)2+(1-yi)*max(0,mpush-d)2上式中mpull代表类内样本对的阈值,mpush代表类间样本对的阈值,d表示样本对特征向量的欧式距离,如图3所示,cnn网络的训练目标,试图约束类内样本对的特征向量距离小于mpull,类间样本对的特征向量距离大于mpush,其中,箭头表示训练。考虑到随着模型的训练优化,训练数据中有一些样本对的距离已经满足了约束,在计算最终损失的时候不应当考虑这一部分较容易的样本,即应当只挑选难分的样本,故完整的验证损失函数公式如下:最终的损失函数j结合了前面的分类损失和验证损失,如下式所示:其中,λ1和λ2分别表示分类损失和验证损失的权重比例,j表示样本在一个样本对中的编号,在不同的训练阶段可以选取不同的值,从而使得cnn网络可以更好的得到优化。对训练数据集中的每一张图片,在同类图片中分别随机选取两张与其组建正样本对,同时在其他类别中随机选取两张与其组建负样本对,合并正负样本对作为最终的训练样本。此外在训练过程中,每500次迭代保存一次cnn网络参数。训练过程中,选取的mpull=0.35,mpush=0.55。(1)训练阶段一在训练阶段一,使用在imagenet上预训练的resnet50参数去预设基础网络部分的参数,另外随机初始化延伸网络的参数,为了更好地优化网络,在这一阶段,先固定基础网络的参数,仅仅优化延伸网络。在所述训练阶段一选取λ1=0.5,λ2=0,使用的学习率为0.01,训练1个batch。(2)训练阶段二在所述训练阶段二开始前,搭建的网络已经能够对训练数据中的图片做出较为准确的分类,然后加入验证损失进一步训练。在这一阶段中,任然固定基础网络的参数,只优化延伸网络部分。选取λ1=0.5,λ2=0.5,使用的学习率为0.001,训练4个batch。(3)训练阶段三在所述训练阶段三,对网络进行最后的全局微调。选取λ1=0.5,λ2=1,使用的学习率为0.0001,所述训练阶段三在训练总步数达到25000时停止。经过三个阶段的训练之后,使用训练过程中保存下的模型在验证集上进行测试,选取在验证集上效果最好的模型作为最终模型,并在测试集上测试性能。4.验证实验在验证实验中,选取三个数据集,分别为mmcbnu_6000、fv-usm、sdumla-hmt。mmcbnu_6000数据集包含100个人,每个人采集6根手指,每根手指采集6个样本,总计6000张图片。fv-usm数据集包含123个人,每个人同样也是采集6根手指,每根手指采集4个样本,总计2952张图片。sdumla-hmt数据集包含106个人,每个人采集6根手指,每根手指采集6个样本,总计3816张图片。对于mmcbnu_6000和fv-usm数据集,使用数据集提供的指静脉roi图像;对于sdumla-hmt数据集,自行对其进行截取。最后统一将所有的指静脉图像归一化至64*128分辨率大小。在验证实验中,根据手指来划分类别,选取60%的手指类作为训练样本,10%的手指类作为验证样本,并将剩下的30%手指类作为测试样本。训练时,将针对每个数据集分别进行训练、验证及测试,训练过程依照前述步骤进行;测试时,分别选取每个数据集中测试部分样本中所有可能组合而成的同类样本对作为正样本对,并依据正样本对的数量为每张指静脉图片挑选一定数量的非同类样本组成负样本对,保证正负样本对数量大体相等。具体包括下述步骤:采集待验证手指指静脉图片即待验证样本,进行预处理,并使用已训练好的cnn网络获取该样本的特征向量;然后分别计算该特征向量与数据库中所有已存储的特征向量间的欧式距离,即d=||f(p1)-f(p2)||,其中f(p1)和f(p2)指两张图片的特征向量,p1表示待验证样本,p2表示数据库中已存储的样本;最后选取与待验证样本欧式距离最小dmin的类别作为目标类别,同时判断最小距离dmin是否大于设定的欧式距离阈值dthreshold,若dmin<dthreshold,则该手指指静脉图片p1属于目标类别,如果dmin>dthreshold,则该手指指静脉图片p1不在数据库中;所述欧式距离阈值dthreshold的确定通过如下步骤进行:挑选一批已知类别的样本图像并构建样本对,使用训练好的cnn网络获取样本特征向量并计算每一个样本对间的欧式距离,在0-1之间以0.01为增量依次取值作为欧式距离阈值,计算每个阈值下cnn网络的far错误接受率和frr错误拒绝率,找到满足far和frr参数指标要求的欧式距离阈值作为最终的距离阈值dthreshold;所述错误接受率为非同类样本距离小于阈值的次数占总类间匹配次数的比例,所述错误拒绝率为同类样本距离大于阈值的次数占总类内匹配次数的比例,错误接受率固定时,错误拒绝率相应就固定了,错误接收率固定为0.1%。如表3所示,本实施例验证实验最终的测试结果,表中所示结果为等误率,即far与frr相等时的取值:从表3中可以看出,本实施例提出的模型在各个公开数据集上都取得了大幅超越传统算法的性能。表3mmcbnu_6000fv-usmsdumla-hmt模板匹配3.905.28812.43lbp1.771.84311.94hog0.771.3937.119wld2.012.71510.56sift7.7278.47215.09gabor+wld2.726.1468.86gabot+sift0.651.0684.102本实施例方法0.330.631.04在实施例中提出了一种基于cnn的指静脉身份验证方法。为了解决指静脉训练样本较少而难以应用深度学习的问题,本实施例使用了resnet50的前10层作为基础网络提取底层特征,在基础网络之上构建延伸网络,使得网络能够更加适应于指静脉识别的任务。并根据指静脉领域的实际情况,对原始数据集进行扩增,采用dropout及l2正则等技术控制过拟合,并结合分类及验证损失,进行多阶段的迁移度量学习,最终在训练数据集极小的情况下,成功训练出了性能大幅超越传统算法的cnn模型。此外,本实施例使用的验证方法仅仅是计算特征向量间的欧式距离,匹配方式简单,在使用过程中可以大幅减少匹配时间。本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。当前第1页12