指静脉算法测试平台研究与实现

2021-12-12 07:50国家安全防范报警系统产品质量检验检测中心北京张旭东陈灿灿
中国安全防范技术与应用 2021年5期
关键词:度值特征提取次数

■ 文/国家安全防范报警系统产品质量检验检测中心(北京) 张旭东 陈灿灿

关键字:指静脉识别 算法性能测试

1 引言

相较于其他生物特征识别,手指静脉识别具有以下优势:1)非接触式采集。一是手指静脉图像不容易受手指表面条件影响,二是非接触式采集对用户来说更为方便、卫生;2)活体识别。手指静脉图像只能采集到活体的指纹;3)高安全性。手指静脉是人体的内部特征,因此难以被盗窃、复制;4)采集设备体积小、便于携带。 与掌静脉和手背静脉采集设备相比,手指静脉的采集设备体积较小,便于携带。指静脉识别不断深入应用到医保、社保、司法监狱、军队、金融、教育等更多身份识别领域。生物特征识别企业纷纷推出各自的指静脉识别算法和产品,但众多算法缺少统一的测试平台对其算法性能进行横向测评比较,客户很难组织大规模的算法评测。本文主要是通过指静脉测试样本库和算法测试平台对指静脉算法进行识别性能测试,为各厂商及用户提供测试服务,为指静脉识别算法选型提供参考。

2 测试关键问题

2.1 性能测试指标

指静脉算法识别性能测试包括错误接受率(FAR)、错误拒绝率(FRR)、等错误率(EER)和指静脉识别响应时间(T)等共4 项技术指标,以及ROC 或DET 曲线。本文根据GB /T 35676-2017《公共安全 指静脉识别应用算法识别性能评测方法》中规定的接口方式和性能参数,对算法进行测试。该标准有两个核心函数,其中一个是提取特征函数,输入指静脉图像,返回该图像的特征。另一个是特征比对函数,输入两个特征,返回这两个特征的比对相似度值。

对指静脉识别算法而言,主要是对两个采集对象的两张指静脉图片、两个指静脉特征或一个指静脉图像和一个指静脉特征进行比对,核心是两个特征进行比对后返回两个特征的比对相似度值。

指静脉图像比对分为两种情况,即同指比对和异指比对。当收到同一手指采集的两张图片特征时即为同指比对,如果返回相似度值较大,被认为是正确的同指比对判断;如果返回相似度值较低,则可能被判定为是一次错误的同指比对。这一方法需要测试样本库中具有同一手指的多次采集数据,才能保证足够多的同指比对次数,对算法同指比对性能进行测试。当收到两个不同手指图像提取的特征时即为异指比对,如果返回的相似度够大,被认为是错误的异指比对判断,如果返回很低的相似度值,则可能认为是一次正确的异指比对判断,这需要测试样本库中,有足够多的不同手指样本进行采集,才能保证足够多的异指比对次数,对算法异指比对性能进行测试。

通过足够大的测试样本库,对同指和异指进行比对测试,记录每次比对算法返回的相似度值。如果想得到比对结果到底是接受还是拒绝,需要一个门限值作为标尺。对于同指比对,相似度值大于门限值时,认为是一次正确比对,相似度值小于门限值时,认为一次错误比对。对于异指比对,相似度值大于门限值时,认为是一次错误比对,相似度值小于门限值时,认为是一次正确比对。统计不同门限值下的同指比对和异指比错误次数,把错误次数分别除以同指和异指比对总次数,就得到错误拒绝率和错误接受率,将门限值作为横坐标,错误拒绝率和错误接受率作为纵坐标就得到两条曲线即FAR(错误接受率)和FRR(错误拒绝率)。正常情况下两条曲线会有一个交点,这个交点就是错误接受率和错误拒绝率同时最低的错误率(EER 等错误率),记录此时的门限值。具体参见图1、图2 和图3。

图1 FAR/FRR 曲线

图2 ROC 曲线

图3 DET 曲线

测试过程中能够记录每次特征提取和特征比对所用时间,最后计算出指静脉识别响应时间,即平均特征提取时间和平均特征比对时间之和。

2.2 测试方法研究

对于面对多家算法厂商的测试,需要保证测试内容的一致性,例如选取哪些测试样本,需要哪些测试样本进行比对,包含特征提取任务和特征比对任务。为保证公平公正,不同厂商需使用完全一致的特征提取任务和特征比对任务,这就要求能够把特征提取任务和特征比对任务保存起来,确保一致。

通过数据库对测试样本进行分类和管理。同时,通过对文件名的解析保存文件多个维度信息,如一枚图像信息包括:文件保存路径、人员编号、指位代码、采集序号、特征文件保存路径等。此外,可以将生成特征文件保存路径预先设定好后保存在数据库中,特征提取时调用此数据库保存到对应位置,为特征比对做好准备。

根据图像列表可生成特征比对任务,同指比对相对较少可全部保留,异指比对次数比同指比对次数多。通过设置滑动窗口范围,在不影响最终结果的前提下控制异指比对总次数,使得异指比对次数与同指比对次数相当,提高测试效率。

