虹软人脸识别ArcFace2.0 Android SDK使用教程

一、获取SDK

1.进入ArcFace2.0的申请地址

https://ai.arcsoft.com.cn/product/arcface.html

2.填写信息申请并提交

申请通过后即可下载SDK,查看APP_ID和SDK_KEY

二、功能介绍

虹软ArcFace 2.0 Android包含人脸检测、年龄信息检测、性别信息检测、人脸三维角度检测、活体检测、人脸特征提取、人脸特征比对功能。

其中暴露对外的功能方法有:
active(激活)

init(初始化)

detectFaces(人脸检测)

process(活体检测、年龄检测、性别检测、人脸三维角度检测功能使用该方法,以或运算组合形式选择处理的功能,并以getXXXXX方法获取处理的结果)

extractFaceFeature(特征提取)

compareFaceFeature(特征比对)

unInit(销毁)

三、使用SDK

1.创建工程,并将下载解压出的jar和so添加到工程

2.激活引擎

FaceEngine faceEngine = new FaceEngine();

//激活方法首次调用有网络和文件操作,后续只有文件操作,但是一般情况下都很快

int activeCode = faceEngine.active(SettingsActivity.this, Constants.APP_ID, Constants.SDK_KEY);

if (activeCode == ErrorInfo.MOK || activeCode == ErrorInfo.MERR_ASF_ALREADY_ACTIVATED) {

    //激活成功或者已激活过的情况

}else{

    //激活失败的情况

}

3.初始化引擎,推荐在onCreate中执行

faceEngine = new FaceEngine();

int afCode = faceEngine.init(context.getApplicationContext(), FaceEngine.ASF_DETECT_MODE_VIDEO, FaceEngine.ASF_OP_0_HIGHER_EXT

        16, 10, FaceEngine.ASF_FACE_RECOGNITION | FaceEngine.ASF_FACE_DETECT | FaceEngine.ASF_FACE3DANGLE|....);

if (afCode != ErrorInfo.MOK) {

    //初始化成功

}else{

    //初始化失败

}

4.人脸检测

List faceInfoList = new ArrayList<>();

int code = faceEngine.detectFaces(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfoList);

if (code == ErrorInfo.MOK && faceInfoList.size() >0) {

    //人脸检测成功并且检测到了人脸的情况

}else{

    //人脸检测失败或未检测到人脸的情况

}

5.特征提取

FaceFeature faceFeature = new FaceFeature();

int code = faceEngine.extractFaceFeature(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfo, faceFeature);

if (code == ErrorInfo.MOK) {

    //特征提取成功

}else{

    //特征提取失败,可根据code查看原因

}

6.特征比对

public void compareFace(FaceFeature faceFeature1,FaceFeature faceFeature2){

    FaceSimilar faceSimilar = new FaceSimilar();

    int code = faceEngine.compareFaceFeature(faceFeature1, faceFeature2, faceSimilar);

    if (code == ErrorInfo.MOK){

        //比对成功,可查看faceSimilar中的相似度

    }else{

        //比对失败,可根据code查看原因

    }

}

7.活体、人脸三维角度、年龄、性别检测

int faceProcessCode = faceEngine.process(nv21, width, height, FaceEngine.CP_PAF_NV21, faceInfoList, FaceEngine.ASF_AGE | FaceEngine.ASF_GENDER | FaceEngine.ASF_FACE3DANGLE | FaceEngine.ASF_LIVENESS);

if (faceProcessCode != ErrorInfo.MOK){

    //失败的情况

}else{

    //process成功,可获取结果

    List ageInfoList = new ArrayList<>();

    List genderInfoList = new ArrayList<>();

    List face3DAngleList = new ArrayList<>();

    List faceLivenessInfoList = new ArrayList<>();

    int ageCode = faceEngine.getAge(ageInfoList);

    int genderCode = faceEngine.getGender(genderInfoList);

    int face3DAngleCode = faceEngine.getFace3DAngle(face3DAngleList);

    int livenessCode = faceEngine.getLiveness(faceLivenessInfoList);

    //错误码校验,判断是否全部成功

    if ((ageCode | genderCode | face3DAngleCode | livenessCode) != ErrorInfo.MOK) {

        return;

    }else{

        //全部检测成功,可从ageInfoList ,genderInfoList ,face3DAngleList ,faceLivenessInfoList 中获取检测结果

    }

}

