常见问题

1. 自助错误查询导航

错误码查询入口:【开发者中心】-【帮助中心】

2. 账号说明

Q:企业认证和个人认证的区别?

A:主要是权限不同,企业专属权益:1. 可获增值版 SDK 各 3 个测试码,有效期 3 个月;2. 免费下载使用门禁应用套件及源码。详情请参考下图了解:
【Answer】主要是权限不同,企业专属权益:1、可获增值版 SDK 各 3 个测试码,有效期 3 个月;2、免费下载使用门禁应用套件及源码。详情请参考下图了解:.jpg

3. SDK 说明

3.1 SDK 下载

Q:如何注册下载人脸识别 SDK?

A:请登录虹软视觉开放平台,参考【帮助与支持】-【新手指南】

Q:如何查看我所使用的 SDK 版本号?

A:可以通过下载的 SDK 包里的 releasenotes.txt-version 查看。

Q:部署在 Linux 服务器上使用,开发环境是在 Windows 环境,应该选择哪个SDK下载?

A:在开发的时候选择 Windows 平台的 SDK,但是写代码的时候需要注意可跨平台兼容,然后在部署的时候替换 Linux 平台的库。同时保证不同平台的 SDK 版本相同。

3.2 硬件配置/系统支持

Q:SDK 支持的配置说明?

A:

平台版本支持
AndroidAndroid 4.4+(arm v7、arm v8)
WindowsWin7、Win10(32位、64位)
Linux依赖库GLIBC 2.17及以上;依赖库GLIBCXX 3.4.19及以上;编译器GCC4.8.2及以上
iOSiOS 8.0及以上(arm v7、arm 64)


Q:SDK 是基于 CPU 还是 GPU 的?

A:SDK 都是基于 CPU 的,对设备显卡没有要求。

Q:SDK 支持模拟器吗?

A:因 CPU 架构不同,iOS、Android 平台的 SDK 不支持在模拟机上运行。Windows 平台可以支持模拟机运行。

3.3 网络环境/授权说明

Q:SDK 支持的网络环境?

A:虹软提供独立离线版 SDK,支持离线或在线运行,可实现局域网、互联网等多种网络需求,并可根据场景需求,将应用部署在公有云上,或者搭建私有云,保障数据隐私性以及安全性。

3.4 接口函数说明

Q:人脸检测和人脸跟踪的接口的区别?

A:人脸检测IMAGE模式主要用于静态图片,处理单张图像数据;而人脸跟踪VIDEO模式则主要实现动态视频流检测跟踪,处理连续帧的图像数据。

Q:如何判断正脸和侧脸?

A:通过人脸三维角度接口 ASFGetFace3DAngle 判断人脸偏转角度,相关介绍请查看开发说明文档。

Q:什么是静默活体?

A:基于单张图片或视频判断图片中的人脸是否为二次翻拍。不需要用户做任何动作。只需要自然正对摄像头,就可以完成整个检测过程。

Q:RGB 活体和红外活体的原理是什么?两者有何不同?

A:

  1. RGB 可见光活体:主要基于图片破绽,判断目标对象是否为活体。例如图像中的屏幕反光、成像畸形、二次翻拍边框背景等。RGB 活体检测基于单目摄像头,采用静默式识别方式,用户体验较好。但是 RGB 活体受光线以及成像质量影响较大,在强光、暗光等场景,容易影响检测结果,可通过适当的补光、使用宽动态镜头抵消逆光等方式缓解。
  2. IR 红外活体:主要基于红外光线反射成像原理,通过人脸成像甄别是否为活体。基于红外成像特点,对于屏幕类攻击,基本可以达到近 100%的活体防御。IR 采用静默式识别方式,体验较好,但需要增加红外摄像头成本,同时要结合场景考虑红外成像距离。
    【提示】在实际业务场景中,需要根据场景特点,灵活组合使用以上活体方案。

Q:人脸识别和人证核验可以一起使用吗?

