基于卷积神经网络的多光谱掌纹识别技术
2021-07-26刘雪微王继帅李选普
刘雪微,王 磊,章 强,王继帅,李选普
(1.哈尔滨工业大学(威海)信息科学与工程学院 山东 威海 264209;2.中国科学院 苏州生物医学工程技术研究所 江苏 苏州 215163;3.中南大学 自动化学院 湖南 长沙 410083)
0 引言
随着社会的飞速发展,生物特征识别技术作为身份辨认的重要支撑技术逐渐发展起来,除了已经大规模进入市场使用的人脸识别和指纹识别技术,基于掌纹图像识别的生物特征识别研究正在兴起。掌纹识别技术的发展可以解决人脸识别依赖采集环境以及指纹识别无法全面覆盖等问题,为身份识别提供了更加适用于市场的方法。掌纹识别的核心在于提取特征,文献[1]利用形态学算子结合递归过程的两级提取方法提取掌纹线;文献[2]对Hilditch算法进行细化,采用边缘跟踪的方法去除细枝和短线;文献[3]提出基于改进有限Radon变换(MFRAT)的主线提取算法。这些算法主要针对掌纹线进行提取,而对掌纹特征提取不够全面。近年来,随着深度学习的发展,文献[4]利用深度学习中的卷积神经网络(CNN)对掌纹进行识别,在部分公开掌纹数据库中可达到99%以上的识别率,且不同CNN的识别效果有较大差别。此外,在自然光下所能提取的掌纹特征有限,且皮肤在不同波长光的照射下所反映的信息是不同的[5]。因此,本文提出一种基于CNN的多光谱掌纹识别方法,使用ResNet-18网络进行特征提取,并将融合后的特征送入SVM分类器,提高了掌纹识别的准确率。
1 相关工作
掌纹识别主要对手指末端到手腕部分的手掌图像进行特征提取及分析,因为掌纹采集设备采集的图片是整张手掌的图片,所以在特征提取前要进行感兴趣区域(ROI)的提取。目前掌纹的定位分割方法主要分为基于正方形的定位分割方法和基于内切圆的定位分割方法两类[6]。基于正方形的定位分割方法对于定位点的要求较高,需要先对图像进行平滑滤波去噪、二值化处理、轮廓跟踪等基本操作,再对处理过的图像进行关键点定位,并提取感兴趣掌纹中心区域,文献[7]实现了基于Harris角点检测和聚类算法确定关键点并画出正方形区域。本文使用基于内切圆的定位分割方法,首先用边缘检测算法求得手掌图像的边缘轮廓图,依据手指角度对掌纹图像进行旋转,通过计算各点到手指的距离求取手掌内最大内切圆,进而获得其内切正方形,分割出掌纹的ROI。掌纹特征提取属于图像处理方向,可以使用CNN进行掌纹图像的特征提取。近年来,研究者在人脸识别中应用CNN,其识别性能有较大提升,使人脸识别技术在市场上有了较大规模的发展。掌纹识别作为生物特征识别的热门研究方向,基于CNN的掌纹识别研究也陆续开展起来。对于一组单光谱掌纹图片,利用CNN通过卷积层、池化层和连接层的组合以及网络参数的变化,并通过反向传播和权重训练最终得到特征向量,在单光谱掌纹数据中识别率较高。但因为单光谱下可提取的掌纹信息有限,需要对多个光谱下的掌纹进行特征提取后完成特征级融合,从而提高识别率。
(1)
其中:a、b、c、d、e、f为融合系数。
2 关键技术实现
2.1 ROI的提取
CASIA多光谱掌纹图像数据库包含7 200张手掌图片,100个人使用非接触式多光谱成像设备对双手在460 nm、630 nm、700 nm、850 nm、940 nm和白光中各采集6张手掌图片。在采集过程中没有限定手掌的位置和方向,因此需要对原始图像进行ROI的提取。基于内切圆的定位分割方法的图像预处理过程如图1所示,具体步骤如下。1)对掌纹图像进行灰度化,同时为了更好地将掌纹图像和背景图像分离开,获取原始图像的灰度直方图,采用双峰法对灰度图像进行二值化处理。2)通过对目标边缘进行跟踪处理,顺序找出边缘点,进而得到掌纹轮廓图。根据扫描图像时方向变量的不同,可以分为基于四连通或八连通区域的轮廓跟踪。定义方向变量为7,进行基于八连通区域的轮廓跟踪。3)根据获得的轮廓点生成轮廓图片,并得到一个近似的椭圆,将原图片根据椭圆角度进行旋转以尽可能地将手掌放为竖直。4)基于距离变换得到手掌中心,并根据最大半径画出手掌的内切圆,已知圆的半径和圆心坐标,可以根据ROI提取出内切正方形。
图1 基于内切圆的定位分割方法的图像预处理过程
本文使用基于内切圆的定位分割方法进行ROI图像的提取,通过双峰法图像灰度化、轮廓跟踪、图像旋转、距离变换和圆内切正方形等步骤,可以得到每个光谱下的ROI图像,同一手掌在不同光谱下的ROI图像如图2所示。
图2 同一手掌在不同光谱下的ROI图像
2.2 经典CNN的对比
自1998年LeNet网络被提出,应用基本的卷积层、池化层和全连接层进行图像处理,CNN开始发展起来,随后出现了AlexNet、ResNet、DenseNet、VGG系列等CNN,其中AlexNet是早期CNN的代表。近年来,很多学者结合其他算法进行掌纹识别,文献[10]使用AlexNet提取特征,结合豪斯多夫距离进行匹配识别,等错误率在PolyU II数据库中为0.04%。ResNet可以将CNN加深到100层以上,在获取到较深掌纹信息的同时可以很好地训练;DenseNet是在ResNet基础上的进一步扩展,充分利用了ResNet的跳跃连接,但为了网络可以更好地复用特征,DenseNet中每一层输出都直接在通道维进行连接,再连接到之后的所有层。CASIA白光光谱数据库在AlexNet、DenseNet、ResNet-18、ResNet-34、ResNet-50上训练的识别准确率如图3所示。使用CASIA多光谱掌纹数据库中的白光光谱掌纹图片在不同CNN中进行80次训练,记录后5次的平均值,实验结果如表1所示。可以看出,AlexNet在训练次数较少时,识别率基本为0,在训练次数达15次左右时,识别率开始缓慢增长;DenseNet的识别率较低,且在训练过程中达到最佳效果所需次数较多,耗时长;ResNet的识别率均在50%以上,训练20次左右时可以达到最佳训练效果,其中ResNet-34的识别率最高,可达56.46%,比ResNet-18的识别率高0.22%,单次训练时间长10 s。在三种经典CNN中,ResNet的识别率较高,且层数越深,提取的特征越全面,但是当特征提取过于细致,在数据集较小的情况下容易造成过拟合的问题。综合考虑训练时间和识别率,ResNet-18更适用于在CASIA数据集中进行特征提取。
图3 CASIA白光光谱数据库在不同网络上训练的识别准确率
表1 不同CNN在CASIA白光光谱数据库的训练数据
2.3 特征提取
通过CNN构建的图像处理系统不仅能够有效地减小过拟合,还可以对大像素图像有很好的识别效果,本文主要应用CNN在图像领域的优势进行掌纹识别。通过文献[4]中不同CNN在多种公开掌纹数据库的识别率对比,选择ResNet-18对6个光谱掌纹的图片进行训练,并保存每张图片经过训练好的网络后所提取的特征向量。ResNet-18的第一层是输出通道数为128、步幅为2、填充为3的7×7卷积层,批量归一化后连接一个步幅为2的3×3最大池化层,接下来的残差块使用步幅为2的3×3卷积层对数据进行长和宽的减半。ResNet-18共使用4个残差块结构,每次为2个残差块的连接。由于在进入残差块时数据已经减半,所以对第一个残差块不需要减少长和宽,其余部分都会对长和宽进行减半。在残差块之后得到1 024个特征输出,再加入全局平均池化层,然后接上全连接层进行输出。一般在全连接层前加入dropout函数,数值设为0.5。
由于计算机硬件的限制,统一使用124×124像素图片作为网络的输入。实验均在Pytorch下进行,系统配置为i5 1.6 GHz处理器,Nvidia GeForce MX250显卡,16 GB内存以及Windows10操作系统。默认使用Cross-EntropyLoss函数,Adam优化器,学习率为5×10-5,训练次数为30。对6组单光谱掌纹图像在ResNet-18中进行训练,并将网络参数保存,再重载网络参数,输入多光谱图片,可以得到7 200张掌纹照片的特征向量。
2.4 多光谱融合并分类
特征级融合是图像融合的一种,将提取获得的特征融合产生一幅拥有更加完整可靠信息的图像,可以更精准地反映掌纹信息。特征级数据融合原理如图4所示。文献[11-12]中介绍的像素级融合和决策级融合不能同时满足实时性和最大程度保留掌纹信息的要求。本文采用特征级融合方法,将单光谱下的掌纹图片输入到训练好的6个ResNet-18中,进行全连接层之前的特征提取,每张图片提取1 024个特征。对同一张掌纹在不同光谱下的图片特征进行并行融合,融合系数设为a=0.1,b=0.1,c=0.2,d=0.2,e=0.2,f=0.2,可以得到1 200个融合过的特征向量。
图4 特征级数据融合原理
将融合过的特征向量输入SVM中进行分类,SVM的核函数使用poly核,degree参数为3,gamma参数为1,coef0参数为0。打乱并划分数据集,使用数据集中80%的数据进行训练,其余20%的数据进行验证。单光谱数据为测试集在ResNet-18中后5次准确率的平均值,460 nm、630 nm、700 nm、850 nm、940 nm和白光光谱的准确率分别为48.18%、34.08%、49.16%、52.66%、56.08%和56.24%。多光谱数据为测试集进行10组预训练后的平均值,准确率可达98.37%。可以看出,CASIA数据库中单光谱掌纹图片在ResNet-18中的准确率结果总体不高,而使用多光谱掌纹识别技术的平均准确率为98.37%,相比于没有进行多光谱融合时有大幅度提高。因此,多光谱融合之后的分类效果很好, 基于多光谱融合技术的掌纹识别可以满足市场需求。单光谱识别率较低主要有以下原因:一是每类图片只有6张,数据集较小,训练网络过程中存在过拟合的问题;二是单光谱图片中所包含的信息少,不能提取到全面的特征进行身份验证,导致识别率较低。基于CNN的多光谱掌纹识别技术将单光谱中的信息通过卷积核提取并进行特征级融合,然后使用SVM进行分类,将识别率提高到98%以上。但是在代码运行中发现,制作一套完整的多光谱掌纹识别系统,需要提前对各个光谱下的图片进行训练,得到网络参数并保存,实现过程比较复杂,所需时间较长。使用本文技术进行身份识别时,在当前硬件设备条件下需要10 s左右得到对应掌纹的身份信息,在实际应用中可以使用更好的硬件设备进行识别。
3 基于多光谱掌纹识别的打卡机设计
目前指纹识别、人脸识别广泛应用于上班打卡中。指纹识别存在以下不足:对环境的要求很高,对手指的湿度、清洁度等很敏感,脏、油、水都会造成识别不了或影响识别结果;每次使用指纹时都会在指纹采集头上留下用户的指纹印痕,而这些指纹痕迹存在被用来复制指纹的可能性;使用指纹识别会存在通过伪造指纹膜进行打卡的情况。而对于人脸识别,识别精度较低,其自然性、不易察觉性以及非接触性也使人脸识别技术在一些特定领域面临环境复杂性[13]。相对于这两种识别方法,基于多光谱的掌纹识别受环境影响小、识别率高且不易伪造。通过将掌纹采集和掌纹识别两者相结合,实现了基于多光谱的掌纹识别打卡机。其中掌纹采集系统由SCMOS、摄像机、激光产生器三部分组成,采集过程中对手掌照射不同波长的光,并通过摄像机拍摄得到同一个手掌的不同光谱图像,以得到CNN训练所需的数据集。掌纹识别是在嵌入式计算机上搭建Pytorch深度学习平台,并对数据集进行训练以得到掌纹识别模型。在实际应用过程中,需要采集每一位打卡者的多光谱掌纹信息,且重复采集多次。在采集过程中,需要求打卡者将手掌进行不同程度的倾斜以实现更高的准确率,因为在识别时打卡者的手掌会有随机的倾斜;当采集完所有打卡者的掌纹信息后,嵌入式计算机将采集到的信息用于训练,最终得到所需要的掌纹识别模型。
在测试过程中采集了10个人的掌纹信息,光谱数量为7(波长分别为438 nm、472 nm、500 nm、535 nm、624 nm、655 nm、775 nm),每个光谱采集掌纹的数量为12,因此数据集总共包括840张图片。同一手掌在不同光谱下的原始图像如图5所示。通过使用采集到的掌纹图片进行训练和测试,其测试准确率能够达到98%以上。在硬件配置为GeForce GTX 1080 Ti/PCIe/SSE2的电脑上,对采集的多光谱掌纹数据进行ROI的提取、特征提取、特征融合和SVM分类等步骤,平均经过4.2 s即可获得检测结果。
图5 同一手掌在不同光谱下的原始图像
4 小结
本文提出一种基于CNN的多光谱掌纹图像识别方法,该方法通过获取ROI、CNN特征训练、特征提取与特征融合以及基于SVM的特征分类等操作实现身份识别,可以为医疗、刑侦等领域提供技术支持。仿真结果表明,在CASIA多光谱掌纹数据库中使用多光谱掌纹识别技术的识别率明显比单光谱方法高,平均可以达到98%以上,相比相关研究中使用的传统神经网络算法,性能亦有显著提升。未来将进一步针对其他的掌纹识别算法进行性能比较和技术应用等工作。