博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java调用离线人脸识别SDK 虹软arcface 2.0
阅读量:6542 次
发布时间:2019-06-24

本文共 2433 字,大约阅读时间需要 8 分钟。

[虹软人脸识别SDK](https://ai.arcsoft.com.cn/index.htm?utm_source=csdn&utm_medium=referral)之Java版,支持SDK 1.1+,以及当前最新版本2.0,滴滴,抓紧上车!

JDK SDK Win release license status

**前言**

由于业务需求,最近跟人脸识别杠上了,本以为[虹软提供的SDK](https://ai.arcsoft.com.cn/index.ht?utm_source=csdn&utm_medium=referral)是那种面向开发语言的,结果是一堆dll······像我这样的Java猿突然就感觉整个人都不好了;近期赶上了SDK2.0的升级,在官方论坛、Google、百度、QQ等等的帮助下,爬过了一个又一个坑,终于搞定了!噗!回过头来发现不少伙伴们都像我当初一样迷茫,So,我回来拯救世界了~

后更:刚写了没多久,[虹软SDK](https://ai.arcsoft.com.cn/index.htm?utm_source=csdn&utm_medium=referral)的Java版Demo就出来了.................

**注意**

本项目需要lombok的支持

虹软官方分为“人证SDK”、“活体检测”和“ArcFace”三种,本项目使用的是“ArcFace”
Windows 32位、64位指的是JDK,并不是Windows操作系统的位数
master分支为最新的SDK 2.0版本,1.x的版本实现请查看1.x分支(1.x实现来自于官方论坛Demo)
本项目实现了对SDK的轻度封装,且为单线程模式,多线程情况下尚未测试,放过可怜的孩子吧...

**功能特点**

对SDK接口进行了二次封装,所有操作只需要一个简单的工具类就ojbk,用起来爽的一批~

- 激活引擎

- 初始化引擎
- 检测人脸
- 提取特征值
- 对比特征值
- 年龄/性别/角度检测预处理
- 获取年龄
- 获取性别
- 获取3D角度
- 获取引擎版本
- 销毁引擎
**快速开始**

**安装项目**

git clone https://github.com/jastar-wang/arcface.git

然后将项目导入到Eclipse或IDEA中并进行maven update

**下载DLL**

登录[虹软官方网站](https://ai.arcsoft.com.cn/index.htm?utm_source=csdn&utm_medium=referral),下载ArcFace 2.0的SDK,并将libarcsoft_face.dll和libarcsoft_face_engine.dll两个文件粘贴到src/test/resources目录下

**配置KEY**

将官网获取到的SDK激活码填入到com.arcsoft.face.util.ConfUtil类的对应常量中

**测试**

打开com.arcsoft.face.EngineTest类,运行单元测试即可

**参考资料**

[虹软SDK的常见问题指南](http://ai.arcsoft.com.cn/manual/faqs.html)

[虹软官方问答指导集锦](https://ai.arcsoft.com.cn/bbs/forum.php?mod=viewthread&tid=884&utm_source=csdn&utm_medium=referral)
常见问题

(1)SDK有效期?

答:SDK激活码有效期为一年,到期之后需要重新申请激活码,并且重新下载SDK,SDK与激活码应当匹配。

(2)SDK 2.0首次使用?

答:2.0版本首次使用需要联网激活,激活后会在程序运行目录下生成几个“.dat”文件(asf_install.dat,freesdk_数字.dat),之后则可以离线使用;若更换了机器设备,需要删除这些“.dat”文件,并重新联网激活。

(3)SDK 2.0特征值?

答:1.x的版本特征值大小为20k左右,2.0版本算法做了大幅优化,缩小到了1k,且长度固定为1023 byte。

(4)SDK 2.0对于图片的要求?

答:图片的宽度必须是4的整数倍;当图片为BGR模式时,高度需要是2的整数倍。

(5)SDK 2.0的阈值?

答:由于2.0的算法做了优化,匹配度相对较高,推荐阈值设置为0.8(1.x版本为0.6),具体根据实际场景上下调整。

(6)SDK 2.0提取特征值?

答:2.0版本对内存做了优化,会反复使用同一个特征值对象的内存,所以提取特征值之后需要对特征值对象重新copy,否则SDK再进行提取时会覆盖了原特征值。

(7)关于多线程使用?

答:多线程使用场景下,每个线程都需要初始化一个引擎。

(8)如何加载图片?

答:可以使用“ImageIO.read()方式读取图片,但该方式读取某些类型的图片时,不会正确读取ICC的信息,因此会在写出图片时生成一层红色蒙版(如果不写出图片那就无所谓)。有两种解决方案:(1)参照EngineTest.testAll()方法中的加载方式,这种方式仅限于Windows下使用,因为需要用到图形环境的支持。(2)使用javacv(基于opencv)加载图片,pom依赖中已注释,本人放弃的原因是因为jar包太大且需求不会有Linux环境。”

(9)运行EngineTest单元测试提示“...找不到指定模块”?

答:这是因为你的系统缺少dll运行的必要组件,别担心,点击 这里 进行下载,根据自身情况选择32位或64位安装即可。
许可证

本项目遵循 MIT 开源协议,手动比心?

转载于:https://www.cnblogs.com/KEAIILINN/p/10493907.html

你可能感兴趣的文章
TCP/IP TIME_WAIT状态原理
查看>>
统计数中二进制表达式中1的个数
查看>>
陶哲轩实分析 定义7.11(有限级数) 注
查看>>
20145222黄亚奇《网络对抗》信息收集和漏洞扫描技术
查看>>
Windows API 第二篇 SHGetSpecialFolderPath
查看>>
关于成员变量和局部变量是否都会被默认初始化的问题
查看>>
安卓中实现界面数据懒加载
查看>>
linux命令之ls命令的简明讲解
查看>>
django基础知识~ RBAC权限周边初探
查看>>
Integer ,==,int 的使用
查看>>
数字图像处理中所用数学工具3---算术操作处理图像
查看>>
VUE JS 使用组件实现双向绑定
查看>>
减少页面加载时间的方法?
查看>>
未在本地计算机上注册microsoft.jet
查看>>
Restrictions.like() 模糊查询,以及使用DetachedCriteria查询的一般用法
查看>>
ssh整合
查看>>
TYVJ P1046 Blast Label:dp
查看>>
linux命令--virtualenv
查看>>
11g新特性与12c新特性
查看>>
查看哪些表的哪些列含有指定字符串(如‘andy’存在哪些表的哪些列中)
查看>>