大家好,我是陆砚码,今天我们来聊一聊小面积指纹识别算法的那些事儿。
之前我们介绍了算法(一)和算法(二),它们各有优缺点。今天的主角是算法(三),它针对小面积指纹识别的问题,提出了一些新颖的方法,尝试识别更广泛的图像,并且有效减少冗余存储和计算。
算法(三)的核心思想
算法(三)主要利用了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),了解更多编程知识。
