人脸识别 android p,虹软人脸识别 - faceId及IR活体检测的更新介绍

虹软发布了新版Android ArcFace SDK,新增faceId和IR活体检测功能,改进视频模式下的用户体验。faceId确保同一人连续帧中标识一致,IR活体检测支持多种摄像头配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虹软人脸识别 - faceId及IR活体检测的介绍

前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下:

VIDEO模式新增faceId(类似于之前文章中提到的trackId)

新增IR活体检测功能

新增IR、RGB的活体阈值设置

一、faceId介绍

1. 定义

在连续的视频帧中,当一个人脸进入视频画面直到离开,其faceId不变。

2. 应用场景举例

在门禁应用场景下,若一个人长时间停留在画面中,借助faceId的功能,在此人的人脸特征提取成功后,可不再对此人的后续人脸信息进行处理。

3. 注意事项

faceId在VIDEO模式下有意义;

faceId在IMAGE模式下无效。

二、 IR活体检测

1. 接口介绍

支持的颜色格式如下:

Windows: GRAY、DEPTH_U16、NV21、NV12、I420

Android: GRAY、DEPTH_U16、NV21

注:若图像数据的颜色格式不在上述列表中,必须对图像数据进行格式转换。

2. IR活体检测实现方案

单目摄像头检测方案(IR)

ba8ffa0fc0c60502e88a260992e89738.png

单目摄像头检测流程

注意:在Windows平台下,若通过OpenCV获取IR摄像头的图像数据,由于其颜色格式为BGR_24,不能用于IR活体检测,需要转成GRAY(或IR活体检测接口支持的其他颜色格式),但BGR_24数据可直接用于人脸检测。

双目摄像头检测方案(IR + RGB)

6a476f0a762be7dc2c4381739d17a741.png

双目摄像头检测流程

人脸检测结果信息调整 :若RGB摄像头和IR摄像头的成像不一致(存在偏移、旋转、镜像等问题),需要将传递给IR活体检测的人脸信息(人脸框、人脸角度)进行调整。

3. 双目IR活体检测遇到的坑

在双目的画面有明显的不一致的情况时,若我们直接把RGB摄像头的人脸检测结果用于IR活体检测,很有可能会报81925(人脸置信度低)错误。原来,摄像头回传的数据和我们直接看到的画面很可能是不一样的,我们看到的画面可能是经过处理的(缩放、旋转、镜像等)。

检测方法

最直观的检查方法就是将摄像头数据显示到屏幕上。只要我们把2个摄像头回传的数据显示到屏幕上,就能了解两个摄像头数据的成像关系。例如Android平台可使用以下方式查看NV21数据:

示例流程

nv21 -> YuvImage -> jpg bytes -> bitmap -> ImageView

示例代码

解决方案

1. RGB和IR摄像头图像数据的其中一个被左右镜像

对于这种情况,我们在将RGB数据的人脸检测结果用于IR活体检测时,需要将其人脸框(rect)进行左右镜像调整。(Android demo中已提供左右镜像的代码):

c5a4af377f4d1be2aa3ddf73fff259d8.gif

/**

* 人脸框水平镜像

*

* @param rect 人脸框

* @return 水平镜像后的人脸框

*/

private Rect mirrorRectHorizontal(Rect rect) {

Rect newRect = new Rect(rect);

newRect.right = previewSize.width - rect.left;

newRect.left = previewSize.width - rect.right;

return newRect;

}

ec8c4414aa43e3b508dd02634e0a1962.gif

2. RGB和IR摄像头图像数据均被镜像或均未被镜像

对于这种情况,RGB数据的人脸检测结果用于IR活体检测时,不需要进行镜像调整。

3. RGB和IR摄像头图像数据有旋转关系

若有旋转关系,我们不仅要旋转人脸信息(FaceInfo)中的人脸框(rect),还需要修改人脸角度(orient)。否则IR活体检测将无法解析人脸,报81925错误。

(Android demo中已提供将orient单次旋转90度的代码):

86bfa4c7e7dea560225f60b9b17942dd.gif

/**

* 获取逆时针旋转90度后的人脸角度

*

* @param orient 人脸角度信息,即{@link FaceInfo#orient}属性,由{@link FaceEngine#detectFaces(byte[], int, int, int, List)}接口获取

* @return 旋转后的人脸角度

*/

private int rotateOrient(int orient) {

switch (orient) {

case FaceEngine.ASF_OC_0:

return FaceEngine.ASF_OC_90;

case FaceEngine.ASF_OC_90:

return FaceEngine.ASF_OC_180;

case FaceEngine.ASF_OC_180:

return FaceEngine.ASF_OC_270;

case FaceEngine.ASF_OC_270:

return FaceEngine.ASF_OC_0;

default:

throw new IllegalArgumentException("unsupported orient '" + orient + "'");

}

}

b507d1ed8a84db7c11abf895b889864b.gif

若需要下载虹软sdk,可以到官网:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值