完善个人信息

完善您的账号信息,便于为您提供更精准的服务

跳过
开发者类型:
企业名称:
联系人姓名:
真实姓名:
行业:
地区:

 无标题文档

ArcSoft ArcFace SDK Windows 平台 接入指南 V2.2

1. 简介

1.1 产品概述

ArcFace 离线SDK,包含人脸检测、性别检测、年龄检测、人脸识别、RGB活体检测、IR活体检测等能力,初次使用时需联网激活,激活后即可在本地无网络环境下工作,可根据具体的业务需求结合人脸识别SDK灵活地进行应用层开发。

1.2 环境要求

1.2.1 系统要求

Win7及以上

1.2.2 开发环境

VS2013及以上

1.2.3 支持的颜色空间格式

常量名 常量值 颜色格式说明
ASVL_PAF_NV21 2050 8-bit Y 通道,8-bit 2x2 采样 V 与 U 分量交织通道
ASVL_PAF_NV12 2049 8-bit Y 通道,8-bit 2x2 采样 U 与 V 分量交织通道
ASVL_PAF_RGB24_B8G8R8 513 RGB 分量交织,按 B, G, R, B 字节序排布
ASVL_PAF_I420 1537 8-bit Y 通道, 8-bit 2x2 采样 U 通道, 8-bit 2x2 采样 V 通道
ASVL_PAF_YUYV 1289 YUV 分量交织, V 与 U 分量 2x1 采样,按 Y0, U0, Y1, V0 字节序排布
ASVL_PAF_GRAY 1793 8-bit IR图像
ASVL_PAF_DEPTH_U16 3074 16-bit IR图像

1.3 产品功能简介

1.3.1 人脸检测

对传入的图像数据进行人脸检测,返回人脸的边框以及朝向信息,可用于后续的人脸识别、活体检测等操作;
支持image模式和video模式;
支持单人脸、多人脸检测,最多支持检测人脸检测数为50。

1.3.2 人脸跟踪

对来自于视频流中的图像数据,进行人脸检测,并对检测到的人脸进行持续跟踪。

1.3.3 人脸属性检测

人脸属性分析,支持性别、年龄等。

1.3.4 人脸三维角度检测

分析人脸的三维角度信息,具体为:俯仰角(pitch), 横滚角(roll), 偏航角(yaw)。

1.3.5 人脸特征提取

提取人脸视觉特征信息。

1.3.6 人脸比对

对两个人脸特征数据进行比对,来判断是否为同一个人,返回比对相似度值。

1.3.7 活体检测

离线活体检测,静默式识别,在人脸识别过程中判断操作用户是否为真人,有效防御照片、视频、纸张等不同类型的作弊攻击,提高业务安全性,让人脸识别更安全、更快捷,体验更佳。支持单目RGB活体检测、双目(IR/RGB)活体检测,可满足各类人脸识别终端产品活体检测应用。

1.4 SDK授权说明

SDK授权按设备进行授权,每台硬件设备需要一个独立的授权,此授权的校验是基于设备的唯一标识,被授权的设备在初次授权时需在线进行授权,授权成功后可以离线运行SDK。

  • 在线授权:
    a) 首次激活需保证与公网连通;
    b) 调用在线激活接口激活SDK;
  • 注意事项:
    a) 设备授权后,若设备授权信息被删除(重装系统/应用被卸载等),需联网重新激活;
    b) 硬件信息发生变更,需要重新激活;

2. SDK接入指南

2.1 获取SDK

2.1.1 注册开发者账号

访问ArcSoft AI开放平台门户:https://ai.arcsoft.com.cn,注册开发者账号并登录。

2.1.2 SDK下载

创建对应的应用, 添加SDK

选择对应平台,确认后即可下载SDK和查看激活码。

点击【查看激活码】即可查看所需要APPID、SDKKEY,点击【下载SDK】获取SDK开发包。

2.1.3 SDK包结构

如果你下载的是32位的SDK,其包结构如下:

|---doc
|   |---ARCSOFT_ARC_FACE_DEVELOPER'S_GUIDE.PDF           开发说明文档
|---inc
|   |---amcomdef.h                                       平台文件
|   |---asvloffscreen.h                                  平台文件
|   |---arcsoft_face_sdk.h                               接口文件
|   |---merror.h                                         错误码文件
|---lib
|---|---Win32
|   |---|---libarcsoft_face.dll                          算法库
|   |---|---libarcsoft_face_engine.dll                   引擎库
|   |---|---libarcsoft_face_engine.lib                   引擎库
|---samplecode
|   |---samplecode.txt                                   示例代码
|---releasenotes.txt                                     说明文件
        

如果你下载的是64位的SDK,其包结构如下:

|---doc
|   |---ARCSOFT_ARC_FACE_DEVELOPER'S_GUIDE.PDF           开发说明文档
|---inc
|   |---amcomdef.h                                       平台文件
|   |---asvloffscreen.h                                  平台文件
|   |---arcsoft_face_sdk.h                               接口文件
|   |---merror.h                                         错误码文件
|---lib
|---|---Win64
|   |---|---libarcsoft_face.dll                          算法库
|   |---|---libarcsoft_face_engine.dll                   引擎库
|   |---|---libarcsoft_face_engine.lib                   引擎库
|---samplecode
|   |---samplecode.txt                                   示例代码
|---releasenotes.txt                                     说明文件
        

