文献标识码:A
DOI:10.16157/j.issn.0258-7998.182236
中文引用格式:余成波,熊递恩. 基于胶囊网络的指静脉识别研究[J].电子技术应用,2018,44(10):15-18.
英文引用格式:Yu Chengbo,Xiong Dien. Research on finger vein recognition based on capsule network[J]. Application of Electronic Technique,2018,44(10):15-18.
0 引言
近几年来,在机器学习的发展日益更新中,深度学习算法也不断进步、更新。从2012年AlexNet[1]的诞生,一直到2017年VGG[2]、GoogleNet[3]、ResNet[4]等网络的优化、改进版的出现,保证了深度学习算法在图像分类的ImagNet挑战赛上远胜其他分类算法。卷积神经网络(CNN)通过卷积提取特征,从底层到高层映射,实现复杂函数逼近,展现了智能学习的能力。文献[5]提出了采用改进的AlexNet网络训练指静脉图像,将3×3卷积核改为1×1并减少了特征图数量,在循环50 000次后,识别率达到99.1%。文献[6]采用VGG网络训练指静脉图像,对比了低质、中质、高质图像和16层VGG网络、19层VGG网络的训练结果,其中16层VGG网络的误识率达到最低0.396(高质图像)。
通过标准高质图像的训练,CNN适合运用于指静脉的识别中,但是同样存在一些实际问题。通过采集器采集到的图像有非常大的几率采集到浅部的指静脉图像,同时,在对图像处理时是基于二维矩阵,CNN对全局指静脉图像学习特征时效果并不好,隐藏在表皮层靠后的静脉不会被学习到,因此会严重影响到识别精确度。
如图1所示,浅部静脉图像特点在于局部静脉较细、颜色较浅、分布不均且不完整,导致这样的原因主要是因为此静脉比较靠后,红外摄像头不能清晰地穿过组织进行拍摄。然而正常图像的静脉粗细、颜色均匀分布明显。
2017年12月,HINTON G E提出了CapsNets的网络结构[10],并在multiMINIST上训练精确度为99.23%,实现了在affinist测试集上79%的精确度,远超CNN的66%,同时CapsNets耗时较少,为目前精确度最高的网络[11]。指静脉图像常存在静脉重叠,导致采集过程中常出现一条重叠的静脉图像。CNN对空间位置的学习效果不佳,所以在采集图像时会对同一指头采集多次,使得网络尽可能学习到特征图中每一处静脉,而CapsNets在空间位置上对静脉图像的处理远超CNN,整个学习过程中以“胶囊”的形式从底层传递至高层,封装多维特征,如此可减少训练样本数量的同时也保留了出现概率少的的静脉特征。为此本文提出了将CapsNets应用于指静脉识别方法中。
1 CapsNets
1.1 网络结构
一些主要的计算机视觉任务中都需要一个不同的CNN架构,CNN图像分类的效果已经得到各位研究人员的认可,但是存在以下问题:
(1)CNN要接受大量图像的训练,这使得在获得训练样本时要消耗不少时间,但CapsNets可以使用较少的训练数据进行训练。
(2)CNN不能很好地处理歧义。CapsNets即使在密集的场景下,也可以表现出色。
(3)CNN在池化层中丢失了大量的信息。池化层取最大值保留了出现概率较高的特征,同时舍去了出现概率较少的特征,往往我们又需要这些重要的信息,这些层减少了空间分辨率,所以它们的输出无法对输入的小变化做出反应。当在整个网络中必须保存详细的信息时,这是一个问题。如今,解决这个问题的方法是通过在CNN周围建立复杂的体系结构来恢复一些丢失的信息。CapsNets详细的属性信息在整个网络中被保留下来而不是丢失后被恢复。输入的小改动导致输出的细微变化,信息被保留,这就是所谓的等变性。因此,CapsNets可以在不同的视觉任务中使用相同的简单一致的架构。
(4)CNN需要额外的组件来自动识别一个部件属于哪个对象。CapsNets可以为其提供部件的层次结构。
CapsNet是一个非常浅的网络,加上卷积层和全连接层一共3层。CNN在抽取低级特征上表现非常优秀,相反CapsNets是用来表征某个物体的“实例”,所以它更加适合于去表征高级的实例。所以在CapsNets中的底层加入传统CNN的卷积层做底层的特征抽取。
如图2所示,从低级特征到 Primary Capsule,第二卷积层的维度是6×6×8×32,用32个步长为2的9×9×256的滤波器做了8次卷积操作,在CNN中维度为6×6×1×32的层里有6×6×32元素,每个元素是一个标量,在Capsule中,维度为6×6×8×32的层里有6×6×32元素,每个元素是一个 1×8的向量,主要储存低级别特征的向量。
从Primary Capsule到Digit Capsule,PrimaryCaps和DigitCaps是全连接的,但不是像传统CNN标量和标量相连,此全链接层是向量与向量相连,动态路由算法迭代3次计算cij输出584个vj。
Digit Capsule到最终输出,它的长度表示其表征的内容出现的概率,所以在做分类时,取输出向量的 L2 范数。CapsNets并不像以往的神经网络输出的概率总和为1,因为CapsNets有同时识别多个物体的能力。
1.2 胶囊
起初的神经网络依靠使用单一的标量输出来总结一个局部池中的重复特征检测器的活动,CNN会对单一的图像进行位移、旋转等处理后的图像,看做是两幅图。然而神经网络应该使用的是多维特征也就是“胶囊”的形式,这些胶囊对其输入执行一些非常复杂的内部计算,然后将这些计算的结果封装成一个包含信息丰富的输出的向量。每个胶囊会学习辨识一个局部条件和有效变形范围内隐性定义的视觉实体,并输出在有限范围内存在的概率及一组实体参数,这组实体参数会包括相对这个视觉实体的照明条件、精确的位姿和变形信息等。当胶囊工作正常时,视觉实体存在的概率具有局部不变性,也就是当实体在胶囊覆盖的有限范围内的外观流形上移动时,概率不会改变。实体参数却是“等变的”,随着观察条件的变化,实体在外观流形上移动时实例参数也会相应地变化,因为实例参数表示实体在外观流形上的内在坐标,如图3所示。
假设一个胶囊,它检测图像中的指静脉特征,并输出长度固定三维向量。接着开始在图像上移动静脉。同时,向量在空间上旋转,表示检测出的静脉的状态改变了,但其长度将保持固定,因为胶囊仍然确信它检测出了静脉。神经活动将随着物体在图像中的移动而改变,然而检测概率保持恒定,这就是CapsNets追求的不变性,而不是CNN提供的基于最大池化的不变性。
1.3 Squash函数
CNN常用的激活函数包括ReLU、sigmoid等,实现的只是线性叠加后压缩在0~1或者1~-1之间。在CapsNets中,因为在前层网络中以向量的形式输送,所以在做激活时需要对“胶囊”做方向处理。CapsNets的激活函数命名为Squash,表达式如式(2)所示:
1.4 动态路由
胶囊的输入和输出的点积测量输入与输出的相似性,然后更新路由系数。实践中的最佳的迭代次数是3次。动态路由的步骤为:
(1)将输入的图片进行胶囊封装后输出Uj|i,路由迭代次数r;
(2)定义bij为l层VNi连接下一层VNj的可能性,初始值为0;
(3)循环执行步骤(4)~步骤(7)r次;
(4)对l层的VNi,将bij用Softmax转化成概率cij;
(5)对l+1层的VNj,加权求和sj;
(6)对l+1层的VNj,使用激活函数激活sj得到vj;
(7)根据Uj|i和vj的关系来更新bij。
用Uj|i和vj的点积来更新bij,当两者相似时,点积就大,bij也就变大,低层VNi连接高层VNj的可能性就变大;相反,当两者差距大时,点积就小,bij也就变小,低层 VNi连接高层VNj的可能性就变小。
1.5 损失函数
CapsNets的损失函数类似于SVM的损失函数,如式(3)所示;
式(3)同样表示最大化正负样本到超平面的距离。这里给定了2个标定点m+=0.9和m-=0.1,损失希望正例样本m+预测在0.9,超过0.9就没必要继续提高了;负例m-预测在0.1,低于0.1也就没必要继续再下降了。λ的值固定为0.5,用于训练期间的数值稳定性,是为了防止一开始损失过大,导致全部输出值都在收缩。公式中的两个项都有平方,因为这个损失函数具有L2范数,总损失是所有类损失的总和。
2 实验
2.1 数据集
本次实验采用的数据集是584个人的6根手指(除大拇指与小指)图像,每根手指重复采集20次,也即数据集大小为584×6×20。其中训练集为60 000张,测试集为10 000张。
2.2 实验结果
利用TensorFlow开源框架设计和实现深度神经网络。进行3次路由循环,迭代训练31 000次。识别率与loss值如表1所示。
整个实验在NVIDIA Titanxp上,CapsNet网络训练时间花费约6小时,通过图4可以看出,横坐标为CapsNets的迭代次数,纵坐标为CapsNets的精确度与loss值,当迭代到2 000次的时候,开始逼近90%的精确度,同时loss已经低至0.2,随着迭代次数的增加,震动逐渐减少趋近平稳,最后收敛于98.6%,而loss值也惊人地收敛于0.010 7。图5为VGG-16的训练图,可以看出比较平稳,后期的学习并没提升多少精确度,当迭代到200次的时候网络精确度趋近84%,最后精确度在85%,而loss值缓慢减小,最后总loss值在0.21。如表2所示,相比VGG-16,CapsNets优势非常明显(采用同一个数据集实验)。
3 结论
通过实验证实了CapsNets比CNN更佳适合指静脉识别,由于网络结构的简易,使得训练速度大幅度地提升。同时,因为CapsNets的空间特性使得静脉特征被更完整地提炼出,增加了识别精确度。但是CapsNets也常与背景纠缠在一起,CapsNets仍处于起步阶段,在以后的工作当中,也许在出现庞大的数据集的时候会出现其他问题,不过CapsNets的出现使得我们在人工智能的研究中跨进一大步。
参考文献
[1] KRIZHEVSKY A,SUTSKEVER I,HINTON G E.ImageNet classification with deep convolutional[C].International Conference on Neural Information Processing Systems,2012,60(2):1097-1105.
[2] SIMONYAN K,ZISSERMAN A.Very deep convolutional networks for large-scale image recognition[J].Computer Science,arXiv:1409.1556,2014.
[3] SZEGEDY C,LIU W,JIA Y,et al.Going deeper with convolutions[C].IEEE Conference on Computer Vision & Pattern Recognition,2015:1-9.
[4] He Kaiming,Zhang Xiangyu,Ren Shaoqing,et al.Deep residual learning for image recognition[C].IEEE Computer Society,2015.
[5] 吴超,邵曦.基于深度学习的指静脉识别研究[J].计算机技术与发展,2018(2):200-204.
[6] HONG H G,LEE M B,PARK K.Convolutional neural network-based finger-vein recognition using NIR image sensors[J].Sensors,2017,17(6):1-21.
[7] 余成波,秦华锋.手指静脉图像特征提取算法的研究[J].计算机工程与应用,2008,44(24):175-177.
[8] GONZALEZ R C,WOODZ R E.数字图像处理[M].阮秋琦,等,译.北京:电子工业出版社,2007.
[9] Wen Yandong,Zhang Kaipeng,Li Zhifeng,et al.A discriminative feature learning approach for deep face recognition[J].Lecture Notes in Computer Science,Springer,2016,47(9):499-515.
[10] HINTON G E,KRIZHEVSKY A,WANG S D.Transforming auto-encoders[C].International Conference on Artificial Neural Networks,2011,6791:44-51.
[11] SABOUR S,FROSST N,HINTON G E.Dynamic routing between Capsules[J].NIPS2017,2017.
[12] 刘洋,郭树旭,张凤春,等.基于稀疏分解的指静脉图像去噪[J].信号处理,2012,28(2):179-185.
[13] ROSDI B A,CHAI W S,SUANDI S A.Finger vein recognition using local line binary pattern[J].Sensors,2011,11(12):11357-71.
[14] AREL I,ROSE D C,KARNOWSKI T P.Deep machine learning-a new frontier in artificial intelligence research[J].Computational Intelligence Magazine IEEE,2010,5(4):13-18.
作者信息:
余成波,熊递恩
(重庆理工大学 电气与电子工程学院,重庆400050)