自人脸识别免费SDK——ArcFace3.0上线以来,凭借对人脸识别、活体检测、年龄检测、性别检测等核心算法模型进行全面升级,大幅提升算法鲁棒性,显著降低接入门槛,同时支持Windows、iOS、Android(包含Android10)、Linux,在性能和开发效率上进行了整体提升,又保持着了免费、离线的初心,成为广大开发者落地AI应用的利器。
在实际使用中,开发者往往会提出一系列细节问题,为帮助开发者快速上手,本节《人脸识别技术公开课—Windows c++专场》将以技术解析和专项答疑等形式帮助开发者解决难题。
虹软技术公开课-Windows c++专场-虹软视觉开放平台ai.arcsoft.com.cn要点01【3分钟跑通C++ 人脸识别demo】
SampleCode配置过程:
课程基于虹软人脸识别SDK包中提供的示例代码,以实操的形式介绍了如何快速接入使用。接入过程在课程视频中有详细介绍。建议观看视频后自行尝试配置,即可对虹软人脸识别技术有一个初步的了解。
Demo配置过程:
虹软人脸识别SDK包中还包含可视化的Demo工程,根据如下步骤配置完成后,可运行调试,了解调用逻辑以及算法效果。
【1】从ArcFace SDK 包中获取Demo,用VS2015启动项目。
【2】替换ArcFace SDK头文件和库文件。
【3】将从官网获取的APPID/SDKKEY配置到setting.ini文件中。
【4】将OpenCV和ArcFace DLL文件拷贝到执行目录下。
【5】运行提示缺失系统库,根据提示将缺失的系统库拷贝到执行目录下。
要点02【ArcFace重点接口及参数介绍】
重要接口:InitEngine接口
初始化接口可以说是最重要的接口,若初始化失败则其他接口无法正常调用,同时,初始化中的参数设置也与算法能够呈现出的效果息息相关。
初始化失败时,根据错误码查询原因即可。参数设置是开发者最关心的核心问题,也是保障在实际应用场景中最大化发挥算法效果的关键。视频中主要介绍以下几个参数在实际场景下如何应用。
detectMode: 检测模式
detectFaceOrientPriority:人脸检测角度优先级
detectFaceScaleVal:数值越大,能检测越小的人脸
combinedMask:根据功能选择组合方式,功能选择越多,占用的内存越大
重要参数Ⅰ:步长
含义:步长可以理解为一个图像通道中一行像素的字节数。
作用:新版本引入步长的概念。老用户都知道之前版本的接口图像传输方式,对宽度有四字节对齐的要求。新版本引入图像ASF_ImageData图像数据结构体,将之前的图像参数封装在一起,并引入步长参数,主要为兼容更高字节对齐的图像。
以下是一张大小为1000x554的图片,以不同步长解析的结果:
重要参数Ⅱ:compareModel参数
含义:目前支持生活照和证件照两种比对模式。
作用:在ARCFace 3.0产品中新增比对模式的选择,避免用户需要既接入人证模块场景,又要引入人证SDK。
重要参数Ⅲ:combinedMask参数
Process接口中combinedMask参数,与初始化接口中该参数的含义不一样。Process接口中的参数与初始化接口中该参数存在依赖关系,且有自身的取值范围。如下图所示,结合视频课程可以帮助开发者理解得更深刻。
要点03【门禁系统业务流程解析】
下图为常见多人脸门禁场景的逻辑流程图,可以从以下角度进行分析:
【线程角度】
主线程:包含人脸追踪以及画面预览功能。
FR线程:开启多个线程对多人脸同时进行特征提取以及比对。
【优化策略】
FaceID:根据FaceID标识一个人,从进入画面到离开画面,对这一人脸只做一次识别即可,大大降低系统资源占用。
尝试次数:同一张人脸,特征提取失败可以做有限次数的尝试,提高交互效果。
要点04【常见问题答疑】
Ⅰ多线程调用问题
a) 同一个引擎可以使用多线程调用不同算法。
b) 多线程调用同一个算法接口需要启用不同的引擎。
Ⅱ VIDEO和IMAGE模式的区别
VIDEO模式
a) 对视频流中的人脸进行追踪,人脸框平滑过渡,不会出现跳框的现象。
b) 用于预览帧数据的人脸追踪,处理速度快,可避免出现卡顿问题。
c) 在视频模式引入faceId,该值用于标记一张人脸,当一个人脸从进入画面到离开画面,faceId 值不变。可用于业务中优化程序性能。
IMAGE模式
a) 针对单张图片进行人脸检测精度更高。
b) 在注册人脸库时,我们建议使用精度更高的IMAGE模式。
Ⅲ Windows版本在进行IMAGE模式人脸检测时,回传的faceId数组为何为空?
faceId是用来标识一个人从进入画面直到离开画面的这段时间,对人脸追踪的一个标识,所以对单张静态图片来说,faceId在image模式下几乎没有实际意义的。
Ⅳ 如何将人脸识别1:1比对进行开发改为1:N搜索?
人脸库可以在程序启动时进行特征提取或者将人脸特征值保存在数据库,程序启动后读入缓存中,如果人脸库在数据不大的话,比如1000内(这个1000的值也只是举例,具体需要根据设备性能以及业务场景界定这个数据),可以在识别照特征提取后通过循环进行1:N的比对。在人脸库比较大的时候,比如10000左右,并且设备性能也比较好,可以采用多线程进行比对。
本次公开课程视频完整内容,请点击下方链接:
虹软技术公开课-Windows c++专场-虹软视觉开放平台ai.arcsoft.com.cn