随着人脸识别技术应用范围不断扩展,如何在Windows C#上基于免费SDK实现人脸识别应用开发,正成为开发者们关心的话题之一。
对于该需求,我推荐虹软视觉开放平台的ArcFace 3.0,免费、离线且可商用,包含人脸识别、活体检测、年龄检测、性别检测等丰富功能,算法鲁棒性强,接入门槛低,同时支持Windows、iOS、Android(包含Android10)、Linux,是广大开发者落地AI应用的利器。
为帮助开发者快速上手,虹软工程师团队针对C#开发打磨了一期课程,以技术解析和专项答疑等形式帮助开发者解决难题。建议有兴趣尝试ArcFace3.0的C#开发者可以提前学习,在实际开发中可事半功倍。
本期课程要点如下,查看完整课程视频请点击文末视频链接:
一、要点一【3分钟跑通C# demo】
课程基于虹软人脸识别SDK包中提供的示例代码,以实操的形式介绍了如何快速接入使用。接入过程在课程视频中有详细介绍。建议观看视频后自行尝试配置,即可对虹软人脸识别技术有一个初步的了解。
Demo配置过程如下:
1. 下载Demo
2. 检查本地系统环境是否符合要求:
3. 在虹软视觉开放平台下载SDK,获取APPID、SDKKEY
4. 配置运行Demo:
a.在App.config文件中配置APPID、SDKKEY
b.将SDK lib文件夹中dll文件拷贝到运行根目录下
c.如本地.NET Framework的版本高于4.5.1,直接修改项目的目标框架
二、要点二【ArcFace重点接口及参数介绍】
1.引擎初始化接口:ASFInitEngine()
【说明】
引擎初始化接口用于初始化引擎,初始化中的参数设置用于定义引擎的属性和算法功能组合,与算法能够呈现出的效果息息相关。
初始化失败时,根据错误码查询原因即可。参数设置是开发者最关心的核心问题,也是保障在实际应用场景中最大化发挥算法效果的关键。视频中主要介绍以下几个参数在实际场景下如何应用。
【重要参数说明】
ASF_DETECT_MODE_VIDEO video模式:适用于摄像头预览,视频文件识别
ASF_DETECT_MODE_IMAGE image模式:适用于静态图片识别。
2.人脸特征提取接口:ASFFaceFeatureExtract()
【说明】当人脸检测完成时,可以根据获取的人脸信息通过此接口进行对应人脸的特征提取。
【重要参数说明】
3.人脸属性检测:ASFProcess()
【说明】人脸检测成功后,可以根据人脸信息通过此接口检测人脸属性,如年龄、性别等。
【重要参数说明】
三、要点三【视频流识别和活体检测】
下图为常见视频流识别和活体检测的逻辑流程图:
【多线程策略】
【优化策略】
四、要点四【常见问题答疑】
1. 多线程调用问题
a. 同一个引擎可以使用多线程调用不同算法。
b. 多线程调用同一个算法接口需要启用不同的引擎。
2. VIDEO和IMAGE模式的区别
VIDEO模式:
a. 对视频流中的人脸进行追踪,人脸框平滑过渡,不会出现跳框的现象。
b. 用于预览数据的人脸追踪,处理速度快,可避免出现卡顿问题。
c. 在视频模式引入faceId帧,该值用于标记一张人脸,当一个人脸从进入画面直 到离开画面,faceId 值不变。可用于业务中优化程序性能。
IMAGE模式:
a. 针对单张图片进行人脸检测精度更高。
b. 在注册人脸库时,我们建议使用精度更高的IMAGE模式。
3. 非托管内存的操作
C#调用C++ SDK接口,有些传参需要以Intptr的形式。
a. 复制前应先为Intptr申请内存;
b. 当IntPtr不使用时,需要及时手动释放。
4. 人脸特征数据库的存储
人脸特征提取接口返回的featureFeature对应ASF_FaceFeature,数据库存储应将ASF_FaceFeature .feature转化为byte[]再进行数据库存储,featureSize表示byte[]的长度。
5. SDK dll文件的引用方法(使用DllImport方法)
a. 使用相对路径,将dll直接放到执行目录下(web程序不建议使用);
b. 使用绝对路径;
c. 将dll文件放到系统盘Windows下的System32文件夹下;
d. 为dll文件所在文件夹添加环境变量。
对完整课程视频感兴趣的开发者,可以点击下文课程视频链接观看。
https://ai.arcsoft.com.cn/course/mobile/index.html