Java調用離線人臉識別SDK 虹軟arcface 2.0


[虹軟人臉識別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 開源協議,手動比心😊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM