刘义鹏, 曾宏翔, 王海霞, 杨熙丞, 陈 朋
(浙江工业大学 信息工程学院,浙江 杭州 310023)
汗孔已被证明是最有效的指纹识别信息[1]。汗孔识别主要包括汗孔提取与汗孔匹配两部分。在汗孔提取上,Stosz A J D和Alyea L A等人[2]通过骨架化指纹图像,跟踪骨架轮廓来提取汗孔。Jain A等人[3]利用墨西哥帽小波变换定义了汗孔模型。Parsons N R等人[4]引入基于高斯差分(difference of Gaussian,DOG)的方法提取了汗孔,具有很好的抗噪效果。在汗孔匹配方面,Jain A K等人使用细节和相关2个匹配器用于的二级特征的匹配,然后使用改进的迭代最近点(iterative closest point,ICP)算法匹配汗孔。Zhao Q等人[5]提出了一种汗孔—谷线描述符(pore-valley descriptor,PVD),解决汗孔特征的旋转和平移不变性,提高检测的准确性。
嵌入式设备已经具有并行模块,其中图形处理器(graphics processing unit,GPU)并行方案更适用于汗孔等更精细的三级指纹特征[6]。Wang C等人[7]使用移动GPU实现了卷积神经网络(convolutional neural network,CNN)对象检测算法,提高了算法在异构处理器上的能效。Qi X等人[8]基于移动GPU针对人脸关键帧进行分析,在视频监控复杂场景中获得很高的成功率。利用嵌入式GPU加速指纹汗孔识别将是个人身份认证更为安全和高效的途径。
本文利用NVIDIA Jetson TX2平台,采用DOG模型提取汗孔,并使用PVD描述符进行匹配,提出基于嵌入式中央处理器(central processing unit,CPU)和GPU的异构协同计算方案,实现并行加速。
图1为汗孔提取的过程。图1(a),在接触式的光学传感器拍摄的高分辨率指纹图像中,汗孔是处于脊线上的亮斑,具有类圆形结构。利用DOG算法实现汗孔提取,其中大高斯核模糊汗孔信息,小高斯核突显脊线上的汗孔,并去除部分汗孔噪声,DOG算法如下
F1=Gσ1*I,F2=Gσ2*I
(1)
(2)
P=F1-F2
(3)
式中I为指纹图像;Gσ(x,y)为高斯函数;σ1和σ2为大小高斯滤波核;P为汗孔初步提取结果。为了获得更好的DOG滤波效果,利用线性变换的方法拉伸图像的对比度,观察图1(e)发现,除汗孔之外,DOG还能识别脊线边界与其他非汗孔噪声。图1(f)为最终得到的汗孔。
图1 汗孔提取过程
构建特征描述以便于识别。Zhao Q等人[5]的PVD,将汗孔位置、周围的脊方向场和谷线结构进行归一化表示,具有旋转和平移不变性。PVD定义为以下特征向量
(4)
(5)
PVD特征由4个部分组成:
1)汗孔的位置坐标。
2)汗孔所在位置的方向信息θ,采用文献[9]中基于梯度的方向场估计方法计算得到
(6)
式中Nz为以(x,y)为中心的方形邻域;Ix(u,v)和Iy(u,v)分别为指纹图在x和y方向的梯度。
3)汗孔邻域的脊方向非一致性(orientation inconsistency,OIC)
[sin(2θ(u,v))-msin]2}
(7)
(8)
(9)
式中Np为汗孔所在圆形邻域,其半径为最大脊间距的3倍;|Np|为邻域中的像素个数。
图2 谷结构采样
1)使用OIC值进行汗孔的粗匹配。如果汗孔对之间的OIC差异大于给定的阈值Toic则不会进入精匹配步骤。
(10)
非相似性越小,两个汗孔越相似。经过精匹配之后,找到与之非相似性最低的若干汗孔,形成汗孔之间的初始对应关系。
(11)
则两对汗孔得分均加1;否则,相似性高的孔对得分减1,另一对保持不变。最后得分为非负的即为最终匹配的汗孔对应;否则,两个指纹不能对齐。
图3 双重检查
通过对指纹汗孔识别算法进行任务分解,有效利用NVIDIA Jetson TX2异构处理器的计算处理优势,将计算密集型的负载调度到GPU以实现算法的加速与优化。
基于PVD算法的并行加速程序分为CPU处理的串行代码和GPU的并行代码,算法执行流程如图4所示。
图4 并行程序执行流程
1)在CPU上对原始图像进行填补和尺寸对齐,并利用GPU完成图像对比度增强,归一化等预处理步骤;
2)根据DOG模型检测汗孔,利用开源计算机视觉库(open source computer vision library,OpenCV) 与计算统一设备架构(compute unified device architecture,CUDA)模块完成图像的大小高斯核滤波,自定义CUDA核函数,对滤波结果二值化并作差,得到初始汗孔图;
3)在CPU上根据4个约束条件,筛选出符合条件的汗孔,并计算汗孔的质心坐标;
4)利用OpenCV CUDA模块完成Sobel梯度计算,并自定义CUDA核函数计算指纹方向场和脊方向非一致性;
5)利用CPU对二值化后的大高斯核模糊图像进行细化迭代处理,获取谷线结构图;
6)利用GPU并行化提取每个汗孔的邻域谷结构特征;
7)利用GPU计算所有汗孔对之间的非相似性,在CPU上双重检查并计算得分。
在汗孔提取阶段,可以通过CUDA Stream与Pthreads线程技术,对批量的图片同时处理,以提高程序的效率。因此,在其中一幅图像进行内核运算时,其他图像可以进行数据的传输与结果的拷贝。通过CUDA流来隐藏数据传输的时间,并使GPU与CPU处于并发运行状态。
以汗孔为中心建立如图5所示的矩形感兴趣区域(region of interest,ROI),通过遍历ROI区域,找到满足以下条件的点:1) 像素值非0 (在脊线上) ;2) 与汗孔所构成的直线,与其中一条采样直线的夹角足够小,来保证为在直线段上的有效交点;3) 与汗孔的距离小于圆形邻域的半径,来消除在矩形ROI中的无效采样;4)对同一直线段上的点进行排序筛选确定不同脊线上的唯一交点。利用CUDA动态并行技术,实现并行化加速,Parent Grid基于汗孔划分,每个汗孔作为Parent Grid的子线程在自己的ROI区域建立child Grid,然后调用子内核对ROI区域进行访问和计算。
图5 汗孔ROI区域
实验数据为香港理工大学提供的1 200 dpi高清指纹库(PolyU High Resolution Fingerprint Database)。为了最大化GPU的利用率,对线程和线程块资源进行合理的分配。表1给出了对主要程序线程资源的分配情况。
表1 CUDA线程分配
测试程序对汗孔识别算法的影响,分别统计2种程序的计算结果。表2为5张不同指纹图像的汗孔数量,验证在汗孔检测方面无明显差异;对检测到的汗孔作标记,如图6所示,经过筛选和比对后的汗孔都在脊线上,证明程序在汗孔检测具有较高精度。
表2 汗孔检测数统计
图6 汗孔检测结果
验证异构并行程序的执行效率,将程序独立执行30次后,取平均运行时间作为统计结果。可以看到,在NVIDIA Jetson TX2平台上CUDA并行程序有着显著的加速效果,与在ARM CPU上运行的串行程序相比,提高了接近10倍的运算效率,在脊方向场的计算中甚至达到180倍以上的加速比。由此可见提出的并行设计方案在准确率和运行速度方面均达到了较好的效果。并行程序的优化效果如表3所示。
表3 并行优化效果对比
针对使用DOG模型提取汗孔、PVD特征的指纹匹配算法,在嵌入式平台进行了移植,并提出了基于异构嵌入式系统的并行实现方案,利用CUDA和OpenCV的多种优化手段,达到了提高程序执行效率的目的。实验证明:与单纯利用异构处理器中的CPU相比,异构优化下的CUDA并行程序有效提升了算法的执行效率,并且在汗孔检测与特征匹配中表现良好。
参考文献:
[1] 李陈美,李霓莎.指纹汗孔特征在指纹检验鉴定中的价值[J].科技经济导刊,2016(7):198-199.
[2] Stosz A J D,Alyea L A.Automated system for fingerprint authentication using pores and ridge structure[C]∥Proc of Int’l Symp on Optics,Imaging,and Instrumentation,San Diego:SPIE,1994:210-223.
[3] Jain A,Chen Y,Demirkus M.Pores and ridges:Fingerprint mat-ching using level 3 features[C]∥Proc of Int’l Conf on Pattern Recognition,Hong Kong:IEEE,2006:477-480.
[4] Parsons N R,Smith J Q,Thönnes E,et al.Rotationally invariant statistics for examining the evidence from the pores in fingerprint-s[J].Law Probability and Risk,2008,7(1):1-14.
[5] Zhao Q,Zhang D,Zhang L,et al.High resolution partial fingerprint alignment using pore-valley descriptors[J].Pattern Recognition,2010,43(3):1050-1061.
[6] Zhang C,Li P,Sun G,et al.Optimizing FPGA-based accelerator design for deep convolutional neural networks[C]∥Proc of the 2015 ACM/SIGDA Int’l Symp on Field Programmable Gate Arrays,Monterey:ACM,2015:161-170.
[7] Wang C,Wang Y,Han Y,et al.CNN-based object detection solutions for embedded heterogeneous multicore SoCs[C]∥Proc of the 22rd Asia and South Pacific Design Automation Conf,Chiba:IEEE,2017:105-110.
[8] Qi X,Liu C,Schuckers S.Key-frame analysis for face related video on GPU-accelerated embedded platform[C]∥Proc of Int’l Conf on Computational Science and Computational Intelligence,Las Vegas:IEEE,2016:682-687.
[9] 秦 强.一种改进的指纹方向图算法[J].科技风,2016(24):48.