8.销毁引擎,推荐在onDestroy中执行

if (faceEngine != null) {

  int faceEngineCode = faceEngine.unInit();

  Log.i(TAG, "unInitEngine: " + faceEngineCode);

}

四、注意事项

1.检测模式相关说明

引擎的初始化中需要传入检测模式( 视频流模式 或 图片模式 ),除了识别功能模块(extractFaceFeature和compareFaceFeature)的其他功能都是有检测模式区分的,对于人脸检测、年龄检测、性别检测、人脸三维角度,使用视频流模式处理速度更快。但是活体检测比较特殊:图片模式的处理是阻塞的,处理速度较慢,需要等待返回结果;视频流模式则处理速度很快,处理后马上能获取结果,但是一段视频流的首帧传入后返回的值为未知,在一段时间后开始拿到的值才是真正的算法结果。

2.线程安全须知

单个引擎的同一功能模块中的算法功能函数都是线程不安全的,且调用过程中不能进行销毁。

举几个例子:
1)在A线程进行人脸检测(detectFaces)时可以在B线程同时进行特征解析(extractFaceFeature)。
2)在A线程进行人脸检测(detectFaces)时不可以在B线程同时进行人脸检测(detectFaces)。
3)在A线程进行特征解析(extractFaceFeature)时候不可以在B线程同时进行销毁(unInit)

参考文档(官方的文档和demo都十分详细):

Android平台开发指南:

https://ai.arcsoft.com.cn/manual/arcface_android_guideV2.html

API接口说明

http://ai.arcsoft.com.cn/statics/mannual/arcface/android/index.html

原文地址:https://www.cnblogs.com/bodaren/p/10427137.html

时间: 2024-08-30 08:01:08

虹软人脸识别ArcFace2.0 Android SDK使用教程的相关文章

虹软人脸识别3.0 - 图像数据结构介绍(Android)

从虹软开放了2.0版本SDK以来,由于具有免费.离线使用的特点,我们公司在人脸识别门禁应用中使用了虹软SDK,识别效果还不错,因此比较关注虹软SDK的官方动态.近期上线了ArcFace 3.0 SDK版本,确实做了比较大的更新.首先本篇介绍一下关于Android平台算法的更新内容,下一篇将针对Windows平台的算法更新展开介绍. 特征比对支持比对模型选择,有生活照比对模型和人证比对模型 识别率.防***效果显著提升 特征值更新,升级后人脸库需重新注册 Android平台新增64位的SDK 图像

虹软人脸识别3.0 - 图像数据结构介绍(C++)

从虹软开放了2.0版本SDK以来,由于具有免费.离线使用的特点,我们公司在人脸识别门禁应用中使用了虹软SDK,识别效果还不错,因此比较关注虹软SDK的官方动态.近期上线了ArcFace 3.0 SDK版本,确实做了比较大的更新.上一篇主要介绍了关于Android平台算法的改进,本篇将介绍一下关于Windows平台算法的更新. 特征比对支持比对模型选择,有生活照比对模型和人证比对模型 识别率.防***效果显著提升 特征值更新,升级后人脸库需重新注册 人脸检测同时支持全角度及单一角度 新增了一种图像

Android 实现人脸识别教程[运用虹软人脸识别SDK]

基于虹软人脸识别引擎,在Android平台上实现人脸识别功能,即使在离线的情况下依旧运行,不被人采集个人照片的感觉,还是爽爽的.经过整个测试过来,虹软的人脸识别还是很强大的,人脸检测可以控制在20ms之内,人脸识别大概在200ms左右.今天就来分享一下开发经验 项目的目标 我们需要实现一个人脸识别功能.简单来说,就是机的后置摄像头,识别摄像头中实时拍到的人脸信息,如果人库注册过,则显示识别后的人脸信息,如登记的名字:如果不在,提示未注册. 这个功能具有多个应用场景,比如,火车站或者打卡和门禁系统

