SDK算法功能信息
包大小:600M
最小人脸检测大小:50px * 50px
可识别人脸角度:yaw ≤ ±30°, pitch ≤ ±30°
检测速度:100ms 720p*
追踪速度:30ms 720p*
人脸检测耗时:< 100ms
RGB 图片特征抽取耗时:< 300ms
RGB 活体检测耗时:< 200ms
近红外活体检测耗时:< 50ms
1 万本地人脸库检索速度:< 400ms
备注:以上指标,由最新版 SDK 运行在真实设备上,采用真实数据集所得,但算法性能受实际运行设备、实际数据集等情况影响,以上数字仅供参考。
SDK 采用动态库 dll 方式提供提供一个鉴权激活工具:LicenseTool.exe
兼容性
x86、x64 两个版本,支持 Win7、Win10
推荐基于 vs2015 进行开发
授权方式
按设备授权
离线识别 SDK 授权方式为以设备维度为主,每台硬件设备需要一个独立的授权,此授权的校验是基于设备的硬件指纹(指纹的获取 SDK 初始化时会自动读取并展示),被授权的设备,将在有效期内可以运行 SDK。重新拉取授权的情况:设备授权不变,仅需要重新激活而已。
删除 SDK 或基于 SDK 开发的应用
重新安装 Windows 系统
授权失效的情况:需要重新购买序列号,之前的序列号失效。
激活一台设备后,此设备硬件变更
硬件损坏
序列号
序列号为管理授权的依据。每台被授权的设备,都将对应一个序列号,用于标识对应的设备信息及授权记录。序列号的形式为 16 位随机英文数字组合,如:3G59-M5JK-889A-7LQA。
激活
已购买的序列号,是用于激活的唯一凭证,激活流程主要是将序列号与具体的硬件进行绑定(硬件指纹),从而生成对应硬件设备的授权文(License),SDK 运行前,将会校验授权文件是否和实际硬件信息相匹配。
注意:激活时,设备系统时间需要和当前时间一致,如果差距太大(例如偏差 5min以上),激活则无法完成。
离线激活
此种激活方式,适用于设备完全不可联网的情况,优势在于可避免联网激活,满足业务对网络的严格要求,以及设备批量注册需求。您需要在后台配置好硬件指纹并完成和序列号的绑定,然后将授权文件放到 SDK 的指定位置。
获取序列号:购买获取序列号。
采集硬件指纹:将 SDK 置于设备上,运行激活程序,获取硬件指纹。
配置授权:在后台将硬件指纹绑定到具体序列号上。
获取授权文件:获取授权文件。
设备激活:将授权文件放到 SDK 中,并初始化 SDK 完成授权。
正式购买的序列号,试用期限为永久有效。此「永久」是指绑定到具体设备维度,但如已绑定的硬件设备变更后,授权则可能会失效。
功能介绍
人脸检测与追踪
可在设备端,离线实时检测视频流中的人脸。同时支持处理静态图片或者视频流,并对当前检测到的人脸持续跟踪,动态定位人脸轮廓,稳定贴合人脸。
质量控制
在人脸检测及追踪过程中,实时校验人脸的姿态角度、遮挡、清晰度、光照条件,符合质量条件的人脸图片才会被采集。
人脸采集
针对视频流实时完成人脸图片采集,并输出满足质量过滤条件的人脸图片,可自定义采集人脸大小,采集频率,采集质量等设置。
离线 RGB 可见光活体检测
针对视频流/图片,通过采集人像的破绽(摩尔纹、成像畸形等)来判断目标对象是否为活体,可有效防止屏幕二次翻拍等作弊攻击,可使用单张或多张判断逻辑。
离线 NIR 近红外活体检测
针对视频流/图片,利用近红外成像原理,实现夜间或无自然光条件下的活体判断。其成像特点(如屏幕无法成像,不同材质反射率不同等)可以实现高鲁棒性的活体判断。
离线 Depth 深度图像活体检测(3D 结构光)
通过 3D 建模判断目标对象是否为活体,基于 3D 结构光成像原理,可强效防御图片、视频、屏幕、模具等攻击。
离线 1:1 对比
提供本地化的 1:1 人脸对比功能,高鲁棒性算法,可对应各种姿态、肤色、光照等场景,可有效应用于人证比对、身份核验等场景。
示例工程中包含:
图片与图片的比对:两张人脸图片的 1:1 对比,并返回相似度分值。
图片与视频流比对:一张预设的人脸图片,和摄像头实时采集的符合条件的人脸图片进行对比。
离线 1:N 搜索
本地数据库中保留所有人脸特征值(如需要保留原图,可根据业务需要自行修改工程)。
视频流采集的人脸在人脸库中搜索:视频流中实时采集人脸,并与人脸库中预设的人脸库进行一一对比,返回相似度最高的 user 及对应分值。
离线人脸库管理
人脸数量不做上限,可根据业务需要适当调整,支持人脸库、人脸组、用户、Face几个维度的增删改查设置。
Demo 示例工程
demo 示例工程 TestFaceApi 展示了如何集成人脸识别离线sdk。 即导入BaiduFaceApi.dll,BaiduFaceApi.lib 及头文件 BaiduFaceApi.h。另外为了示例视频人脸跟踪等,用到了一些 opencv 的库文件以及一些实现demo的支持文件,如 image_base64 等。
(这些支持文件均为代码开源或是开源库)
在 TestFaceApi 中的 test_face.cpp 的 main()方法中,有使用 sdk 的各个接口方法示例。
接入 sdk 及其简单,分 3 步 3 行代码。如下:
如上,即为调用 sdk 功能的最简单 3 步 3 行代码,当然调用 SDK 后,在程序退出后,需要释放 sdk 防止内存泄漏,需要删除 sdk 实例化的指针delete api;
示例工程中:分别有以下几个示例 cpp 文件对应几个常用 sdk 的调用 demo。
文件名 功能
setting.cpp 人脸检测、识别等参数设置
compare.cpp 人脸 1:1 比对、1:N 搜索,人脸特征值提取,特征值对比等
liveness.cpp USB 摄像头视频信息人脸实时检测,可见光 RGB、红外 NIR 活体检测、RGB\NIR 双目摄像头活体检测等
manager.cpp 人脸库管理类,包括人脸注册、删除,更新、组管理,人脸信息查询等
cv_help.cpp 绘制人脸跟踪框、人脸关键点位等的工具类
特征抽取模型选择
模型介绍
v1.1 版本起,SDK 提供生活照和证件照两种特征抽取模型,主要适用场景如下:
生活照模型:如手机拍摄的图片、较为清晰的证件照片、USB 镜头实时采集的图片、网络摄像头实时采集的图片等。
证件照模型:如身份证芯片照、各类证件照(工卡、学生卡、会员卡照片等)、人脸的像素普遍小于 80px 的图片等。
使用方法
在 SDK 初始化方法中控制:sdk_init(true); //传入 true 为使用证件照模型,传入 fasle 为普通生活照模型
注意事项
温馨提示:一经选择一个模型,则所有业务流程的特征抽取处理,都会使用此模型,两个模型不可同时作用。如业务中设计证件照的特征抽取,请务必选择使用证件照模型。
错误码及错误信息
错误码
|
错误内容
|
错误描述
|
0
|
SUCCESS
|
成功
|
1
|
SYSTEM ERROR
|
系统错误
|
2
|
UNKNOWN ERROR
|
未知错误
|
1001
|
NOT_AUTH
|
授权校验失败
|
1002
|
REQUEST PARAMS ERROR
|
请求参数错误
|
1003
|
DB_OP_FAILED
|
数据库操作失败
|
1004
|
NO_DATA
|
没有数据
|
1005
|
RECORD_UNEXIST
|
记录不存在
|
1006
|
RECORD_ALREADY_EXIST
|
记录已经存在
|
1007
|
FILE_NOT_EXIST
|
文件不存在
|
1008
|
GET_FEATURE_FAIL
|
提取特征值失败
|
1009
|
FILE_TOO_BIG
|
文件太大
|
1010
|
FACE_RESOURCE_NOT_EXIST
|
人脸资源文件不存在
|
1011
|
FEATURE_LEN_ERROR
|
特征值长度错误
|
1012
|
DETECT_NO_FACE
|
未检测到人脸
|
常见问题
Q:为什么会报 db_operation_error 错误?
A:请检查 sdk 路径是否带中文,这会导致数据库创建失败然后提示 db_operation_error
Q:编译 demo 工程时候出现如 opencv-win\include\opencv2\flann\logger.h(66): error C4996: 'fopen': This function or variable may beunsafe 的错误提示
A:这种错误一般是因为 vs 强制要求安全等级提高所致,可以通过右键工程-属性-C/C++ --预处理器—预处理器定义中加入: _CRT_SECURE_NO_WARNINGS 后重新编译即可解决问题。
Q:工程运行过程中,提示 face-resource 不存在。
A:人脸 sdk,需要一些模型文件,在 demo 工程的 face-resource 文件夹中,该文件夹需要放置在 exe 所在路径的上级目录下。若放置不正确,可能出现找不到模型文件,没法进行人脸识别。
Q:激活后是否可以把激活文件 license.ini 和 license.key 拷贝到其他设备运行?
A:不能,离线 sdk 和设备绑定,每个设备对应一个 key 和一个 license 文件,换设备无法运行。但对同一台设备,可把 win32 下的 license.ini 和 license.key 拷贝到 x64下,则 x64 环境,该设备也等同于激活,可以使用。
Q:exe 不能运行或崩溃
A:编译的工程 exe,需要和 dll 等在一个文件夹里面,如示例工程 win32 和 x64 就有不少动态库 dll 文件,这是 exe 运行所需的库文件,不放在一起的话,可能 exe 不能运行或者崩溃。
Q:vs2019 打开工程编译提示错误不能通过编译?
A:开发文档官方指定使用 vs2015 comunity 版本,因 vs2010 不支持 c++11,但 sdk 使用了c++11 的新功能,vs2017 若编译提示 json 库错误,如 json::reader 的错误,建议更新为 v1.1 版本的 SDK 即可解决。
Q:SDK 是否支持多线程?
A:v1.1 版本已经支持多线程,请在后台下载最新版的 SDK。 Q:Windows 离线 SDK 是否支持 C#,Java 语言?
A:Windows SDK 采用 C++语言编写,支持用 vs2015 版本开发,推荐用 vs2015 Comunity版本。SDK 提供动态库 dll,可用于实现 Java 调用和 C#调用。 Q:Windows 离线 sdk 在 debug 版本报错?
A:目前仅提供 x86 和 x64 的 release 版本的库,不支持 debug 版本,需要调试可在 release版本下通过添加日志调试。
Q:SDK 中的激活工具 licenseTool.exe 和 sdk 的 demo TestFaceApi.exe 都不能运行,崩溃或提示缺少 dll? A:此 SDK 基于 C++编写,需要安装对应运行环境(推荐使用 vs2015),崩溃或提示缺少dll 是因为缺少运行环境。
Q:证件照等图片检测不到人脸,但实际是有人脸的?
A:默认可检测最小人脸大小是 100,若检测不到,可通过设置最小人脸大小调整,例如调整最小检测人脸为 30px,可使用 api->set_min_face _size(30) ,达到调整最小人脸检测大小的目的,然后再调用检测,这样能检测到比较小得图片如证件照等。v1.1 版本中已经集成了证件照模型,推荐您升级 SDK 版本解决此问题。