使用了免费的人脸识别算法,感受仍是很不错的,可是初次接触的话会对一些接口的参数有些疑问的。这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux、android基本同样),但愿能更好的帮助各位接入虹软的人脸识别算法。html
本文主要分析如下两个参数:linux
在引擎初始化的时候,须要选择video
或image
模式,在接口头文件中定义了宏ASF_DETECT_MODE_VIDEO
、ASF_DETECT_MODE_IMAGE
,根据须要的模式传入便可。video
模式对应人脸追踪算法(FT),image
模式对应人脸检测算法(FD),关于FT/FD算法的区别能够参考虹软AI 人脸识别SDK接入 — 参数优化篇(1) 经过测试数据,我的感受image模式下的数据更能准确的体现算法的能力,下面关于其余参数的介绍均在image模式下进行;android
1.1 推荐值算法
初始化接口中detectFaceMaxNum参数的设置决定ASFDetectFaces(FT/FD)接口单帧图片容许检测的最大人脸数,官网推荐最大值不超过50,虽然能够设置更大的值,可是没有必要,下面数据能够说明;windows
1.2 检测到的人脸数对应的性能消耗ide
测试用例:性能
经过以上数据能够看出,image
模式下图片中人脸数越多单次检测的耗时会越长,video
模式下图片中人脸数越多单次检测的耗时也会有略微增长。综上,detectFaceMaxNum参数的设置多少并不影响内存的分配以及性能的消耗,仅是设置算法单帧检测的最大人脸数。测试
2.1 内存占用优化
combinedMask参数是初始化引擎时传入不一样属性功能组合,传入的属性越多引擎分配的内存越大。实际应用状况下,传入必需的属性组合便可,传入多余属性只会占用内存。spa
下表数据是在测试其余参数固定,只修改mask参数时初始化接口内存的占用状况(数据取自windows任务管理器):
![]() |
2.2 ASFInitEngine****接口与ASFProcess接口中combinedMask参数的关系
官方文档对ASFProcess接口中combinedMask参数的解释:
初始化中参数combinedMask
与ASF_AGE |
ASF_GENDER |
ASF_FACE3DANGLE |
ASF_LIVENESS交集的子集;
举例说明:
例1:ASFInitEngine接口中传入全属性,则ASFProcess接口能够传入ASF_AGE、ASF_GENDER、 ASF_FACE3DANGLE、 ASF_LIVENESS四种属性的任意组合。
例2:ASFInitEngine接口中传入ASF_FACE_DETECT | ASF_FACERECOGNITION | ASF_AGE | ASF_GENDER ,则ASFProcess接口只能传入ASF_AGE、 ASF_GENDER两种属性的任意组合。
2.3 cpu****占用
cpu占用受设备以及测试条件影响比较大,根据使用状况ASF_AGE | ASF_GENDER | ASF_FACE3DANGLE对应的算法对cpu的消耗是比较少的,但ASF_LIVENESS是比较消耗cpu资源的,须要根据自身设备作对应处理。
2.4 ASFProcess****接口不一样属性的性能
测试用例:
测试代码:
测试结果:
综上所述,年龄、性别、3d角度的检测是很是快的,活体检测相对较慢。在实际应用中仅须要检测ASF_AGE、ASF_GENDER、 ASF_FACE3DANGLE的话,能够放在主线程中处理,但若是须要检测ASF_LIVENESS建议单开线程去处理,这样在video模式下不会出现卡帧的状况,界面显示比较流畅。
https://ai.arcsoft.com.cn/product/arcface.html?utm_source=kyzg&utm_medium=referral