一种基于UNet++网络的掌纹识别方法与流程

文档序号:21782443发布日期:2020-08-07 20:13阅读:549来源:国知局
一种基于UNet++网络的掌纹识别方法与流程

本发明涉及生物特征识别技术领域,特别是涉及一种基于unet++网络的掌纹识别方法以及实现该方法的计算机可读存储介质。



背景技术:

传统的掌纹识别存在看相人主观臆断和宣传封建迷信的缺陷,通过现在的图像识别技术和大数据分析能力,可以实现大量用户手相的技术分析和统计,对其描述的准确性进行统计,达到去其糟粕、取其精华的效果。

申请号为cn201911045739.3的中国发明专利申请提出一种掌纹验证方法、装置、计算机设备及可读存储介质,该方法包括:当接收到掌纹验证指令时,通过预设摄像头获取待验证图像;其中,所述待验证图像包括用户的手掌信息;利用预先训练好的区域识别模型从所述待验证图像中确定出掌纹区域;利用旋转不变性局部二值模式lbp算法,计算出所述掌纹区域中的每个像素点的标准lbp特征值;根据所述掌纹区域中的每个像素点的标准lbp特征值,形成所述待验证图像的掌纹特征信息;将所述待验证图像的掌纹特征信息与预设数据库中的标准掌纹信息进行逐一匹配,若匹配成果,则掌纹验证通过;本发明提高了掌纹识别的准确性。

随着深度学习的不断发展,深度学习在图像分割领域取得了骄人成绩。最早的分割网络是2014年提出的全卷积网络(fullyconvolutionalnettorks)最早将端到端的卷积网络推广到语义分割中。到2015年的unet网络,unet网络采用完全对称的编码解码模型,以及跨层连接(skipconnection)把高层语义信息和低层语义信息结合起来,有效提升了目标分割的准确性。2018年的unet++网络是在unet网络基础上添加了密集卷积以及深度监督部分,进一步提升了目标分割的准确性。

然而,在掌纹识别的算法中,获取掌纹坐标最简单的方法是直接通过边缘检测算子来提取图像的边缘信息,这种方法检测出的边线越多,结果也就越容易受到图片噪声的影响,这种方法并不能得到掌纹线对应的类别。另外一种掌纹识别的方法是通过卷积来提取图片信息,然后通过全连接层将提取的特征回归到各个掌纹线对应的坐标。这种方法模型很难训练,需要大量的手掌标注图片。而目前没有公开的标注好的掌纹数据,所有训练数据都需要人工来标注,因此这种方法成本比较昂贵。



技术实现要素:

为解决上述技术问题,本发明提出一种基于unet++网络的掌纹识别方法以及实现该方法的计算机可读存储介质。所述方法包括构建训练集和测试集样本、构建unet++网络模型、利用所述构建的训练集和测试集样本对所述unet++网络模型进行训练以及利用训练好的unet++网络模型对掌纹进行识别等步骤。

具体而言,本发明设计和实现了一种基于unet++网络的掌纹识别方法,把不同类别掌纹线对应坐标的回归问题转换成了对不同掌纹线类别的逐像素点分类问题,不仅简化了模型的训练难度而且提高了掌纹线预测的准确性。同时借助unet++网络模型最终的剪枝结构,可以大大提高模型预测效率。

具体来说,本发明所述的一种基于unet++的掌纹识别方法,包括如下步骤:

s101:开始

s102:构建训练集和测试集样本。每对手掌图片样本包括收集好的手掌图片以及标记好相应的掌纹线标签。

s103:构建unet++网络模型。unet++网络是在unet网络基础上的改进版,主体结构是一个编码解码模型。

s104:根据s102步构建的训练集样本对s103步构建的unet++网络进行训练。

s105:利用训练好的unet++网络模型进行预测。

s106:结束。

作为本发明不同于现有技术的突出性贡献,在所述步骤s102中,

对于每张输入的手掌图片ph,通过标记得到所述手掌图片的每一类别的掌纹线的多个采样点的二维坐标值;

将所述多个采样点的二维坐标值转换成和所述手掌图片大小一致的二维标签;

将第一比例的所述手掌图片及其对应的二维标签作为训练集,第二比例的所述所述手掌图片及其对应的二维标签作为测试集。

具体来说,在所述步骤s103中,所述unet++网络模型包括下采样层、上采样层以及跳层连接层;

所述跳层连接层将每一次下采样得到的特征通过级联和卷积与上采样结果融合。

