基于MATLAB实现的胶囊神经网络指纹识别

2019-12-06 08:48袁颖
软件 2019年10期
关键词:指纹识别

摘  要: 针对传统神经网络识别算法易丢失指纹信息的问题,提出了一种基于胶囊网络(Capsule Network)的指纹识别算法。CapsNets在空间位置上对指纹特征的保留能力显著。实验采用30000个指纹图像作为训练集,并且使用5000个指纹图作为测试集,在对指纹图像增强,裁剪和尺寸缩放后进行网络学习。实验表明,CapsNets的网络结构特征在处理脊线区域时效果优异,不仅大大缩短了训练时间,而且精确度增加了13.6%,loss值也收敛到0.01。实验表明CapsNets对指纹图像的分类具有较好的结果。

关键词: 胶囊神经网络;指纹识别;MATLAB

中图分类号: TP391.41    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.10.020

本文著录格式:袁颖. 基于MATLAB实现的胶囊神经网络指纹识别[J]. 软件,2019,40(10):8992

Research on Capsule Network Fingerprint Recognition Based on MATLAB

YUAN Ying

(Guizhou Police College GUI Zhou GUIYANG 550005)

【Abstract】: The traditional neural Network recognition algorithm is easy to lost fingerprint feature information, this paper proposes a Network based on Capsule Network algorithm of the fingerprint identification. CapsNets has ability to retain the fingerprint characteristics on dimensional position significantly. This research using 30000 fingerprint image as the training set, and use 5000 fingerprint as the test set, the fingerprint image enhancement, cropping and size scale for Network learning. Experiments show that CapsNets' network structure features have an excellent effect in processing ridge areas, which not only greatly reduces the training time, but also increases the accuracy by 13.6%. The loss also converges to 0.01. Experiments also show that CapsNets has a good result in the classification of fingerprint images.

【Key words】: CapsNets; Fingerprint recognition; MATLAB

0  引言

传统的指纹识别在进行指纹匹配的过程中将指纹图像预处理、二值化、样化、骨架化,对指纹特征点进行提取标记,最后进行指纹图像匹配,然而随着社会的发展高速增长的指纹图像使传统的指纹比对面临大库衰减等问题,同时受到计算机硬件发展限制的制约,在过去很长一段时间指纹的识别依然停留在传统标记细节特征点进行比对的阶段。

近年来随着AlexNet[1] VGG[2]、GoogleNet[3]、ResNet[4]等网络的诞生,使指纹识别热点从传统的特征点提取算法扩展到了指纹图像提取分类算法。在以上各种网络的测试过程中,测试数据显示卷积神经网络可以通过对标准高质图像的训练,达到良好的容错率和高效率的实验结果,该结果也证明了相对于其他网络而言,卷积神经网络适合用于图像的识别,但也存在一些实际问题,卷积神经网络對于全局指纹图像没有良好的效果。为了解决这一问题,2017年12月Geoffrey E. Hinton提出了CapsNets的网络结构[5],并在multi MINIST上进行训练,训练精确度为99.23%,在affinist测试集的精确度达到了79%,远远超过了CNN的66%,测试数据显示,CapsNets的花费的时间更少,是目前精确度最高的网络[6]。在指纹识别过程中,识别的指纹图像常存在指纹重叠,这一问题在指纹识别的实际过程中是个普遍现象,就使用指纹自动识别系统频繁的公安领域来说,犯罪现场指纹很多是重叠残缺的指纹,传统指纹识别算法导致无法识别重叠指纹图像的情况。而CapsNets在学习的过程中以类似于胶囊的形式将数据从底层传递至高层,封装多维特征,从而神经网络的训练时间,提高效率。本文将该网络用于指纹图像的识别,实验结果发现该网络保留了指纹细节特征,解决如上问题。

1  CapsNets

1.1  网络结构

胶囊网络的网络结构如图1所示,胶囊网络算法的特征是提取到的每一个特征都对应一个向量,输入目标图像后用原始卷积层将图像特征存储入基础胶囊层,再由动态路由转换成下一层的对应胶囊结构的存储层,最后使用全连接层进行图像的解码与重建[7]。

