產(chǎn)品地址:http://ai.arcsoft.com.cn/product/arcface.html
虹軟ArcFace功能簡介
- 人臉檢測
- 人臉跟蹤
- 人臉屬性檢測(性別、年齡)
- 人臉三維角度檢測
- 人臉對比
虹軟arcface 2.0,相較于以前的版本,api有很大的變化
以前的版本,都是模塊化分開的,如人臉檢測是獨(dú)立的、人臉對比識別是獨(dú)立的、年齡識別、性別識別等都是獨(dú)立的。
2.0版本,整體提供了一個完整的包,如果同時會用到各個功能,更利于使用!
官方提供了windows版本,linux版本,android版本,android版本其實(shí)就是java版本,但因?yàn)槠涫腔赼ndroid平臺,應(yīng)該只有在android平臺上才可以使用。為了滿足java服務(wù)端(windows或Linux 如centos等 平臺)的使用,本人對arcface 2.0的API使用JNA進(jìn)行了封裝。首先需要去虹軟平臺做開發(fā)者認(rèn)證、下載虹軟arcface 2.0 的sdk,參考官方提供的開發(fā)者指南進(jìn)行封裝
封裝后的Engine代碼
package com.arcsoft.face;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.FloatByReference;
import com.sun.jna.ptr.PointerByReference;
public interface FaceEngine extends Library{
public static final long MOK = 0;
public static final int ASF_NONE=0x00000000;
public static final int ASF_FACE_DETECT=0x00000001;
public static final int ASF_FACERECOGNITION=0x00000004;
public static final int ASF_AGE=0x00000008;
public static final int ASF_GENDER=0x00000010;
public static final int ASF_FACE3DANGLE=0x00000020;
public static final int ASF_DETECT_MODE_VIDEO=0x00000000;
public static final int ASF_DETECT_MODE_IMAGE=0xFFFFFFFF;
FaceEngine INSTANCE = (FaceEngine)Native.loadLibrary("libarcsoft_face_engine",FaceEngine.class);
// 激活
NativeLong ASFActivation(String appId, String sdkKey);
/**
*
* @param detectMode
* [in] VIDEO 模式/IMAGE 模式 VIDEO 模式:處理連續(xù)幀的圖像數(shù)據(jù),并返回檢測結(jié)果,需要將所有圖
* 像幀的數(shù)據(jù)都傳入接口進(jìn)行處理; IMAGE 模式:處理單幀的圖像數(shù)據(jù),并返回檢測結(jié)果
* @param detectFaceOrientPriority
* [in] 檢測臉部的角度優(yōu)先值,推薦僅檢測單一角度,效果更優(yōu)
* @param detectFaceScaleVal[in]
* 用于數(shù)值化表示的最小人臉尺寸,該尺寸代表人臉尺寸相對于圖片長 邊的占比。 video 模式有效值范圍[2,16], Image
* 模式有效值范圍[2,32] 推薦值為 16
* @param detectFaceMaxNum
* [in] 最大需要檢測的人臉個數(shù)[1-50]
* @param combinedMask
* [in] 用戶選擇需要檢測的功能組合,可單個或多個
* @param phEngine
* [out] 初始化返回的引擎 handle
* @return
*/
NativeLong ASFInitEngine(long detectMode, int detectFaceOrientPriority, int detectFaceScaleVal,
int detectFaceMaxNum, int combinedMask, PointerByReference phEngine);
/**
*
* @param hEngine
* [in] 引擎 handle
* @param width
* [in] 圖片寬度為 4 的倍數(shù)且大于 0
* @param height
* [in] YUYV/I420/NV21/NV12 格式的圖片高度為 2 的倍數(shù),BGR24 格式的圖片高度不限制
* @param format
* [in] 顏色空間格式
* @param pImgData
* [in] 圖片數(shù)據(jù)
* @param detectedFaces
* [out] 檢測到的人臉信息
* @return
*/
NativeLong ASFDetectFaces(Pointer hEngine, int width, int height, int format, byte[] imgData,
MultiFaceInfo detectedFaces);
/**
*
* @param hEngine
* [in] 引擎 handle
* @param width
* [in] 圖片寬度為 4 的倍數(shù)且大于 0
* @param height
* [in] YUYV/I420/NV21/NV12 格式的圖片高度為 2 的倍數(shù),BGR24 格式的圖片高度不限制
* @param format
* [in] 顏色空間格式
* @param imgData
* [in] 圖片數(shù)據(jù)
* @param faceInfo
* [in] 單張人臉位置和角度信息
* @param feature
* [out] 人臉特征
* @return
*/
NativeLong ASFFaceFeatureExtract(Pointer hEngine, int width, int height, int format, byte[] imgData,
SingleFaceInfo faceInfo, FaceFeature feature);
/**
*
* @param hEngine
* @param feature1
* @param feature2
* @param confidenceLevel [out] 比對結(jié)果,置信度數(shù)值
* @return
*/
NativeLong ASFFaceFeatureCompare(Pointer hEngine, FaceFeature feature1, FaceFeature feature2,
FloatByReference confidenceLevel);
/**
*
* @param hEngine [in]
* @param width [in]
* @param height [in]
* @param format [in]
* @param imgData [in]
* @param multiFaceInfo [in]
* @param combinedMask [in] 初始化中參數(shù) combinedMask 與 ASF_AGE|
ASF_FACE3DANGLE 的交集的子集
* @return 成功返回 MOK,否則返回失敗 codes。
*/
NativeLong ASFProcess(Pointer hEngine,int width, int height,int format, byte[] imgData,MultiFaceInfo multiFaceInfo,int combinedMask);
/**
* 獲得年齡,需要先調(diào)用ASFProcess 進(jìn)行預(yù)處理,最高支持4個人臉,多于4張人臉,結(jié)果不可靠(官方說法)
* @param hEngine
* @param ageInfo
* @return
*/
NativeLong ASFGetAge(Pointer hEngine,AgeInfo ageInfo);
/**
* 獲得性別信息
* @param hEngine
* @param genderInfo
* @return
*/
NativeLong ASFGetGender(Pointer hEngine,GenderInfo genderInfo);
/**
* 獲得人臉角度數(shù)據(jù)
* @param hEngine
* @param face3dAngle
* @return
*/
NativeLong ASFGetFace3DAngle(Pointer hEngine,Face3DAngle face3dAngle);
Version ASFGetVersion(Pointer hEngine);
NativeLong ASFUninitEngine(Pointer hEngine);
}
使用已經(jīng)封裝好的SDK進(jìn)行人臉識別
http://www.itdecent.cn/p/96636db03792
使用已經(jīng)封裝好的SDK進(jìn)行人臉識別【人臉特征提取比對】
http://www.itdecent.cn/p/ab64464571da
虹軟ArcFace 2.0,java SDK使用、人臉信息識別(年齡、性別)
http://www.itdecent.cn/p/cfe90f82be97
需要完整代碼,加qq:79295735