作为是体现上述突出性贡献的关键技术手段,在所述步骤s102中,对于每张输入的手掌图片ph,通过标记得到所述手掌图片的每一类别的掌纹线的多个采样点的二维坐标值,具体包括:

所述类别至少包括第一类别、第二类别、第三类别以及第四类别;

针对每一类别设置对应的标签值;

针对每一个采样点的二维坐标值,判断该采样点属于何种类别,从而将该采样点的二维坐标值转化为对应类别的标签值。

更具体的,对于每张输入的手掌图片ph,通过标记得到所述手掌图片的每一类别的掌纹线的多个采样点的二维坐标值,具体包括:

对所述手掌图片的所述采样点进行旋转和/或水平镜像变换,得到扩展后的多个采样点。

作为优选,对于每张输入的手掌图片ph,通过深度学习标注工具labelme进行所述标记。

具体训练时,将第三比例的所述手掌图片及其对应的二维标签作为校验集;

每在训练集上训练一个周期就在校验集上进行一次测试,直到连续五次在校验集上测试的准确率不再上升的时候停止训练。

在停止训练之后,利用所述测试集进行模型测试。

在停止训练之后,利用所述测试集进行模型测试;

如果所述模型测试的结果超过预定阈值,则对所述unet++网络模型进行一次剪枝操作后,重新开始所述训练。

最后的预测输出时,所述方法包括:对最后预测结果进行先腐蚀后膨胀的形态学操作。

本发明的上述过程可以通过计算机全自动的实现,因此,本发明还提供一种计算机可读存储介质,其上存储有计算机可执行程序指令,通过处理器和存储器执行所述可执行程序指令,用于实现所述的方法。

本发明的优点和技术效果至少包括:

1、一种端到端的掌纹识别方法。直接输入手掌图片即可预测得到该图片对应不同类别的掌纹线。

2、更少的手掌数据集。借助于unet++网络独特的编码解码结构以及跨层连接等特点,可以更好的把高层特征和低层特征进行融合,这种高效的特征提取方式可以使用更少的数据集进行训练模型来达到最终效果。

3、大大提升了掌纹识别的效率。通过对训练好的unet++模型进行剪枝操作,在不减少精度的情况下,大大缩短预测一张图片所需要的时间。

本发明的进一步优点将结合说明书附图在具体实施例部分进一步详细体现。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的基于unet++网络的掌纹识别方法的整体流程图。

图2是图1所述方法中手掌图片的掌纹线每一类别示意图。

图3是图1所述方法中标记好相应的掌纹线标签的流程示意图。

图4是图1所述方法中使用到的unet++网络的结构示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和实施例对本发明做进一步说明。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。下面,结合附图以及具体实施方式,对发明做出进一步的描述。

首先,介绍本发明中所使用到的几个概念。

深度学习:深度学习是学习样本数据的内在规律和表示层次。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。

卷积神经网络:卷积神经网络(convolutionalneuralnetworks,cnn)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。

激活函数:为了增加神经网络模型的非线性,从而引入了激活函数。这样使得神经网络可以任意逼近任何非线性函数。

卷积层:卷积层主要由卷积计算和激活函数组成,目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。

池化层:降低卷积层输出的特征向量,同时改善结果,使结构不容易出现过拟合。

全连接层:全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来,即把学习到的特征映射到样本标记空间的作用。

图像分割:图像分割是指将图像分成若干具有相似性质的区域的过程。

编码-解码模型:又叫做encoder-decoder模型,其中编码指将输入序列转化成一个固定长度的向量;解码指将之前生成的固定向量再转化成输出序列。

前向传播:输入在神经网络中的顺序传递过程。

反向传播算法:反向传播算法(backppropagation,bp)是目前用来训练人工神经网络的最常用且最有效的算法。通过计算网络预测值与实际值之间的误差,并将该误差从神经网络末端进行反向传播。在反向传播的过程中,根据误差调整各种参数的值,不断迭代上述过程,直至收敛。

形态学处理:这里形态学表示数学形态学的内容,将数学形态学作为工具从图像中提取表达和描绘区域形状的有用图像分量,如边界、骨架和凸壳等。

腐蚀:集合a和集合b,表示为的b对a的腐蚀为该式指出b对a的腐蚀是一个用z平移的b包含在a中的所有的点z的集合。

膨胀:集合a和集合b,表示为的b对a的膨胀定义为这个公式是以b关于它的原点的映像,并且以z对映像进行平移为基础的。b对a的膨胀是所有位移z的集合。

参见图1,一种基于unet++的掌纹识别方法,包括:

