虹軟產(chǎn)品地址:http://ai.arcsoft.com.cn/product/arcface.html
虹軟ArcFace功能簡(jiǎn)介
- 人臉檢測(cè)
- 人臉跟蹤
- 人臉屬性檢測(cè)(性別、年齡)
- 人臉三維角度檢測(cè)
- 人臉對(duì)比
本文使用到的SDK為本人自己使用JNA做的封裝,2.0的使用比1.x的版本使用更方便,api更集中更科學(xué)
人臉識(shí)別:
人臉特征值抽取
人臉特征值比對(duì)獲得相似度介于 0.0~1.0之間
【相似度越接近1.0兩個(gè)人臉特征數(shù)據(jù)越有可能是一個(gè)人】
人臉特征值抽取的步驟:
1,對(duì)圖片或者視頻流中的人臉位置進(jìn)行識(shí)別
2,對(duì)人臉特征值進(jìn)行抽?。ɡ锩嫠惴ū容^專業(yè),我們就知道有這么回事就行)
3,保存人臉特征值入特征庫(kù)
此處的demo,僅僅為了演示,直接進(jìn)行兩張圖的特征抽取,并進(jìn)行比對(duì)
素材,兩張“朱莉”的照片


首先,編寫抽取人臉特征值的代碼,此處需要注意最后一行代碼,返回的時(shí)候去new 了一個(gè)新的FaceFeature,此處的目的是對(duì)FaceFeature做深度copy,因?yàn)楹畿泴?duì)內(nèi)存做了一些優(yōu)化,F(xiàn)aceFeature的內(nèi)存會(huì)被重復(fù)使用,如果不做深度copy,反復(fù)調(diào)用該方法,F(xiàn)aceFeature中的特征數(shù)據(jù)會(huì)被覆蓋
/**
*
* @param ins FaceEngine ins = FaceEngine.INSTANCE
* @param hEngine 初始化之後的引擎實(shí)例
* @param imgPath 圖片路徑
* @return 人臉特征
*/
public static FaceFeature getFeature(FaceEngine ins,Pointer hEngine,String imgPath) {
IplImage img = cvLoadImage(imgPath);
MultiFaceInfo detectedFaces = new MultiFaceInfo();
BytePointer bp = img.arrayData();
byte[] imgData = new byte[img.arraySize()];
bp.get(imgData);
ins.ASFDetectFaces(hEngine, img.width(), img.height(), ASVL_COLOR_FORMAT.ASVL_PAF_RGB24_B8G8R8,imgData, detectedFaces);
SingleFaceInfo faceInfo = new SingleFaceInfo();
faceInfo.faceRect = detectedFaces.getFaceRects()[0];
faceInfo.faceOrient = detectedFaces.getFaceOriends()[0];
FaceFeature feature = new FaceFeature();
ins.ASFFaceFeatureExtract(hEngine, img.width(), img.height(), ASVL_COLOR_FORMAT.ASVL_PAF_RGB24_B8G8R8, imgData, faceInfo, feature);
return new FaceFeature(feature.getFeatureData());
}
有了人臉特征抽取的方法,我們?cè)僮鋈四槺葘?duì)就很容易了,代碼就幾行:
FaceFeature feature1 = FeatureExtractTest.getFeature(ins,hEngine, "zl1.jpg"); FaceFeature feature2 = FeatureExtractTest.getFeature(ins,hEngine, "zl3.jpg");
FloatByReference confidenceLevel = new FloatByReference();
ins.ASFFaceFeatureCompare(hEngine, feature1, feature2, confidenceLevel);
System.out.println(confidenceLevel.getValue());
執(zhí)行后,獲得兩張圖片的人臉相似度值為
0.9412362
一般只要相似度超過0.8,就可以認(rèn)為是一個(gè)人。這兩張照片中人臉的相似度高達(dá)0.94,應(yīng)該確定是一個(gè)人?。。?!
使用已經(jīng)封裝好的SDK進(jìn)行人臉識(shí)別
http://www.itdecent.cn/p/96636db03792
使用已經(jīng)封裝好的SDK進(jìn)行人臉識(shí)別【人臉特征提取比對(duì)】
http://www.itdecent.cn/p/ab64464571da
虹軟ArcFace 2.0,java SDK使用、人臉信息識(shí)別(年齡、性別)
http://www.itdecent.cn/p/cfe90f82be97
需要完整代碼,加qq:79295735