特征提取和特征比对是不断重复的工作,目前的样本库测试,需要比对5 万次特征提取和50 万次特征比对,一般算法需要两天时间完成。考虑采用多线程进行特征提取和特征比对,提高测试效率,要注意线程间协同,避免竞争或漏掉测试任务的情况。

通过专业的matplotlib 库绘制FAR/FRR、ROC、DET曲线,直观展示算法识别性能。

3 测试平台实现

出于快速开发、支持多线程、图形化界面、轻松绘制数据图表的考虑,本文采用Python 作为开发语言,选取支持大量并发访问的NoSQL 数据库MongoDB 作为后台数据库,采用WxPython 开发图形化界面,采用ctypes从Python 语言调用Windows DLL 动态链接库,采用PyPubSub 实现WxPython 线程间通信进行多线程特征提取和比对,采用matplotlib 绘制FAR/FRR 曲线、ROC 曲线和DET 曲线,下面分别详细介绍实现方式。

3.1 通过WxPython 实现GUI 界面

一般情况下,Python 程序是命令行程序,不带图形化界面,如果需要图形化界面则要使用专门的库,并用特定方式编写代码。本文选取WxPython作为界面开发工具,以此实现图形化界面。

WxPython 是一个专门为Python 编程语言设计的跨平台GUI 工具包,由C++ 语言编写,允许 Python 程序员简单轻松地创建健壮的、功能强大的图形用户界面程序。WxPython 也是开源的,任何人均可免费使用,并且可以查看和修改源代码。此外,WxPython 是跨平台的,相同的程序无需修改即可在多个平台运行。当前支持的平台包括Microsoft Windows、Mac OS X 和 mac OS,以及 Linux 或其他具有 GTK2 或 GTK3 库的类 Unix 系统。由于编程语言是Python,所以WxPython 程序简单、易编写、易理解。

WxPython 是由事件驱动的,所以界面设计和后台功能实现是分开的,通过专用工具wxFormBuilder设计界面,设计好每个按钮的函数名,用Python 实现函数的具体功能则可以实现图形化界面。具体参见图4。

图4 WxPython 界面设计

图5 为定义按钮的响应函数,后面分别给出函数的具体接口定义、代码片段,但不用在界面代码中具体实现响应函数。

图5 事件驱动

3.2 多线程运行

为了加快测试进程可进行多线程设计,在特征提取时,特征比对和结果计算的缓解采用多线程运行,前台显示线程进度和正在处理的消息。

WxPython 中通过PySubpub 进行线程间通信,实现前台界面显示后台线程进度、收发消息等功能。通过消息订阅的方式,后台线程发送特定消息,前台通过分发消息到相应处理函数,处理函数解析消息具体内容,显示到订阅消息的控件上。具体参见图6。

图6 消息订阅

如图7 所示,处理函数收到消息后,显示到前台控件上。多线程提取特征则如图8 所示。

图7 处理函数将信息显示到前台控件

图8 多线程提取特征

3.3 通过ctypes 调用Windows 动态链接库

本文实现算法测试平台参考GA /T 35676 -2017《公共安全 指静脉识别应用 算法识别性能评测方法》附件A中规定的接口函数要求,需要受测厂家根据这个标准提供动态链接库,测试平台使用Python 语言调用有c 或c++编写生成的动态链接库,需要用到ctypes 库,图9 为具体调用方法。

图9 通过ctypes 调用Windows 动态链接库

3.4 通过Matplotlib 绘制图表

在Python中使用数据科学的常用绘图工具matplotlib绘制数据图表,通过0-1 之间平均分布的1000 个值作为预设相似度阈值,计算错误拒绝率和错误接受率。通过这些数据分别绘制FAR/FRR、ROC 和DET 曲线,并计算相等错误率和对应的相似度阈值,图10 为最终测试结果图。

图10 根据计算结果生成测试结果

4 结语

本文通过对指静脉识别算法性能指标测试指标和测试方法进行研究,提出了一种可行的实现方案;测试平台在提高测试效率上体现在两个方面,一是比对次数可控,通过调节参数控制异指比对次数调节测试时间,二是采用多线程进行特征提取和特征比对,切实缩短测试时间,提高测试效率;测试结果方面能够绘制三种曲线、计算出相等错误率,直观展示算法性能;测试平台调试完成后,项目组将继续完善测试样本库,形成对算法厂商具有一定挑战性的测试库,提高测试权威性。

猜你喜欢
度值特征提取次数
探讨公路项目路基连续压实质量检测技术
机场航站楼年雷击次数计算
2020年,我国汽车召回次数同比减少10.8%,召回数量同比增长3.9%
一类无界算子的二次数值域和谱
基于Daubechies(dbN)的飞行器音频特征提取
依据“次数”求概率
Bagging RCSP脑电特征提取算法
无线传输中短码长喷泉码的度分布优化算法*
微博网络较大度值用户特征分析
基于MED和循环域解调的多故障特征提取