s101:开始

s102:构建训练集和测试集样本。每对手掌图片样本包括收集好的手掌图片以及标记好相应的掌纹线标签。

s103:构建unet++网络模型。unet++网络是在unet网络基础上的改进版,主体结构是一个编码解码模型。

s104:根据s102步构建的训练集样本对s103步构建的unet++网络进行训练。

s105:利用训练好的unet++网络模型进行预测。

s106:结束。

概括来说,在步骤s102中,对于每张输入的手掌图片ph,通过标记得到所述手掌图片的每一类别的掌纹线的多个采样点的二维坐标值;

将所述多个采样点的二维坐标值转换成和所述手掌图片大小一致的二维标签;

将第一比例的所述手掌图片及其对应的二维标签作为训练集,第二比例的所述所述手掌图片及其对应的二维标签作为测试集。

所述类别至少包括第一类别、第二类别、第三类别以及第四类别;

针对每一类别设置对应的标签值;

针对每一个采样点的二维坐标值,判断该采样点属于何种类别,从而将该采样点的二维坐标值转化为对应类别的标签值。

结合图2,掌纹包含了褶皱和乳突纹,为了较好的区分出主掌纹线,故需要对主掌纹线进行定义。为了能较好地训练网络,故定义主掌线区域为手掌上能量强度最为明显的五大掌纹线区域(生命线,感情线,理智线,成功线,事业线)。并且,在对突变进行标记的时候,如果图片中的主掌纹线区域纹路过于浅窄,将其视作噪声。主掌纹线附近处边缘亦作为主掌线区域看待。

因此,本实施例中,所述类别包括(生命线,感情线,理智线,成功线,事业线)。为了降低识别负载,在本实施例中,以手掌主要的三条线感情线、生命线和理智线为例,但并不局限于这三条线。这里把每一条线当做一个类别,如类别1为感情线、类别2为生命线、类别3为理智线,这三种之外的均归为第四类别。

在此基础上,构建训练集和测试集样本可以按照如下方式进行:

首先收集手掌图像,然后利用标注工具对每张手掌图像进行标记。标记之后会得到每条掌纹线的x轴和y轴坐标。这里以手掌主要的三条线感情线、生命线和理智线为例,但并不局限于这三条线。这里把每一条线当做一个类别,如类别1为感情线、类别2为生命线、类别3为理智线。

我们需要把标记好的坐标转换成和手掌图像大小一致的二维标签。其中根据标记的类别为1的掌纹线坐标对应的二维标签值为1,同样标记类别为2的掌纹线坐标对应的标签值为2标记类别为3的掌纹线坐标对应的标签值为3。其他标签值对应为0.这样我们就得到了和手掌图片对应的二维标签。

具体流程可参见图3所述的示意性流程。

选取总数据集80%的手掌图片及其对应标签作为训练集,剩余20%的手掌图片及其对应标签作为测试集。同时为了增强模型的鲁棒性,我们把手掌图片及其对应标签进行同样角度的旋转、水平镜像变换来扩充数据集。

接下来,参见图4,是本发明构建的unet++网络模型的结构示意图。

本实施例所述的unet++网络模型采用了unet的经典编码解码结构,包括下采样(down-sampling)、上采样(up-sampling)和跳层连接(skipconnection),其中跳层连接可以把编码器部分每一次下采样得到的特征通过级联(concatenation)和卷积与解码器部分上采样结果融合,使得到的语义分割结果更加精准。下采样主要是为了增加模型鲁棒性,轻微的旋转不变性,减少训练参数以及增加网络感受野等。上采样则是将提取到的特征逐步恢复到和原图像大小一致的标签预测中。这里主要是对像素点的类别预测所以需要输入图像和其对应标签具有相同的大小。

其主要特点是解决了unet网络结构层数选择问题,同时在跳层路径上添加了密集的跳层连接,以及采用深监督的训练方式可以对训练好的模型进行剪枝操作。

具体而言,参见图4,图中实线框圆部分为原始的unet结构,虚线框圆部分为添加的卷积层,虚线段连接部分代表改进的跨层连接。其中x0,0,x1,0,x2,0,x3,0,x4,0为网络的主干结构,主要进行的是卷积和下采样操作。在节点x0,0和节点x0,4之间的跳层路径由三个卷积层x0,1,x0,2,x0,3组成,同样在节点x1,0和节点x1,3之间的跳层路径由两个卷积层x1,1,x1,2组成,在节点x2,0和节点x2,2之间的跳层路径由一个卷积层x2,1组成。其中每个卷积层之前还包含一个连接层,该连接层融合来自先前卷积层的输出和相应的解码器部分上采样输出。