CapsNets结构可以使用较少的训练数据进行训练达到较好的识别效果,即使在图像特征密集的场景下,也可以有出色的表现,胶囊网络可以在不同的视觉任务中使用相同的、简单的和一致的架构。Capsule用Dynamic Routing,使胶囊网络可以实时选取识别图形中的特征,决定不同的胶囊网络之间提取哪一个特征更为显著,因此胶囊网络更加适合于去表征像指纹这类高级的图像。

1.2  squash函数

在CapsNets中需用到squash 函数,神经网络的前一层网络以向量的形式进行输送,在激活时需要对“胶囊”做方向处理, CapsNets的激活函数命既为squash,表达式如公式(1)所示,其中j表示第j个capsule胶囊,Vj表示第j个capsule胶囊的输出向量,Sj表示第j个capsule胶囊的输入向量,||Sj?||即S向量的模长,此函数作用主要是使得Vj输出向量的长度不超过 1,同时使得Vj输出向量和Sj输入向量的方向保持一致。公式(1)的第一部分为压缩函数,该函数的作用是使当Sj输出向量很大的时候,第一部分的值能无限趋近于1;如果Sj输出向量的值很小,第一部分的值会约等于0;公式的第二部分的作用是单位化向量Sj,第二部分长度为1。当输出向量Vj的长度是在0和1之间,即表示VN给定特征的概率数值。此部分保留了输入向量的方向,并将输入向量的模压缩到了0-1之间,用向量的模的大小衡量某个实体出现的概率,模值越大,概率越大。

(1)

1.3  动态路由

胶囊网络得动态路由由预测向量激活向量[8]等组成。

预测向量,如公式(2)所示

(2)

激活向量 是胶囊第ij个的输出如公式(3)所示

(3)

步骤为:

(1)胶囊网络将输入的图片封装,输出第ij位置得向量,r为路由迭代次数;

(2)定义为l层连接下一层的可能性,初始值为0;

(3)循环执行第4-7行r次;

(4)对l层的,将用softmax转化成概率 ;

(5)对l+1层的,加权求和;

(6)对l+1层的,激活函数激活得到;

(7)根据和的关系来更新;

当和的点积值相似时,点积值就大,值也会变大,低层连接到高层的可能性就变大;当和的点积值差距较大时,点积就小,也就变小,低层连接高层的可能性就变小。

1.4  损失函数

Capsule的损失函数如公式(4)所示。

(4)

该公式表明了最大化正负样本到超平面的距离,其中表示损失希望正例样本、表示损失希望负例样本表示标定点,=0.9和=0.1。损失希望正例样本预测在0.9,超过这一数值就没必要继续运算,负例在0.1,低于这一数值也就没必要继续运算。

1.5  Tensor Flow软件库

Tensor Flow是一个用于数值计算的开源软件库[9],该软件库具有高度的灵活性、具有自动求微分的功能,支持多语言编辑,能实现真正的可移植性,采用数据流图在节点间建立相互联系的多维  数组。

使用Tensor Flow构建可训练的神经网络,首先使用使用NumPy生成假数据(phony data),总共100个点,构造一个线性模型,如下所示:

b = tf.Variable(tf.zeros([1]))

W = tf.Variable(tf.random_uniform([1, 2], –1.0, 1.0))

y = tf.matmul(W, x_data) + b

然后使用最小化方差,使用initialize初始化变量,启动graph,拟合平面如下所示[10]:

for step in xrange(0, 201):

sess.run(train)

if step % 20 == 0:

print step, sess.run(W), sess.run(b)

运用神经元搭建完整的神经网络,使用输入层、隐藏层、输出层、损失函数、参数求取搭建完整的神经网络。

2  实验

2.1  实验环境

本实验使用的是4个NVIDIA 1080 TI 11G Pascal CPU、2个Intel i7-6900K 26核56线程CPU,三星DDR4 2666 32 G内存,Asus X99-E WS/USB 3.1主板,4块1080TI 11G显卡,2个CPU 64 G     内存。

软件环境Microsoft Windows 10、Matlab 2018b矩阵实验室。

2.2  数据集

