人脸识别算法SDK
电话(微信):13632514967
一、产品概述
随着人们对安全问题的不断重视,生物特征识别技术以其可靠性,有效性和安全性得到了越来越多的关注。人脸识别技术作为生物特征识别技术的一种,以其独特的友好性,近年来已成为了国际上的一个重点课题,视觉科技是以视觉算法为核心,专注于高精度,小型化的人脸识别技术,公司所研发的人脸识别模型在刷脸支付,智慧园区、智慧校园等多领域应用广泛。
人脸识别 SDK V1.0 标准版是视觉针对各种线下识别场景封装的“业务型”人脸识别算法SDK,主要封装了人脸识别通用功能,如人脸检测、活体检测、人脸搜索等,方便客户二次开 发。客户既可以自由组合原子化接口,也可基于封装的应用模式做集成开发。
二、功能模块
标准版SDK客户端支持安卓系统,主要用于人脸识别终端设备,例如;人脸门禁机、电子班牌、刷脸支付终端、人脸考勤机等。方便,快捷,快速精准的处理和反馈给户所识别的结果。
客户端SDK功能
功能名称 |
功能描述 |
输入 |
输出 |
人脸检测 |
检测人脸(跟踪模式下实时跟踪人脸 ),是所有人脸算法操作的前置步骤 |
BGR格式的人脸照片 |
人脸数据列 表,单个人脸数据包括;人脸框的位置及大小、5个关键点等 |
质量检测 |
检测人脸照片质量,保证照片质量,提升识别率 |
BGR格式的人脸照片、人脸关键点 |
人脸的质量维度,包含;模糊度、姿态等 |
活体检测 |
检测照片中的人脸是否为活体,用于判断是否存在攻击行为,支持单目活体检测、双目活体检测 |
BGR格式的可见光人脸照片、BGR格式的红外人脸, 照片、人脸关键点 |
活体分数 |
人脸搜索 |
根据识别的人脸,从人脸库中搜索出最与之相似的N个人脸 |
人脸特征值、TopN |
N个人脸数据、人脸数据包括;人脸ID,相似度等 |
特征提取 |
提取人脸照片中的人脸特征存入底库中,用于人脸搜索及人脸比对 |
BGR格式的人脸照片,人脸关键点 |
人脸特征值 |
人脸对比 |
比对两张人脸照片的相似度 |
BGR 格式的两张人脸照片 |
相似度 |
底库管理 |
底库管理,包括;添加、删除、修改、查询人脸特征,用于人脸搜索 |
/ |
/ |
三、核心模块
人脸识别技术是以身份检索或校验为目标,通过从给定的静态或动态图像中提取人脸信息等手段,与数据库中已知身份人脸进行匹配的过程。影响人脸识别的关键因素有两个;人脸底库、识别算法。
底库是一个用于识别的人员数据集合,集合是由多个人员数据组成,每个人员的数据由人员编码、 人员分组、人员信息及多张人脸特征组成,将这些人脸特征与人脸 ID 关联在一起,搜索时,匹配到某个人脸特征,即搜到了相关联的人员编码及其对应的人员信息。几个字段解释如下;
关键字段 |
解释 |
人脸特征 |
是通过人脸特征提取算法将一张人脸照片提取为一个可用于识别算法的特征值。通常情况下一张照片即可准确完成人脸识别,为了支持特殊场景,允许一个人 员添加多张人脸照片提取的特征保存到底库中,比如;添加戴眼镜照和不戴眼镜照,化妆照和不化妆照。 |
人员编码 |
由客户应用指定的唯一用户 ID,客户应用可以通过此 ID 找到对应人脸的相关信息。 |
人员分组 |
用于客户应用根据人脸分组做特定业务逻辑处理。 |
人脸信息 |
由客户应用定义内容,比如,人员名称或其他数据。 |
底库是通过人脸注册建立的,人脸注册流程如下
1)获取人脸照片,可从服务端下载或本地拍照获取。
2)检测人脸质量,底库的人脸质量是影响识别准确率的关键因素之一。可以根据场景选择不同的质量分数作为入库标准,低于标准的照片将不能入库。
3)提取人脸特征,用特征提取模型提取照片中的人脸特征。
4)人脸特征入库,将从人脸照片中提取到的人脸特征及人脸 ID、人脸分组、人脸信息添加到底库中。人脸 ID要确保和人脸照片关联一致,以免出现人脸照片与人脸信息不匹配。
人脸识别
典型的人脸识别流程如下图:
基于摄像头的人脸识别是按帧处理的,每帧处理的第一步是将摄像头的视频流格式转换成算法支持的格式,再送到算法中检测并识别人脸。
人脸检测时,检测到的每个人脸会有一个跟踪的ID,该ID用于在视频流的连续帧中关联同一个人脸,后续的识别过程都是基于该ID进行的。
识别过程包括人脸质量检测、特征提取、人脸搜索、活体检测等,前一个步骤通过,才能执行后一个步骤。所有步骤都执行通过,人脸识别才完成。
人脸识别过程中每帧人脸跟踪信息都会以事件的形式通知到应用层,人脸跟踪信息包括:人脸框大小、位置、识别到的人员信息等,应用层可以根据这些信息画人脸框或做其他处理。
四、算法性能
检测最小人脸尺寸 |
30*30 像素 |
识别最小人脸尺寸 |
60*60 像素(识别不带活体)/80*80 像素(识别带活体) |
人脸姿态 |
正常姿态 小角度姿态 大角度姿态 |
召回率 |
标准环境下, 10000 人底库 |
误识率 |
0.5% |
活体检出率 |
99 %@0.5 拒真率 |
注:识别模型会持续更新,每次更新识别模型需要重新抽取特征 |
相关精度指标
场景 |
指标 |
名称介绍 |
识别
|
召回率 |
视频中目标人出现 100 人次,正确识别 99 人次,召回率是 99% |
准确率 |
识别次数是 100 次,其中 99 次为正确识别,准确率是 99% |
|
误识率 |
1@10 万底库,即 10 万底库情况下,100 张图像产生了 1 次误识别,误识率 1% |
|
漏识率 |
1-召回率 |
活体检测及人脸识别测试
活体检测
正样本:真人的人脸
负样本:非真人的照片(照片、手机、面具等)
通过率:设定一个阈值,给定 M 个正样本,其中模型输出的分数高于阈值的样本
(即检测为真人的正样本)数量为m个,通过率=m/M
拒绝率:设定一个阈值,给定N个负样本,其中模型输出的分数低于阈值的样本(检测为攻击的负样本)数量为n个,通过率=n/N
活体的效果依赖因素也非常多,包括图片质量、现场环境、活体阈值等。尤其需要指出的是,活体识别对于不同材质的攻击手段的防范能力是有差别的,下表给出了常见情况的检测标。
人脸识别
正样本集:本人比对本人负样本集:本人比对他人
通过率=比对通过的正样本数(比对相似度高于阈值的数量)/正样本集总数误识率=比对通过的负样本数(比对相似度高于阈值的数量)/负样本集总数
测试平台 |
3516dV300 |
|
测试图像分辨率 |
480*640 (注:测试分辨率和实际面板机原始输入不一样,实际面板机原始输入最大没有限制) |
|
人脸尺寸 |
60*60(识别不带活体) 80*80(识别带活体) |
|
多人支持 |
可支持多人,算法不做人脸个数限制 |
|
耗时定义 |
从数据输入模型到输出结果花费的时间 |
|
SDK 产品规格 |
||
最大底库 |
10 万 |
|
推荐底库 |
1万 |
|
人脸检测 |
人脸检测耗时 |
<35ms |
人脸检测跟踪耗时 |
<18ms |
|
活体 |
双目CPU 模型耗时 |
<65ms |
1:N人脸识别 |
特征提取耗时 |
<45ms |
人脸 search 耗时 |
<5ms(3K 底库) <25ms(1W 底库) |
|
文件大小 |
算法库+模型 |
<45M |
内存使用情况 |
识别加活体 |
<250M |
识别 |
<240M |
测试结果
1)活体检测
双目活体
拒绝率 |
通过率 |
在3516dV300上的平均耗时 |
99.6 |
95.83 |
65ms |
2)人脸识别
1:n 人脸搜索
误识率 |
通过率 |
阈值 |
0.1 |
99.7 |
0.82 |
五、硬件平台
人脸识别SDKV1.0标准版作为线下场景的通用 SDK,将逐步增加对各类平台的兼 容 适 配 , 包含但不限于 : Arm Android 、 Arm Linuxx86 Linux 、 x86Windows 、Hisi3516DV300。硬件的配置、操作系统等都会影响到算法的实际使用效果:
客户端
客户端的性能影响整体的识别速度,一般来说算法的性能和主频成正比,为保证良好的用户体验,视觉根据不同配置的硬件平台,推出了高、低版本的 SDK,以满足不同终端设备的适配需求。如下给出了建议搭配硬件配置的列表
SDK 版本 |
硬件 |
操作系统 |
配置型号 |
识别耗时 |
高配版 |
3516dV300 |
linux |
CPU:双核 900M + 1T NPU 内存:1G RAM+4G ROM |
250ms |
低配版 |
全志A64 |
Android 6.0 及以上版本 |
CPU:4核 1.2GHZ 内存:2G RAM+4G ROM |
550ms |
六、授权模式
人脸识别 SDKV1.0 支持USB模组与MIPI模组(带芯⽚)授权
USB摄像头模组/MIPI模组(带加密IC)
客户从视觉指定的摄像头模组供应商获取USB摄像头模组,对接到自己的主板,导入人脸识别SDK,即可实现人脸识别授权。
其他授权方式,根据客户产品状况洽谈。