2.1.4 工程配置

VS配置SDK步骤
1、 添加工程的头文件目录:
a) 右键单击工程名, 选择属性—-配置属性—-C/C++—-常规—-附加包含目录
b) 添加头文件存放目录路径

2、 添加文件引用的lib静态库路径:
a) 右键单击工程名,选择属性—-配置属性—-链接器—-常规—-附加库目录
b) 添加lib文件存放目录
3、 添加工程引用的lib库:
a) 右键单击工程名,选择属性—-配置属性—-链接器—-输入—-附加依赖项
b) 添加依赖的lib库名称

4、 添加工程引用的dll动态库:
a) 把引用的dll放到工程的可执行文件所在的目录下(例如:debug、release或工程目录下)

2.1.5 调用流程图

2.1.6 阈值推荐

a) 人脸比对阈值,相似度区间为[0~1],推荐阈值为0.8;
b) RGB活体检测阈值,设置区间为[0~1],默认阈值0.75;
c) IR活体检测阈值,设置区间为[0~1],默认阈值0.7;
以上阈值可根据实际使用场景具体调整。

3. 常见问题

3.1 FAQ

Q:如何将人脸识别1:1进行开发改为1:n?

A:先将人脸特征数据用本地文件、数据库或者其他的方式存储下来,若检测出结果需要显示图像可以保存对应的图像。之后循环对特征值进行对比,相似度最高者若超过您设置的阈值则输出相关信息。

Q: 初始化引擎时检测方向应该怎么选择?

A:SDK初始化引擎中可选择仅对0度、90度、180度、270度单角度进行人脸检测,对于video模式也可选择全角度进行检测;根据应用场景,推荐使用单角度进行人脸检测,因为选择全角度的情况下,算法中会对每个角度检测一遍,导致性能相对于单角度较慢。image模式下为提高识别率不支持全角度检测。

Q: 初始化引擎时(detectFaceScaleVal)参数多大比较合适?

A:用于数值化表示的最小人脸尺寸,该尺寸代表人脸尺寸相对于图片长边的占比。VIDEO 模式有效值范围[2,32],推荐值为16 ;IMAGE 模式有效值范围[2,32],推荐值为 30,特殊情况下可根据具体场景进行设置。

Q: 初始化引擎之后调用其他接口返回错误码86018,该怎么解决?

A:86018即需要检测的属性未初始化,需要查看调用接口的属性值有没有在初始化引擎时在combinedMask参数中加入。

Q: 调用detectFaces、extractFaceFeature和process接口返回90127错误码,该怎么解决?

A:ArcFace SDK对图像尺寸做了限制,宽度为4的倍数,YUYV/I420/NV21/NV12格式的图片高度为2的倍数,BGR24/GRAY/U16格式的图片高度不限制;如果遇到90127请检查传入的图片尺寸是否符合要求,若不符合可对图片进行适当的裁剪。

Q: 人脸检测结果的人脸框Rect为何有时会溢出传入图像的边界?

A:Rect溢出边界可能是人脸只有一部分在图像中,算法会对人脸的位置进行估计。

Q: 为何调用引擎有时会出现crash?

A:若在引擎调用过程中进行销毁引擎则可能会导致crash。在使用过程中应避免在销毁引擎时还在使用引擎,尤其是做特征提取或活体检测等耗时操作时销毁引擎,如加锁解决。

Q: MERR_FSDK_FACEFEATURE_LOW_CONFIDENCE_LEVEL,人脸检测结果置信度低是什么情况导致的?

A:图片模糊或者传入的人脸框不正确。若是使用双目摄像头,则很有可能是两者成像差距很大或两者画面成镜像或旋转的关系。

Q:哪些因素会影响人脸检测、人脸跟踪、人脸特征提取等SDK调用所用时间?

A:硬件性能、图片质量等。

Q: 如何进行IR活体检测?

A:推荐的方案采用双目(RGB/ IR)摄像头,RGB摄像头数据用于人脸检测,将人脸检测的结果用于IR活体检测。需要注意的是,IR活体检测不支持BGR24和YUYV颜色空间的图像数据。

Q: 初始化引擎时,传入检测模式为Image模式,检测方向为全角度,为何会创建失败?

A:为了提高人脸检测识别率,该版本的IMAGE模式不支持全角度检测,开发者需要根据图像中的人脸方向确定人脸检测的角度。

Q: Windows版本在进行Image模式人脸检测时,回传的faceId数组为何为空?

A:faceId属性是video模式下的特有属性,在一个人脸进入画面到离开,该值不会改变,image模式下不支持faceId。

Q: 工程移植为何会报各种依赖库的错误?

A:在VS工程中常常要设置头文件的包含路径和库路径,如果使用绝对路径,拷贝工程到其他路径下会导致无法找到依赖库,建议尽量配置相对路径。VS相对路径以工程文件(XXXX.vcproj)为起点。

3.2 其他帮助

虹助手微信:Hongzhushou88;

QQ交流群:659920696;

SDK交流论坛:https://ai.arcsoft.com.cn/bbs/