跳转到主内容
思享编程网:思考分享,玩转编程世界!

小面积指纹识别算法,怎么做到又快又准?

大家好,我是陆砚码,今天我们来聊一聊小面积指纹识别算法的那些事儿。

之前我们介绍了算法(一)和算法(二),它们各有优缺点。今天的主角是算法(三),它针对小面积指纹识别的问题,提出了一些新颖的方法,尝试识别更广泛的图像,并且有效减少冗余存储和计算。

算法(三)的核心思想

算法(三)主要利用了Level3特征,与算法(一)和算法(二)不同,它不再对特征数量进行限制,也不会导致几百kb的模板空间占用和不可控的计算时间。它结合了全局信息和局部细节,筛选出与视觉概念最相关的特征,去除大量的冗余信息,使得算法在执行时间和占用空间上得到数十倍的优化。

算法设计步骤

  • 将图像分为不同的滑动块,检测有效信息,并将检测结果划分为N种(N决定描述大小)。
  • 将局部结果重构,检测局部与局部之间有效信息并生成Chain-Code。

拮抗模型的应用

为了更有效地达到目的,我们提出了一种“拮抗模型”,对图像的细节与细节之间的联系进行紧密结合,采取监督学习的方式进一步训练。算法主要设计思想介于算法(一)与算法(二)之间,认为特征不会是一个孤立的特征,不同特征之间存在“拮抗作用”,形成一个密切的关联体,得到的Chain-Code只需要一维卷积即可得到相似性,为了达到更高的精度,加入AI算法,更好地解决了特征的鲁棒性问题。

从原理上推导的近似算法是个很复杂的方法,但最终得出的公式却很普通常见。去年完成设计前,我们持续了几个月的折磨,也算是走了一条与众不同的小路。

简单提供一个测试对比图数据,通过对wb_db8(128x60)数据库测试,Alg1,2,3分别为专栏提到的算法(一),(二),(三)。B为目前市场商用算法排名前列的方案提供商。

小结:截止到现在,市场上的小面积指纹识别的算法方案基本上已经介绍完毕,只是在这个已经很成熟的方向上做了一点进一步的探索。如果有更有效的解决方法,希望可以互相学习。

以后可能会尝试探讨一部分指纹识别相关的问题,比如指纹的活体检测,指纹特征的安全性等等,等想到哪一部分了再去补充。

2018/1/1更新,对上文一些内容有修改,以为后来发现有一些结论并不准确,最终版的设计流程就把之前的ppt贴出来算了,懒得写了。

算法实现使用了73个人,共计39858幅图像做训练,另外还有1.3万幅噪声图像以及生成模型模拟的2万幅指纹噪声(别问我怎么准确生成更高效率的图像,我心里也是一肚子mmp)。

经过对算法的一些流程和核心卷积算法的优化,目前可以做到在高通8系CPU上单次识别10ms左右,在高通中低端CPU,如高通430上单次识别40ms左右。

模板空间也大大降低,从120kb左右降低到30kb左右,如果加上指纹防伪功能约需要80kb的空间,对市场上大部分指纹芯片可以做到 FRR<1%,FAR<1/20w。

指纹防伪样本很小,所以精确度不是太高,如果有同学有更大的假指纹库,欢迎交流。

目前在测试全面屏的屏下超声以及屏下光学实现方案,等有结果了会贴出一些结果,以及算法的一些小tricks,另外会更新一些关于指纹攻击的规避方案。

1.更新一组本文算法结果。

图像集:178人,80x64,500dpi

市场上主要三家商用算法对比

不同于当前市场上针对小面积指纹算法方案,本算法仅需要约80kb的模板就可以在高通4系(430)CPU上完成快速的识别,高通6系以上毫秒级的速度,市场上多数算法还是依靠传统的机器视觉算法,在模板占用上至少需要200kb,同一颗CPU下至少慢10倍!

而且本文算法只需要注册过程仅需要6-8次即可,较市场上需要注册12-15次大大缩短,但是安全性确实市场上算法的10倍以上!

更新屏下指纹一些内容与测试

目前指纹模组主要存在三种形式:光学式,电容式,超声波式。各自都有优劣,不是我们本篇文章要探讨的,我们只谈算法~~~

先来看一看电容式和屏下超声指纹的图像区别,由于屏下光学指纹的提供方不愿意公开数据,所以我们只谈一下常见的电容指纹和屏下超声指纹,不谈硬件设计优劣:

相对而言,电容式传感器更加成熟,图像成像效果较好;屏下光学传感器由于屏幕封装透光性的原因目前OLED屏幕还是唯一选择,采集图像质量一般;屏下超声传感器大多在30MHz下吧,理论上可以穿透多种介质,成像质量一般,且可以显示更多细微特征。

以下是以本文算法对屏下超声指纹做出的算法测试:28人库,注册使用6幅图像。

algo-256,512,2048,为每幅图像embedding的特征维数。

3.关于终端指纹算法攻击的故事

虽然很鄙视这种挂羊头卖狗肉的行为,但是这个事件也确实暴露出当前市场指纹算法的一部分问题。

注:第三幅上面1/3和下面2/3是不一致的,即模拟指纹的假条纹。

4.指纹及其他

指纹作为接触式生物特征识别应用最广泛的一种认证方式,已经延续了很多年的发展,未来也有可能在应用场景上进一步创新。如果有人问我指纹安全吗,我会回答:不安全。没有绝对的安全,生物特征识别的安全与否本来就是一种概率性的撞库事件,并不是说FAR<100w,那么和6位数字密码的安全度一样高,也必然不是百万次才会被破解一次。。。

anyway,好多人说我写的太严肃了,哈哈哈,其实作为一个算法研究人员,我还是萌萌哒的。

参考文献:

  • Minutiae Extraction From Level 1 Features of Fingerprint, 2016
  • Fingerprint indexing with pose constraint, 2016
  • Fingerprint matching using ridges,2006
  • Methodology for Partial Fingerprint Enrollment and Authentication on Mobile Devices, 2016
  • Aminutia-based partial fingerprint recognition system,2005
  • Mutual-Information-Based Registration of Medical Images: A Survey, 2003
  • Fingerprint Registration by Maximization of Mutual Information, IEEE TIP2006
  • High resolution partial fingerprint alignment using pore–valley descriptors, 2010
  • A New Framework for Quality Assessment of High-Resolution Fingerprint Images, IEEE TPAMI 2015
  • A Fingerprint Verification System Based on Triangular Matching and Dynamic Time Warping,IEEE TPAMI 2000
  • A Decision-Theoretic Generalization of OnLine Learning and an Application to Boosting,1997
  • stadnford cs229

好了,今天的内容就到这里,希望对大家有所帮助。我是陆砚码,关注思享编程网(www.sxgpb.com),了解更多编程知识。

相关文章