APP下载

基于TensorFlow的掌纹识别方法研究

2018-10-23王全

价值工程 2018年33期
关键词:卷积神经网络

王全

摘要:使用掌纹作为生物特征进行身份认证是近年来一门兴起的技术,本文提出一种基于TensorFlow的掌纹识别方法。该方法首先应用TensorFlow Object Detection API使用Google ML Engine云计算技术对获取到的手掌图像进行训练,利用得到的模型在本地完成手掌检测;然后通过手掌检测获得的ROI,使用OpenCV得部分掌纹;最后采用TensorFlow自行编写的卷积神经网络,对提取到的掌纹图像进行训練,得到训练模型进行分类预测。实验表明,该方法对比PCA、LBP等算法、得到了较高的识别率。

Abstract: Using palmprint as biometrics for identity authentication is a rising technology in recent years. This paper proposes a palmprint recognition method based on TensorFlow. The method first uses the TensorFlow Object Detection API to train the acquired palm image using Google ML Engine cloud computing technology. The palm can be detected locally by using the model. And then the ROI obtained by palm detection. Use OpenCV to get partial palmprint. Finally, the convolutional neural network constructed by TensorFlow is used. The extracted palmprint image is trained to obtain a training model for classification prediction. Experiments show that this method, compared with PCA, LBP and other algorithms, obtains a higher recognition rate.

关键词:掌纹识别;卷积神经网络;手掌检测;掌纹提取

Key words: palmprint recognition;convolutional neural networks;palm detection;palmprint extraction

中图分类号:TP391 文献标识码:A 文章编号:1006-4311(2018)33-0169-03

0 引言

掌纹识别是一种新颖的生物识别技术。相对于人脸和指纹等被广泛应用的生物识别技术,掌纹具有掌纹面积大、纹理信息多、易获取、可靠性和精度高等优点,在考勤和身份认证等方面有着广泛的应用。

手掌是指手指根部到手腕之间的区域,手掌的皮肤纹理称为掌纹,掌纹中含有丰富的特征。掌纹识别的优劣和特征提取密切相关。目前掌纹特征提取方法主要分为基于掌纹结构特征、编码特征、子空间特征和统计特征四大类[1]。卢光明和邬向前提出了基于特征掌的掌纹识别算法[2,3],Yi Pu 等人提出了基于K - Means 和 SVM的掌纹识别方法[4],Ling Lin 等人结合PCA和启发式人工神经网络进行掌纹识别[5]。本文尝试利用TensorFlow来提取特征并完成识别。

1 基于TensorFlow 的手掌检测

TensorFlow是谷歌公司为数值计算开发的第二代开源的一种基于数据流图的处理可以进行各种感知和语言理解任务的机器学习框架。

本文采用约旦的Mutah大学团队开放的手掌图片数据库作为手掌检测的训练样本的原始图像,该数据库中有4组,每组有50人,每人含有5张手掌图片。部分样本如图1所示。

利用LabelImg对图片进行标注。在标注过程中,框选训练样本中手掌的部分标注为Hand,并进行逐一的保存,得到Pascal VOC文件,保存为XML格式文件,记录了其中的标签数以及各标签的ROI。再将Pascal VOC文件转换为CSV格式文件,再和图片一同转换为record文件。

手掌检测的训练模型部分选用TensorFlow Object Detection API提供的预训练模型中的ssd_mobilenet_v1_coco用于迁移学习,该训练模型可输出相应的矩形范围作为ROI,从而完成手掌检测的过程。

其训练过程在Google Cloud Platform提供的Google ML Engine进行训练,首先在本地配置ssd_mobilenet_v1_hand.config文件用于存储训练的数据类和类名以及训练次数;之后在本地配置cloud.yml文件用于训练环境;之后上传使用到的预训练模型和训练的所使用的样本record文件至谷歌云存储平台,即可在Google Cloud SDK中运行指令并开始训练任务。在训练过程中,每几千次会存储一次相应的模型至Google提供的云存储平台,并可自行选择暂停。在训练完成后在存储区域中可看到相关的模型,本文采用30045次时的模型,下载至本地后利用TensorFlow Object Detection中的export_inference_graph.py并在参数中加入模型的名称,即可实现生成.pb文件。

读取pb文件中的模型,在拍照的或实时摄影的条件下即可得到目标检测的ROI。手掌检测结果如图2所示。

2 基于OpenCV的掌纹提取