A:可以在比对时选择人证比对ID_CARD或生活照比对LIFE_PHOTO模型,具体可参考说明文档CompareModel 的说明。文章《利用人脸识别 SDK 实现人证比对全过程》供参考。

Q:图像数据结构是什么意思?如何使用?

A:参考 《虹软人脸识别 3.0 - 图像数据结构介绍(Android)》

Q:销毁引擎函数ASFUninitEngine是每对比完成一次就需要释放一次吗?

A:SDK 的初始化和释放都只需要在程序开启和退出的时候进行即可,不需要频繁进行。

3.5 参数说明

Q:一张多人脸照片最多可以检测多少张人脸?

A:一张照片多人脸检测,最多能检测到的人脸个数,有效值范围[1,50],推荐值 25。具体请参考开发说明文档detectFaceMaxNum参数。

Q:一张照片有 20 个人脸,都可以检测到,为什么年龄性别只显示 4 个?

A:请参考说明文档对process函数的说明,RGB 活体最多支持 1 个人脸信息的检测,超过部分返回未知;年龄、性别、三维角度最多支持 4 个人脸信息的检测,超过部分返回未知。如有需求,可以在应用层自己实现,例如通过FaceID 来做,16 个人脸每次调用 4 个,4 次即可调完。

Q:初始化引擎时detectFaceScaleVal参数的具体含义是什么?

A:用于数值化表示的最小人脸尺寸,该尺寸代表人脸尺寸相对于图片长边的占比。多数情况下推荐值为 16,特殊情况下可根据具体场景下进行设置。
【举例】若该参数值设置为 16,图片尺寸为 1920 * 1080,则人脸尺寸需大于 1920/16,即120 * 120(人脸框默认为正方形)才能被引擎检测到。

Q:人脸检测角度参数detectFaceOrientPriority指的是什么意思?

A:这个角度指的是二维平面内的角度,若设置为单角度,则只能检测到以下图像中的其中一个角度的人脸,若设置为全角度检测,可检测如下任意角度的人脸。
【举例】0 度是正的,90 度是平面内翻转 90 度,180 度即平面内翻转 180 度。
【注意】相机预览显示的画面不一定是图像真正的样子,比如手机竖屏的情况下,预览画面和图像是逆时针相差 90 度(后置)或 270 度(前置)的。

【Answer】这个角度指的是二维平面内的角度,若设置为单角度,则只能检测到以下图像中 的其中一个角度的人脸,若设置为全角度检测,可检测如下任意角度的人脸。 举例:0 度是正的,90 度是平面内翻转 90 度,180 度即平面内翻转 180 度。 注意:相机预览显示的画面不一定是图像真正的样子,比如手机竖屏的情况下,预览画面和 图像是逆时针相差 90 度(后置)或 270 度(前置)的。.jpg


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

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

Q:文档里面的角度 Face3Dangle指的是什么意思?

A:检测输入图像数据指定区域人脸的三维角度信息,包含人脸三个空间角度:俯仰角pitch,横滚角roll,偏航角yaw,支持图像模式和视频流模式。

【Answer】检测输入图像数据指定区域人脸的三维角度信息,包含人脸三个空间角度:俯仰角(pitch), 横滚角(roll), 偏航角(yaw),支持图像模式和视频流模式。.jpg


Q:rect 的含义是什么?

A:rect 是基于输入图像的人脸坐标,返回的是人脸坐标(left,top,right,bottom),单位是 px,坐标原点在图像数据的左上。

【Answer】rect 是基于输入图像的人脸坐标,返回的是人脸坐标(left,top , right,bottom),单位是 px,坐标原点在图像数据的左上。.jpg


Q:FaceID指的是什么?

A:FaceID 是 SDK 内部自动赋予的值,可以理解为一个人脸从第一次进入视频画面开始识别到最后离开,识别框就一直跟随移动,且这个过程中FaceID 是不变的。FaceID属性是VIDEO模式下的特有属性,在一个人脸进入画面到离开,该值不会改变,IMAGE模式下不支持FaceID