unet++在x(0,1),x(0,2),x(0,3),x(0,4)均使用了深度监督的训练方式。因此当网络训练好后,在测试阶段如果子网络掌纹识别的效果已经足够好,就可以进行剪枝操作剪掉剩余的网络部分。这里可以进行剪枝操作的主要原因是在测试阶段由于输入待识别的图像经过网络进行前向传播操作,如果子网络效果足够好,剪掉的剩余网络部分对该子网络的预测输出是没有影响的。

在图1-4基础上,训练unet++网络模型。unet++网络的输入为手掌图片,经过网络前向传播得到的输出为每个像素点所属类别的概率。这里我们采用的输入图片大小为(256,256)即该图片一共有256256个像素。我们分别取了三条掌纹线即这里有三个类别。对标签我们用独热编码的形式表示,其中0表示背景类,1表示第一个类别的掌纹线,2表示第二个类别的掌纹线,3表示第三个类别的掌纹线。这样我们的标签的维度可表示为(256,256,4)。我们采用交叉熵作为最后的损失函数。我们通过使用adam小批量梯度下降算法来训练优化unet++模型中的参数。

最后进行掌纹识别。通过使用训练好的unet++模型对手掌图片进行掌纹预测。为了让最后预测结果边界更加平滑、同时消除细小预测噪声的影响,因此可以考虑对最后预测结果进行先腐蚀后膨胀的形态学操作。

本实施例主要对手掌的三条线感情线、生命线和理智线进行识别。首先手掌图片数据主要是从网上收集来的,然后通过深度学习标注工具labelme进行标注。标注时采用其中的点标注方法,每条线主要标注起点和终点在内的若干个点的坐标,这里标注了8个点,要求该8个点依次连起来能够描述该线的走势,使用时将该标注点连起来用来表示该掌纹线。这里一共标注了10000张图片。按照6∶2∶2的比例进行训练集、验证集和测试集的划分。其次构建unet++网络,实际应用中unet++的编码器结构采用vgg或者其他经典网络主干结构,这样做的主要原因是可以将经典网络结构在immagenet大数据集上训练好的参数迁移过来,作为我们unet++网络编码器的初始化参数,这样可以加快网络的收敛速度。unet++解码器结构与编码器结构逐层对应即可。由于这里只进行感情线、生命线和理智线的识别,所以类别一共三类。我们把图片大小统一为长宽均为256的rgb三通道图片,为了防止图片在缩放或放大的过程中出现变形的情况,这里按照原始图片的最长边的比例进行缩放或放大,另外一个边采用补0的方法进行填充,在图片进行方放缩或放大的过程中对标签也进行同样的操作,这里主要目的是让处理后的图片能够和标签对应。同时考虑到是三分类场景,所以需要把标签处理成one-hot独热编码的格式,这样图片对应的标签大小即为(256,256,4).为了加强模型的鲁棒性在训练过程中我们对数据进行了数据增强,增强方式主要包括小角度旋转、水平镜像操作。模型训练中我们采用批大小为32,学习率为0.01,优化器为adam.每在训练集上训练一个周期就在校验集上进行一次测试,直达连续五次在校验集上测试的准确率不再上升的时候就停止训练。得到训练好的模型之后我们就可以对图片进行测试,鉴于unet++模型的独特结构,当在其子模型中效果表现的足够好时,我们可以对该模型的其它部分进行剪枝操作,这样对最后的结构准确率影响不大但可以大大节省我们的预测时间。为了让最后得到的结果边界更加平滑、同时消除细小预测噪声的影响,我们对最后预测结果进行先腐蚀后膨胀的形态学操作。这里采用的算子为经典的大小为(3,3)的十字结构。

这样我们就可以通过这个端到端的unet++模型进行掌纹线识别。这种方法明显不同于直接通过卷积进行坐标回归来识别掌纹线的方法,首先回归的方法通常为了更加精确的识别不同的掌纹线,需要先进行手掌心位置的定位,然后在定位手掌心的掌心图片中再进行坐标回归,这中方法不仅需要额外的标注手掌心的关键点坐标,而且两阶段的掌纹识别效率相对较低。因此把对手掌对应关键点的回归问题转化成分类问题,同时借助unet++独特的编解码模型,提高了模型的训练和预测速率。

本发明的各个实施例未特别定义的其他技术特征或者参数,遵从本领域的常规定义或者现有技术的常规表达。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1