乐趣区

Java调用离线人脸识别SDK 虹软arcface 2.0

虹软人脸识别 SDK 之 Java 版,支持 SDK 1.1+,以及当前最新版本 2.0,滴滴,抓紧上车!
JDK SDK Win release license status
前言
由于业务需求,最近跟人脸识别杠上了,本以为虹软提供的 SDK 是那种面向开发语言的,结果是一堆 dll······像我这样的 Java 猿突然就感觉整个人都不好了;近期赶上了 SDK2.0 的升级,在官方论坛、Google、百度、QQ 等等的帮助下,爬过了一个又一个坑,终于搞定了!噗!回过头来发现不少伙伴们都像我当初一样迷茫,So,我回来拯救世界了~
后更:刚写了没多久,虹软 SDK 的 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-wan… 然后将项目导入到 Eclipse 或 IDEA 中并进行 maven update
下载 DLL
登录虹软官方网站,下载 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 的常见问题指南虹软官方问答指导集锦常见问题
(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 开源协议,手动比心????

退出移动版