算法(三)针对微小面积的指纹出现的问题,提出并实践了新颖的方法,尝试识别更广泛的图像,并且有效减少冗余存储和计算。针对指纹来说可以近似理解利用了Level3特征,不同与算法(一)的对特征数量的限制,也不同于算法(二)会导致几百kb的模板空间占用与不可控的计算时间。这部主要探讨在空间和效率上的平衡。
算法(一)和算法(二)对图像的表述问题在于不能有效利用图像细节信息和只能利用部分图像信息。类似地,可以解释为概括性解释和局部性解释,算法(三)结合了全局信息和局部细节的方式,筛选出与视觉概念最相关的特征,去除大量的冗余信息,使得算法在执行时间和占用空间上得到数十倍的优化。
主要设计思想利用图像区域不变性与局部渐变性,对于每一个patch生成一个带有渐变信息的序列,对序列进行学习与训练,结合AI方法,使之鲁棒性得到保证。
算法设计主要分为两步:
1.将图像分为不同的滑动块,检测有效信息,并将检测结果划分为N种(N决定描述大小)。
2.将局部结果重构,检测局部与局部之间有效信息并生成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倍以上!
2. 更新屏下指纹一些内容与测试
目前指纹模组主要存在三种形式:光学式,电容式,超声波式。各自都有优劣,不是我们本篇文章要探讨的,我们只谈算法~~~
先来看一看电容式和屏下超声指纹的图像区别,由于屏下光学指纹的提供方不愿意公开数据,所以我们只谈一下常见的电容指纹和屏下超声指纹,不谈硬件设计优劣:
相对而言,电容式传感器更加成熟,图像成像效果较好;屏下光学传感器由于屏幕封装透光性的原因目前OLED屏幕还是唯一选择,采集图像质量一般;屏下超声传感器大多在30MHz下吧,理论上可以穿透多种介质,成像质量一般,且可以显示更多细微特征。
以下是以本文算法对屏下超声指纹做出的算法测试:28人库,注册使用6幅图像。
algo-256,512,2048,为每幅图像embedding的特征维数。
3.关于终端指纹算法攻击的故事
虽然很鄙视这种挂羊头卖狗肉的行为,但是这个事件也确实暴露出当前市场指纹算法的一部分问题。
这个指纹破解方案其实是在指纹的地方贴上东西,但是,但是贴上东西除非用户瞎了眼,不然一眼就能看出来,所以说其实这个新闻就是一个噱头,但是针对这个问题呢,本文算法可以从源头上杜绝,有效避免。。。。
以256维特征为例,根据特征自相关图像的是连续图像,如图所示:
注:第三幅上面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