首先通过手掌检测,获得图片中关于手掌部分的ROI,之后为了获得二值化的手掌图片,使用将图片的拷贝转化为ycrcb形式的图片的方法,根据ycrcb下的手的颜色进行掩模操作从而完成二值化得到手掌黑白图片的过程。将图3(a)手掌ROI图片转化为ycrcb形式;在ycrcb格式下的图像颜色中,手掌颜色在其中存在于一个连续的RGB区间内。因此从其中获得如图3(b)的黑白手掌图片可以根据ycrcb格式的手掌颜色进行掩模处理获得,在黑白图片中寻找周长最大的轮廓即为手掌;在当前的黑白图片中利用distanceTransform(距离变换)在白色部分中寻找距离黑色部分最大的中心即为手掌中心,根据手掌中心坐标利用距离为半径画圆即为手掌区域,如图3(c)粉色圆区域;利用圆区域得到其内切正方形即为本文提取到的掌纹部分,如图3(c)绿色正方形区域;最终可以得到掌纹的范围并保存,如图3(d)所示。

3 基于卷积神经网络的掌纹识别

在TensorFlow Python API下,使用import指令导入TensorFlow,在tf.nn下为我们提供了实现神经网络各层的相关函数。由于本地使用CPU机器学习相对于GPU配置较低,故本文中使用了简单的卷积神经网络用以训练:共分为5层,每3层每层由卷积层(这3层的卷积核大小均为3×3、输入通道分别为3、32、64)、池化层(使用maxPooling方法取2*2范围的最大值)和dropout组成。在本神经网络的最后,全连接层和输出层各一层。

使用提取到的拍照获得的掌纹作为正样本,如图4所示;Hand Images Database中提取的掌纹作为负样本,如图5所示。随机划分5%图片作为测试集,每次读取120张图片并转换为64*64像素的图片,利用前面介绍过的自行编写的卷积神经网络进行训练,经过了较为简单的1000次训练得到训练模型。

在进行掌纹识别时读取本模型,将掌纹图片输入,便可根据神经网络输出结果判断是否为正样本掌纹(因为在全连接层的配置以及训练输入的图片只有正负样本的区别,因此识别出的结果为判断是否为本人的掌纹。

4 实验结果及分析

使用非训练集的样本图片进行测试,在正样本下由手掌图片输入到手掌检测、手掌图片二值化、提取掌纹、掌纹识别的过程及每步识别结果测试如图6由左到右所示。

通过正样本下的测试用例,除了最终正确输出了True的结果,但是也发现正样本下的手掌拍摄时光照强度过大导致提取掌纹时没有达到设计的效果,使得提取的掌纹范围相对于预计的范围较小。

而在负样本下由手掌图片输入到手掌检测、手掌图片二值化、提取掌纹、掌纹识别的过程及每步识别结果测试如图7由左到右所示。

在负样本下的测试用例下,正确输出了False的结果,但是通过观察可以发现手掌拍摄时周围背景颜色在ycrcb下颜色较为相似,所以导致处理时手掌的范围相对于实际的范围较大,虽然提取到的掌纹部分没有超出手掌的范围,但是在特定的情况下可能导致出现一定问题。

通过实验,我们可以明显发现光照对于掌纹识别正确率的影响,同时验证了本程序在一定的光照强度下对含有手掌的图片能够进行从基于TensorFlow Object Detection API的手掌的检测开始,通过基于OpenCV并利用二值化和距离变换的掌纹提取,到基于TensorFlow编写的卷积神经网络完成对掌纹识别的完整的过程。

5 总结

本文利用TensorFlow Object Detection API完成了手掌的检测,基于OpenCV完成掌纹的提取算法,基于TensorFlow 构建卷积神经网络完成掌纹的训练与识别,对于每部分的过程进行了详细的介绍,并对每部分进行实验,结果表明,该方法有较高的识别率,同时具备稳定性和鲁棒性。接下来,通过提高成像设备和计算机设备的性能,优化算法效率,本文提出的掌纹识别方法将会有良好的应用前景。

参考文献:

[1]岳峰,左旺孟,张大鹏.掌纹识别算法综述[J].自动化学报, 2010,36(3):353-365.

[2]Lu Guangming,David Zhang,Wang Kuanquan. Palmprint recognition using eigenpalm Features[J]. Pattern Recognition Letters,2003(24) :1463-1467.

[3]Wu Xiangqian,David Zhang,Wang Kuanquan. Fisherpalms based palmprint recognition [J]. Pattern Recognition Letters. 2003,(24) :2829,12.

[4]Yi Pu,Tian Jianwu,Xu Dan,Zhang Xuejie,Palmprint recognition based on RB K - means and Hierarchical SVM[C]. International Conference on Machine Learning and Cybernetics,66th,Hong Kong,19 - 22 August,2007.

[5]Lin Ling,Palmprint Identification Using PCA Algorithm and Hierar-chical Neural Network[J]. Life System Modeling and Intelligent Computing Lecture Notes in Computer Science Volume 6330,2010:618-625.

[6]胡戎翔.基于掌紋和手形的生物特征识别方法[D].合肥:中国科学技术大学,2016.

猜你喜欢

卷积神经网络
卷积神经网络语言模型研究
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法