【干货】冯建江:低质量指纹识别
作者:互联网
本讲座选自清华大学自动化系冯建江副教授与2015年11月26日在RONG v2.0---“图形图像处理与大数据技术”论坛上所做的题为《低质量指纹识别》的演讲。
冯建江:非常感谢韩老师的邀请,也很高兴在这儿跟大家分享指纹识别的工作。
首先简单介绍一下背景。指纹识别是模式识别领域中应用最早的技术,四十多年前美国FBI就已经开始使用了,经过这么多年的发展,它取得的应用越来越多。这里只是列举了一部分应用,最早应用比较多的是公安刑侦,到后来门禁、考勤用的也比较多。9.11之后在出入境检查方面,美国、英国用的也比较多,我们国家也计划要用这个,最近身份证开始注册指纹。过去几年苹果iPhone手机和比较高端的安卓手机安装了指纹传感器。
今年据说手机的指纹传感器出货量已经过亿了。未来几年手机的出货量肯定还会以一两亿来涨,近两年信用卡巨头,如万事达卡、VISA卡对指纹识别也非常感兴趣。如果在信用卡上也用上以后,指纹识别使用量也会翻一个级别。
虽然指纹识别大家都在用,但是有时候你用得并不是很方便,就是因为指纹识别的成功率跟指纹质量非常相关。对于怎么样提高这个识别率,大概可以分两种方法,一种是改善硬件,把传感器做的更好。但这个方案一方面受物理原理的限制,我们常用的传感器都是要手指去接触,如果你的皮肤不好,它能提高的空间是非常受限制的。另一方面,传感器改善带来的成本非常高。
所以我们在研究中更关注的是改善识别算法。一方面,我们对指纹研究的越多,理论和方法上我们会做得越好。现在数据积累的越来越多,我们可以用机器学习的方法来做指纹识别,算法会越来越准确。按照摩尔定律,处理器的性能越来越好,我们可以跑更复杂的算法。
今天介绍我们在算法方面的工作。低质量指纹是很常见的,有一部分人群(如老年人、体力工作者),他的手磨损非常厉害,指纹变得特别浅,划痕非常多;气侯、身体原因也会导致皮肤过于干燥;犯罪现场指纹的质量通常也很差;如果你按指纹的角度和力量不当也会造成低质量指纹。对于指纹识别算法来说,低质量可以分为两种,一种是噪声非常严重,一种是几何上皮肤的扭曲。
先看第一种噪声,这是拿照相机直接拍的指纹。上面的线对比度不是特别强烈,看得比较模糊。所以市场上用的比较多的指纹传感器就是这两种,一种是利用光学的棱镜,另一种是电容传感器,利用皮肤的导电特性。这两种技术能得到黑白分明的指纹图像,但是这些技术解决不了皮肤潮湿、干燥、划痕带来的问题。
第二种是皮肤的扭曲,这段视频是把手按到传感器上往上搓,左边显示的是第一帧图象,右边是最后一帧。对于这样的指纹,指纹识别算法给的分数就是零分,这两个被认为不是一个指纹。
这是指纹识别的流程图,之前我们介绍的分别是这两个模块,第一,脊线增强,去噪声的。第二是扭曲校正,是处理扭曲的。
第一,脊线增强,这是一个普遍在用的方案。这个方法有一个前提,我要知道脊线的方向,才能做脊线增强。所以大家都在研究怎么样估计指纹的方向场,如果方向场正确,可以得到对比度非常高的指纹。
传统的方法一般是第一步先做一个局部的估计,常用的方法是分析梯度或者频谱分析。第二,做大范围的平滑滤波或者曲面拟合,把噪声去掉。这种方法对于特别强的噪声的处理效果都不好。
我们的方向场估计方法和拼写检查有关。如果用计算机随机生成字母组合,绝大多数都不是合理的单词,只有极少一部分是正确的单词。如果计算机按照随机分布生成方向元素,生成的方向场绝大部分是不合理的,只有一小部分才是合理的方向块。我们可以借鉴Word里面的拼写检查方式,在单词表里面去查,哪个单词离它最近,用那个单词把它替换了。对于方向场,我先用一个比较弱的方法求一个初始的方向场,再用字典里面最相似的方向场把它替换。
有些词错了,但是字典里面很多词跟它的相似度差不多。方向场也有这个问题,对于这个歧义性,拼写检查器如果能够分析上下文,它是可以消除歧义的。
我们在做方向场估计的时候也用到了。这就是估计的流程图,我们关注的是特别脏的、从犯罪现场提取的指纹,上面有很多文字叠加,本身又特别模糊。我们有一个离线的学习阶段,从比较干净的指纹上面学出了方向场的字典,对于这样的指纹我们先用传统的傅里叶变换的方法,求一个初始的方向场。确定后续位置的顺序,考虑整体的兼容性,确定一个最优解,最后得到跟真实范围非常接近的一个。刚才那个方案还是对于拼写检查的模仿。但是后来我们做了一个对指纹统计特性利用得更好的方法。
我们对指纹的不同位置都建自己的方向场,指纹是各项异性的,也就是说每个位置的统计特性是不一样的。我们是对指纹上面每个位置建立自己的字典。一个指纹来了之后,我们会利用这个统计特性先把这个指纹的姿态求出来。有了这个姿态之后,我们可以把跟位置相关的字典用上去,这样纠错能力更强,而且不太容易出错。
这就是一个案例,全是犯罪现场的指纹,上面的红线就是求出来的方向场。
指纹有一个叫FVC-onGoing的第三方评测,你把算法提交到网上,他们自动做评测。我们的这个算法参加了这个评测,两年多了一直是第一名。这是把方向场算法和整个识别系统放在一起做一个评判,上面最好的线是专家手工做的,是专家看着特别干净的库指纹在低质量的现场指纹上标出来的方向场。这是我们希望未来能达到的目标。下面红线是我们做的,绿线是我们早期的方法,最下面是传统的方法。可以看出来我们这个方案对方向场性能的提高很大。
第二部分是扭曲矫正。扭曲带来一个直接的结果就是相同的指纹匹配分数会下降。这三个都是同一个指纹,重叠的区域面积差不多。但是左边这个分数非常高,右边这个特别低,这完全是扭曲造成的。
扭曲指纹对于各种应用都有危害。像门禁、手机解锁等应用,扭曲就会导致你没有办法登陆,降低用户体验。犯罪调查中,扭曲指纹不太容易识别,造成案子破不了。还有一种比较严重的是出入境检查,外国人来中国,公安部门要查他之前是不是用过别的护照信息,这个叫黑名单查询。如果他有案底,他就是有备而来的,如果他故意利用你系统识别不了扭曲指纹的缺陷,那他就逃避过去了,这是很严重的问题。
目前应对指纹扭曲的方法有三种,第一种是修改指纹匹配算法,使它可以容忍一定程度的扭曲,但是这会导致不同的指纹也看起来更像,错误匹配率会上升,对于大库的查询速度会变满。第二种方法是几个专利公布的,在实际应用中还看不到的,他们提出希望在传感器上加一个压力传感器,或者通过跟踪视频录像的方式来做。这个方法的成本很高,也不是实时的,也没有办法对公安已经采集的很大规模的指纹数据库进行处理。第三种方法是IBM Watson实验室于2001年提出来的把指纹校正的思路,他们的思路是将脊线距离归一化。这个方案的实际效果不好。后来所有引用这篇文章的论文都一致的***这个方法。这是第一篇也是唯一一篇关于指纹矫正的。但是我特别看好这篇论文的大致思想,只是他的方法不对。
我的方案是这样的,来了一个指纹之后,我们用机器学习的方法做一个判断。如果发现它是扭曲指纹,我们通过机器学习的方法把它校正。我们可以做一个类比,你去公安局拍照片,他不让你大笑,或者是大哭,一定是拍一张标准表情的照片。但在实际使用的时候,例如监控录像的人很可能是带有表情的。如果加一个表情识别算法,再加一个表情中性化算法,再拿处理后的人脸去识别,识别率就会变高。我们的扭曲检测和扭曲校正就是在做类似的事情。
我们这个方案首先不需要换指纹采集仪,对于公安已经采集的指纹库里的指纹是可以处理的,而且可以处理犯罪现场的指纹。直接把这个模块塞到现在的指纹识别流水线里面就可以了。
这是指纹扭曲检测的示例,红色框的都是我们算法检测出来的扭曲指纹,其他是正常指纹。
这里是扭曲校正的流程图。来了一个指纹以后,我们先提取出它的方向场、周期图,利用这两个特征,我们到一个数据库里面查找最相似的参考指纹。这个参考指纹的扭曲场就被当做是输入指纹的扭曲场。最后就用这个扭曲场对输入指纹做校正。
这个方案的关键在于构建参考扭曲指纹库。我们召集了一些志愿者在做各种不同的扭曲,采集了一批指纹视频。然后利用指纹匹配算法得到了一批真实的扭曲场。利用主成分分析技术对这些扭曲场样本进行统计建模。
这个图显示了两个最强的主成分,不同参数下扭曲场是这样的,有了这些扭曲场之后,我们对一些真实的、正常的指纹做各种各样的扭曲变形,这就构成了参考扭曲指纹库。假设将来来了一个新的指纹,它的方向场和周期图跟参考库里面的某个指纹最相似,我就认为它们的扭曲场是近似一样的。
这是一个扭曲校正的示例。如果直接匹配这两个指纹,分数只有18分,就会把它们错误判断为不同的指纹。但是如果我们把红色的变形网格估计出来以后,把它校正一下,再去匹配,分数就非常高了。
这是跟识别系统结合起来的实验结果,这是一个批量实验,线越靠上面越好,蓝线是原始指纹的识别率曲线,红线是校正后指纹的识别率曲线。如果我们做一下校正,识别率会提高很多,大约百分之二十多。
标签:指纹识别,低质量,指纹,算法,扭曲,方向,冯建江,我们 来源: https://blog.51cto.com/u_15127682/2827682