虹软人脸识别SDK在网络摄像头中的实际应用

目前在人脸识别领域中,网络摄像头的使用很普遍,但接入网络摄像头和人脸识别SDK有一定门槛,在此文章中有介绍过虹软人脸识别SDK的接入流程,本文着重介绍网络摄像头获取视频流并处理的流程(红色框内),以下内容仅供参考. 1.海康SDK接入基本流程 a.初始化并登录验证 NET_DVR_Init(); NET_DVR_DEVICEINFO_V30 struDeviceInfo = { 0 }; long lUserID = NET_DVR_Login_V30(m_cameraIp, m_cameraP

虹软人脸识别应用开发过程

趁空闲的一点点时间向大家分享一个好用的人脸识别的应用--来自虹软公司的人脸识别推荐这家的产品主要有以下几个理由~1.免费!免费!免费!它家比较良心.人脸识别.人证核验.活体检测等等一切的sdk都是免费下载使用的- -即使商用也可以~非常适合我这种小穷人2.根据不同操作平台提供不同的SDK目前可下载Windows x86,x64平台(c++/Java语言).Linux x64平台(c++/Java语言).iOS平台(Objective-C语言)与Android arm32平台(Java语言)3.官

记C# 调用虹软人脸识别 那些坑

上一个东家是从事安防行业的,致力于人工智能领域,有自主人脸识别.步态识别的算法.C++同事比较称职有什么问题都可以第一时间反馈,并得到合理的处理,封装的DLL 是基于更高性能的GPU算法,可支持更多线路的运算,接口调用简单,只需要传入图片即可得到特征特征值.对于公司的项目,更多的是与各类接口进行交互.包括建立任务.上传视频.截取片段,抽取特征,学习特征,步态比对等对接接口的复杂业务逻辑.由于长期和C++接口对接,包括Kafka消息队列传输等,对于公司项目支撑的业务流程比较了解.至于底层算法,只是

虹软人脸识别SDK的接入方法

背景: 虹软的人脸识别还是不错的,在官方注册一个账号,成为开发者,下载SDK的jar包,在开发者中心,找一个demo就可以开始做了,安装里边的逻辑,先看理解代码,然后就可以控制代码,完成自己想要的功能 一:准备工作 注意: 1 sdk的下载,会给你4个jar包和4个秘钥以及1个appid,这个appid是用来绑定你的jar包,使用别人的会造成识别引擎启动失败, 下载文件如下: 这里需要把文件解压并整理,每个引擎的so文件和jar是分开的,所以需要一一解压,然后整理一下 如下: 在项目里建立如下文

怎么接入虹软人脸识别SDK

背景: 虹软的人脸识别还是不错的,在官方注册一个账号,成为开发者,下载SDK的jar包,在开发者中心,找一个demo就可以开始做了,安装里边的逻辑,先看理解代码,然后就可以控制代码,完成自己想要的功能 一:准备工作 注意: 1 sdk的下载,会给你4个jar包和4个秘钥以及1个appid,这个appid是用来绑定你的jar包,使用别人的会造成识别引擎启动失败, 下载文件如下: 这里需要把文件解压并整理,每个引擎的so文件和jar是分开的,所以需要一一解压,然后整理一下如下: 在项目里建立如下文件

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

导语:虹软ArcFaceGo智慧门禁应用套件包括门禁软件APK.PC管理客户端和云端服务三部分,最快3分钟即可完成智慧门禁系统的部署,帮助中小型企业降低开发成本,加快实现产品智能化落地.本文来自开发者投稿. 应公司需求,最近开发了一款有考勤功能的人脸门禁应用. 相比传统密码门禁操作不便,指纹和刷卡门禁容易冒用和代打卡,刷脸门禁采用生物识别技术,必须本人刷脸才能起效,在原有门禁的基础上的改造也比较容易. 刷脸门禁虽好,然而最大问题是,我并没有从零开发一款人脸门禁的能力.多方研究之下,我选择了虹软A