前言:對于本次ArcSoft虹軟人臉識別接入井仰,僅作為學習交流恶守,以下內容僅為記錄驗證過程第献。
前期準備:申請賬號、創(chuàng)建應用兔港,之后在虹軟開發(fā)者中心即可看到SDK KEY庸毫、 APP ID 以及可以下載官方demo。
本次接入的是“人臉識別增強版”衫樊,? ?Windows? java版本? ? ? V4.1? 飒赃。??
SDK文檔中心:https://ai.arcsoft.com.cn/manual/docs#/149#344_activeOffline_502
官方Demo:https://arcfacepackages.blob.core.chinacloudapi.cn/arcface-packages/sdk/arcface_pro/windowsx64/ArcSoft_ArcFacePro_windows_x64_java_V4.1.zip
一、搭建自己的微服務應用程序 ,該步驟不在此進行描述盒揉。
二晋被、打開官網Demo,將libs 的jar包文件 引入自己的工程刚盈,如下圖所示:
從File -> Project Structru 進入,并如下圖操作引入
三挂脑、創(chuàng)建Controller 用于本次的驗證藕漱,寫如下激活方法,并調用激活崭闲,本次使用的是在線激活方式肋联。
// 激活
? ? private void jihuoSDK(){
String appId = "您的appid";
String sdkKey = "您的SDK key";
String activeKey = "您的激活碼";
System.err.println("注意,如果返回的errorCode不為0刁俭,可查看com.arcsoft.face.enums.ErrorInfo類獲取相應的錯誤信息");
//人臉識別引擎庫存放路徑
FaceEngine faceEngine = new FaceEngine("填寫您 人臉識別引擎庫存放路徑橄仍,即WIN64文件夾所在路徑? ");
//激活引擎
int errorCode = faceEngine.activeOnline(appId, sdkKey, activeKey);
System.out.println("引擎激活errorCode:" + errorCode);
ActiveDeviceInfo activeDeviceInfo = new ActiveDeviceInfo();
//采集設備信息(可離線) errorCode = faceEngine.getActiveDeviceInfo(activeDeviceInfo);
System.out.println("采集設備信息errorCode:" + errorCode); System.out.println("設備信息:" + activeDeviceInfo.getDeviceInfo());
// 離線激活
// faceEngine.activeOffline("d:\\ArcFacePro64.dat.offline");
ActiveFileInfo activeFileInfo = new ActiveFileInfo();
errorCode = faceEngine.getActiveFileInfo(activeFileInfo);
System.out.println("獲取激活文件errorCode:" + errorCode);
System.out.println("激活文件信息:" + activeFileInfo.toString());
}
四、創(chuàng)建實例,以及對應的初始化方法 牍戚,僅為后面逐個驗證使用侮繁,這部分與官網Demo內容有所出入
private FaceEngine faceEngine;? // 引擎
private FunctionConfiguration functionConfiguration;? //?功能配置類
private EngineConfiguration engineConfiguration; //引擎配置類
//引擎配置
private void initEngineConfiguration(){
if(this.engineConfiguration == null){
System.out.println("需要初始化engineConfiguration");
this.engineConfiguration = new EngineConfiguration(); engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); engineConfiguration.setDetectFaceMaxNum(10);
}else {
System.out.println("不需要初始化engineConfiguration"); }}
//功能配置(人物特征),由于使用到不同功能的功能配置不同如孝,因此獨立抽出一個方法
private void initFunctionConfiguration(){
if(this.functionConfiguration == null){
System.out.println("不需要初始化functionConfiguration");
this.functionConfiguration = new FunctionConfiguration();
functionConfiguration.setSupportAge(true);
functionConfiguration.setSupportFaceDetect(true);
functionConfiguration.setSupportFaceRecognition(true);
functionConfiguration.setSupportGender(true);
functionConfiguration.setSupportLiveness(true);
functionConfiguration.setSupportIRLiveness(true);
functionConfiguration.setSupportImageQuality(true);
functionConfiguration.setSupportMaskDetect(true);
functionConfiguration.setSupportUpdateFaceData(true);
engineConfiguration.setFunctionConfiguration(functionConfiguration);
}else{
System.out.println("不需要初始化functionConfiguration");
}
}
//初始化引擎
private void initFaceEngine(){
if(this.faceEngine == null){
System.out.println("需要初始化faceEngine");
this.faceEngine = new FaceEngine("引擎所在路徑");
int errorCode = faceEngine.init(engineConfiguration);
System.out.println("初始化引擎errorCode:" + errorCode);
VersionInfo version = faceEngine.getVersion();
System.out.println(version);
}
else { System.out.println("不需要初始化faceEngine");
}
}
五宪哩、兩張圖片的人物相似度對比
六、人臉屬性檢測(年齡第晰、性別锁孟、活體、口罩)
七茁瘦、人臉注冊
八品抽、人員人臉識別(從注冊的人物中識別出相似度最高)
九、查看注冊人數