目前我们的应用内使用了ArcFace 的人脸检测功能,这里就和大家分享一下我们的集成过程和一些使用心得~

集成
ArcFace FD 的集成过程非常简单
在 ArcFace FD 的文档上有说明支持的系统为 5.0 及以上系统,但其实在 4.4 系统上也是可以跑的
```

if (engine == null) { // && Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
try {
engine = new AFD_FSDKEngine();
AFD_FSDKError err = engine.AFD_FSDK_InitialFaceEngine(
"XXXX",
"XXXX",
AFD_FSDKEngine.AFD_OPF_0_HIGHER_EXT, 12, 3);
if (err.getCode() != 0) {
engine.AFD_FSDK_UninitialFaceEngine();
engine = null;
}
} catch (Exception e) {
e.printStackTrace();
engine = null;
}
}

```
我觉得 ArcFace 的优势除了多角度检测之外,另外一个是他的每次检测并不是独立,即这一次的检测结果会指导下一次的检测 (我猜测的->_->)

所以 ArcFace 在检测到人脸之后,识别的时间会大幅减少,而 Seeta FD 的检测每次都是独立的,所以在无人脸的情况下,Seeta 的检测速度要快于 ArcFace, 但是检测到人脸之后,因为应用整体的计算量增加,导致 Seeta 的检测速度降低的非常明显,大大慢于 ArcFace, (所以二者是不是可以结合一下...)
```
AFD_FSDKError err = engine.AFD_FSDK_StillImageFaceDetection(
        data, width, height, AFD_FSDKEngine.CP_PAF_NV21, result);
```

优化
不得不说 ArcFace FD 的错误率是有待优化的,虽然 ArcFace 没有提供任何可以调节的参数,但是还是可以稍微优化一下!

因为从摄像头出来的 yuv 数据是横向的,而 ArcFace 只有 AFD_OPF_0_HIGHER_EXT 这个扩展选项,优先检测 0 度方向, 但是这个方向一般是没有人脸的,所以如果直接进行检测,我们觉得这个可能会增加检测的错误率(猜的->_->),所以处理方法是将 yuv 旋转到手机竖屏方向(当然这个操作不是直接由 CPU 来处理,而是从 Camera 的外部纹理上开始做操作)再拿去检测,这样会减少一点错误率(从用户反馈得出),虽然错误率依然很高(特别对于带栅格的物体)希望虹软能继续优化!

另外一个是目前 ArcFace 还没有支持 Android 8.x 系统,所以这种情况下,我们会启用备选的其他方案来进行人脸检测!

最后希望虹软能把 ArcFace 越做越好 ~_~ 因为只有产品足够好才会不断的有人为你做免费宣传

人脸识别Android SDK集成的更多相关文章

  1. 虹软人脸识别 - Android Camera实时人脸追踪画框适配

    在使用虹软人脸识别Android SDK的过程中 ,预览时一般都需要绘制人脸框,但是和PC平台相机应用不同,在Android平台相机进行应用开发还需要考虑前后置相机切换.设备横竖屏切换等情况,因此在人 ...

  2. Kotlin与Android SDK 集成(KAD 05)

    作者:Antonio Leiva 时间:Dec 19, 2016 原文链接:https://antonioleiva.com/kotlin-integrations-android-sdk/ 使用Ko ...

  3. 【笔记】android sdk集成的eclipse中导入项目

    android sdk集成的eclipse中导入项目 想要把旧的ADT项目,一模一样的导入进来,需要: 1.把项目放到,非当前ADT的workspace目录下: 2.从Project中Import,选 ...

  4. windows版 Java调用人脸识别离线sdk

    最近因工作需求在java-web服务中调用人脸识别离线sdk,主要通过JNA及JNI技术,但均未调试通过,JNA调用时出现以下异常,一直未解决,求大佬指点,导常信息如下: in BaiduFaceAp ...

  5. 虹软人脸识别Android Sample Code

    AFR_FSDKInterface engine = new AFR_FSDKEngine(); //用来存放提取到的人脸信息, face_1 是注册的人脸,face_2 是要识别的人脸 AFR_FS ...

  6. 虹软2.0 离线人脸识别 Android 开发 Demo

    环境要求1.运行环境 armeabi-v7a2.系统要求 Android 5.0 (API Level 21)及以上3.开发环境 Android Studio 下载地址:https://github. ...

  7. 极光推送android sdk集成步骤

    推送,用极光,大家都说好,哈哈. 进入正题: 1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持.(基本上现在都已经支持了,循例说一下)  , ...

  8. Android 用虹软SDK做人脸识别

    人脸识别第三方sdk比较多,但是大多都是收费的或者限制次数什么的,虹软的效果还不错,全免费也不需要联网 V1.2版本使用和快速集成:https://www.jianshu.com/p/8dee89ec ...

  9. Android之人脸识别

    **前言** 人工智能时代快速来临,其中人脸识别是当前比较热门的技术,在国内也越来越多的运用,例如刷脸打卡.刷脸App,身份识别,人脸门禁等等.当前的人脸识别技术分为WEBAPI和SDK调用两种法方式 ...

随机推荐

  1. kubernetes---kubectl 管理集群资源

    由于我现在的集群是把虚拟机的master文件直接拷贝过来的,所以之前的node节点是不存在的,只有k8s-ubuntu-1是新加入的,所以我要把上面之前创建的资源删除 删除deployment--&g ...

  2. 【jpa】spring data jpa 配置使用

    1.spring data jpa 简单介绍 jpa是用于对象持久化的API,jpa是一种规范,而其他的ORM框架(hibernate,topLink等)是其实现,所以jpa可以使用不同的实现方式,修 ...

  3. Python内置函数(26)——globals

    英文文档: globals() Return a dictionary representing the current global symbol table. This is always the ...

  4. ECMAScript 6 学习(一)generator函数

    1.ES2017标准引入async函数,那么async函数到底是个什么函数呢? async 是一个generator函数的语法糖. 2.那么generator函数到底是什么函数ne? generato ...

  5. react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)

    react-native以后会更火的 一.安装java 二.安装Android Studio 三.安装react-native需要的Android studio额外部分 四.安装nodeJS  五.安 ...

  6. 使用npm安装配置vue

    npm安装很慢(国外服务器),所以一般推荐使用npm淘宝镜像cnpm,先安装下cnpm: npm install -g cnpm --registry=https://registry.npm.tao ...

  7. 并发编程(八)—— Java 并发队列 BlockingQueue 实现之 ArrayBlockingQueue 源码分析

    开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现. 阻塞队列概要 阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列的阻塞 ...

  8. .net core高性能通讯开源组件BeetleX

    BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便.性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的T ...

  9. 【Java基础】【25多线程(下)&GUI】

    25.01_多线程(单例设计模式)(掌握) 单例设计模式:保证类在内存中只有一个对象. 如何保证类在内存中只有一个对象呢? (1)控制类的创建,不让其他类来创建本类的对象.private (2)在本类 ...

  10. windows下用cmd命令netstat查看系统端口使用情况

    开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...