3.6 图像数据说明

Q:SDK 支持的图片、视频流格式?

A:SDK 所支持的图片及视频流格式在各平台的开发说明文档中均有说明,您可以查看开放平台【帮助与支持】-【API 文档】。

Q:SDK 对图片的人脸大小有没有要求?

A:SDK 对图片人脸占整张图片的比例有一定的要求,具体能检测出的人脸大小可参考开发说明文档中的 Scale(人脸尺寸)参数,为了保证算法表现,请在符合所设置的各参数值的情况下,选择尽量清晰的图片。
【注意】文档对图像质量要求说明:

建议待检测的图像人脸角度上、下、左、右转向小于 30 度;  
图像中人脸尺寸不小于 50 x 50 像素;  
图像大小小于 10MB;  
图像清晰。


Q:SDK 对图片尺寸的要求?

A:SDK对图像尺寸做了限制,宽高需大于 0,宽度为 4 的倍数,YUYV/I420/NV21/NV12格式的图片高度为 2 的倍数,BGR24/GRAY/U16格式的图片高度不限制;请确保传入的图片尺寸符合要求,若不符合可对图片进行适当的裁剪。

Q:对不符合要求的图像如何做格式转换等操作?

A:ArcSoftIMAGEUtil 图像处理库,便于开发者在使用 SDK 时进行图像相关的操作,该库提供了旋转、镜像、裁剪、格式转换、图像数据和Bitmap 互转的功能。详细说明可以参考相应文档。

Q:能否对 mp4 等视频文件进行人脸识别?

A:可以的,只要将视频帧解码成 NV21 或其他 SDK 支持的图像格式即可用于检测。Android 平台可以考虑使用MediaCodec API。这篇文章对于视频编码、解码解释的比较详细,可以参考《Android 仿B站实现视频换脸》

Q:Android 在进行人脸注册时,一般使用什么格式的图像数据比较合适?

A:一般情况下,人脸的注册照都是jpeg 等压缩格式数据,Android 平台在不使用第三方库的情况下,一般使用Bitmap API 进行读取,解析获取的数据一般为RGB565 ARGB8888 格式的数据,建议转换为BGR24 进行使用,不建议转换为NV21数据,因为会有数据丢失和失真。

3.7 场景说明

Q:1:1 和 1:N 说明?

A:离线 1:1 比对,证明你是你,可有效应用于车站、机场、大型活动、机关单位、银行、酒店、网吧等人员流动频繁场所或其它重点场景的人证核验,也可用于线上开户的人员身份验证等场景;1:N 人脸搜索功能,识别你是谁,可有效应用于社区、楼宇、工地、学校等较大规模的人脸考勤签到、人脸通行等应用场景。可结合实际应用场景进行方案的选择。

Q:如何实现人脸识别 1:N?

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

Q:针对一些场景(例如户外强光、逆光、夜间)如何针对性地做优化?

A:针对户外强光、逆光环境可以选择对强光忍耐力较好的宽动态的摄像机以及遮光板等设施;针对夜间、低照度环境可以采用补光模式;欠曝光场景可以稍微调高曝光值以达到补光作用。也可选择合适的摄像头焦距,合适的距离、高度来采集合适的人脸素材。

Q:请问有什么从数据库里检索人脸的高效方法?

A:在人脸库数量比较大的时候,可以考虑多线程搜索,比如一万人,若分两个线程(每个线程用不同的引擎对象)处理,若不考虑 CPU 负载上升导致的单核性能变化,耗时约是单线程的一半。具体的线程数可根据设备性能调整。

Q:注册时保存多张图片特征,是否有利于提高准确率?

A:一个人的特征值或者特征图片与引擎无关,特征值会存入数据库。您可以保存很多张,例如一个平常戴眼镜的人,在注册时可以采取同时注册戴眼镜照和不戴眼镜照,在实际比对时戴眼镜或不戴眼镜都有一个更好的锚点,以保证识别率。