本次实验采集的数据集是由海鑫HX-R8062U活体指纹采集仪采集得到的滚动捺印指纹,每个数据集包含有10人拇指的指纹数据,在不同方向上采集的同一个人的5张指纹图像,一共55张训练集,为了增加数据,本文采用数据增强的方式对原始指纹数据集进行旋转和模糊,扩增得到每一类500张数据集,一共5000数据集。

2.3  图像预处理

(1)指纹图像数据增强

图像进行训练前通过高斯高通滤波器来增强图像数据量。如公式(5)[11]所示:

(5)

其中,

(6)

D(x,y)表示中心点与点(x,y)的距离,如公式(6)所示。卷积模板的中心点为D(x0,y0),其中D0为截止频率,通过更改系数a,b的值来调节滤波器的滤波效果[7]。

通过实验对比,增强后的图像对比度明显高于原图像,提高了图像质量,正如图2所示。

经不同方向下随机旋转指纹得到最终数据集:

2.4  实验结果

利用tensorflow开源框架设计和实现深度神经网络。进行3次路由循环,迭代训练31000次。识别率与LOSS值如表1所示。

实验需要在NVIDIA 1080TI上10小时训练以生成CapsNet网络。从图8可以看出,横坐标是CapsNets的迭代次数,纵坐标是CapsNets的准确度和损失值。当迭代达到2000次时,精度开始接近90%。与此同时,损失一直低至0.02。随着迭代次数的增加,振動逐渐减小,最终达到稳定水平。它收敛到98.6%,损失价值也收敛到0.0107。当迭代达到200时,网络接近98%,最终精度为98.5%,而损失值缓慢下降,最终总损失值为0.021,如图3所示。

3  结论

实验结果显示CapsNets适合指纹识别,CapsNets网络结构的简易使得训练速度得到了大幅度的提升。同时根据是实验结果可知胶囊网络效果稳定,精度与loss与训练结果接近,CapsNets的空间特性使得指纹特征更完整的提炼出,增加了识别精确度。虽然CapsNets在图像背景复杂的情况下,从复杂的背景中分离出想要识别的特征也依然存在困难,在以后的工作当中,也许在出现庞大的数据集的时候会出现其他问题,CapsNets仍处于起步阶段,不过CapsNets的出现使得我们在对于指纹识别的研究提供了新颖的算法。

参考文献

[1]Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. Ima geNet Classification with Deep Convolutional[J]. International Conference on Neural Information Processing Systems, 2012, 60(2): 1097-1105.

[2]Karen Simonyan, Andrew Zisserman. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. Computer Science. 2014.

[3]C Szegedy, W Liu, Y Jia, P Sermanet, S Reed. Going deeper with convolutions[J]. IEEE Conference on Computer Vision & Pattern Recognition. 2015: 1-9.

[4]Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Deep Residual Learning for Image Recognition[J]. IEEE Computer Society. 2015.

[5]林少丹, 洪朝群, 陈雨雪. 结合胶囊网络和卷积神经网络的目标识别模型[J]. 电讯技术. 2018.

[6]Hyung Gil Hong, Min Beom Lee and Kang Ryoung Park. Convolutional Neural Network-Based Finger-Vein Recognition Using NIR Image Sensors. sensors[J]. 2017.

[7]郑远攀, 李广阳, 李晔. 深度学习在图像识别中的应用研究综述[J]. 计算机工程与应用. 2019, 55 (12) : 20-36.

[8]冈萨雷斯, 伍兹, 阮秋琦, 等. 数字图像处理[M]. 电子工业出版社. 2007.

[9]佚名. 谷歌推出 TensorFlow 机器学习系统[J]. 电信工程技术与标准化, 2015, 28(11) : 92-92.

[10]刘帆, 刘鹏远, 李兵, 等. TensorFlow平台下的视频目标跟踪深度学习模型设计[J]. 光学学报, 2017, 54(9): 1-1.

[11]曹妍, 陈伟. 基于 MATLAB GUI 的指纹图像增强技术研究[J]. 软件, 2018, 39(11): 30-32.

猜你喜欢
指纹识别
基于单片机指纹识别电子寄存柜设计
指纹识别
指纹识别技术综述
苹果屏幕指纹识别专利图流出
iPhone8新专利曝光
指纹挂锁
基于大容量指纹识别的实时身份认证系统
基于线阵CCD的指纹识别实验