虹软人脸识别-faceid及ir活体检测的介绍(代码片段)

author author     2023-05-03     495

关键词:

前几天虹软推出了 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)
技术图片
单目摄像头检测流程

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

? 双目摄像头检测方案(IR + RGB)
技术图片
双目摄像头检测流程

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

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

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

? 检测方法

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

 @Override
  public void onPreview(final byte[] nv21, Camera camera) 
    ......
    //30帧一次,把帧数据显示到界面上(要是每帧都做就太卡了),若还是影响UI请放到子线程处理
    if (index++ % 30 == 0) 
      YuvImage yuvImage = new YuvImage(nv21, ImageFormat.NV21, previewSize.width, previewSize.height, null);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      yuvImage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 100, baos);
      byte[] bytes = baos.toByteArray();
      ivFrame.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
    
    ......
  

? 解决方案

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

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

 /**
     * 人脸框水平镜像
     *
     * @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;
    

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

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

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

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

/**
 * 获取逆时针旋转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 + "‘");
    

以上是个人使用的一点心得,如果需要下载虹软sdk可以到官网:https://ai.arcsoft.com.cn/product/arcface.html?utm_source=51cto&utm_medium=referral

我们公司要做人脸识别的考勤,哪里有免费的活体检测安卓版本sdk?可以识别真人的

参考技术A推荐虹软的SDK,免费的,有两种算法可以选择,RGB和IR两种,具体区别看看官网,他们的SDK可以支持离线使用,也支持静默式,IR活体检测的防御功能很不错,防止照片,视频等代替打卡,感觉这个正合适呢 哈哈哈 参... 查看详情

虹软人脸识别活体检测有没有用过的,效果怎么样?

...和视频是过不了的,基本能满足我们的要求。 参考技术B虹软人脸识别活体检测是一种新型的识别方式,用在确认身份的场所,我单位机房就是用虹软人脸识别活体检测的方式来识别解锁,安全性比较高,用起来也比较方便。 参... 查看详情

虹软人脸识别活体检测只有android版本的嘛?

...够实现我想要的效果了,因此在这里偷一下懒,直接使用虹软提供的示例代码来进行本次项目的说明。打开示例代码的工程,我们可以看到目录结构如下,lib目录下存放jar包,jnilibs下存放so包,后面如果我们自己要写一个新的工... 查看详情

如何通过活体检测

...[1]在一些身份验证场景确定对象真实生理特征的方法,在人脸识别应用中,活体检测能通过眨眼、张嘴、摇头、点头等组合动作,使用人脸关键点定位和人脸追踪等技术,验证用户是否为真实活体本人操作。可有效抵御照片、换... 查看详情

有没有支持多人人脸识别的算法,要识别的人脸比较多

...别?/在打开活体开关的情况下如何实现多人同时识别?虹软Android2.2版本demo——在faceHelper里去掉keepMaxFace那句代码(demo画框设置了只画最大人脸框),并关闭活体,通过faceID的判断可以实现多人脸识别。2、Android2.0/2.1/2.2版本,... 查看详情

听说虹软的人脸识别算法已经升级到3.0的版本了,更新了啥功能啊?

...发效率上进行了整体提升本回答被提问者采纳 参考技术B虹软的人脸识别到3.0版本,主要更新了三点一线,智能识别人脸,包括眼睛,鼻子,眨眼睛就能识别 参考技术C主要是提高了人脸识别的速度吧,让你不再为这些的担忧。 ... 查看详情

opencv怎么实现人脸识别活体检测?

...存档目录中。不要忘记连接好摄像头。 参考技术B我记得虹软新出的人脸识别SDK是的带有活体检测功能的,他们之前的SDK就有接入opencv的方案的,你可以虹软官方的开发者中心去看看具体有没有接入openc 查看详情

虹软人脸识别怎么样

大家有用过虹软人脸识别吗,看它是免费的,有多个平台版本,我们目前想用android与Windows的,听说其可以离线使用,有使用过的用户分享一下经验我们公司对比测试了几家人脸识别的,其他家都是API借口,虹软的是SDK离线运行... 查看详情

人脸识别sdk虹软的好用吗?

...参考技术C很不错还有追踪效果准确率都很可观 参考技术D虹软人证核验应用方案运用人脸特征的唯一性,集人脸检测、人证比对、证件阅读等技术,快速识别身份证与持证人的真假,满足酒店、宾馆、车站、网吧、政府办事大厅... 查看详情

[android]虹软人脸检测与人脸识别集成分享(代码片段)

目前我们的应用内使用了ArcFace的人脸检测功能,其他的我们并不了解,所以这里就和大家分享一下我们的集成过程和一些使用心得 集成ArcFaceFD的集成过程非常简单在ArcFaceFD的文档上有说明支持的系统为5.0及以上系统,但其... 查看详情

如何使用虹软人脸识别门禁应用套件

导语:虹软ArcFaceGo智慧门禁应用套件包括门禁软件APK、PC管理客户端和云端服务三部分,最快3分钟即可完成智慧门禁系统的部署,帮助中小型企业降低开发成本,加快实现产品智能化落地。本文来自开发者投稿。应公司需求,最... 查看详情

多维活体检测,让人脸识别更安全

今年的315晚会提到人脸识别领域的安全风险,主持人用现场合成的视频通过了活体检测和人脸验证,因此人脸识别的安全性引起大众关注。对于活体检测的安全隐患,腾讯优图团队一直保持高度关注,并依托多年积累的技术能力... 查看详情

多维活体检测,让人脸识别更安全

今年的315晚会提到人脸识别领域的安全风险,主持人用现场合成的视频通过了活体检测和人脸验证,因此人脸识别的安全性引起大众关注。对于活体检测的安全隐患,腾讯优图团队一直保持高度关注,并依托多年积累的技术能力... 查看详情

人脸识别模型的动手实践!

作者:宋志龙 来源:Datawhale人脸识别已经成为生活中越来越常见的技术,其中最关键的问题就是安全,而活体检测技术又是保证人脸识别安全性的一个重要手段,本文将向大家简单介绍活体检测,并动手... 查看详情

人脸识别中的活体检测是啥?

人脸识别的活体检测有什么好处吗?活体检测技术哪个平台好?活体检测一般是通过人脸做出的一些动作,比如抬头、点头、睁眼、闭眼、张嘴、摇头这些,然后再使用人脸关键点定位和追踪技术,验证是否是本人在操作。比如... 查看详情

人脸识别活体检测技术讨论:基于背景人脸相对运动的活体判断方法

活体检测是人脸识别安全性的重要保障,是人脸识别厂商将产品普及应用于各行业的重要竞争力。目前活体判断的方法很多,但很难基于一种方法就能达到理想的效果,往往需要多种算法的交叉判断,本文主要介绍一种简单有效... 查看详情

人脸识别中活体检测的重要性是啥?

是防止被攻击欺诈,提高安全性。人脸活体检测主要是通过识别活体上的生理信息来进行,它把生理信息作为生命特征来区分用照片、硅胶、塑料等非生命物质假座的生物特征。一旦虚假人脸攻击成功,极有可能对用户造成重大... 查看详情

人脸识别模型的动手实践!

...货 作者:宋志龙,算法工程师,Datawhale成员人脸识别已经成为生活中越来越常见的技术,其中最关键的问题就是安全,而活体检测技术又是保证人脸识别安全性的一个重要手段,本文将向大家简单介绍活... 查看详情