java 虹軟ArcFace 2.0,java SDK使用、人臉識別-抽取人臉特徵並作比對

java人臉識別 虹軟ArcFace 2.0,java SDK使用、人臉識別-抽取人臉特徵並作比對html

虹軟產品地址:http://ai.arcsoft.com.cn/product/arcface.html 虹軟ArcFace功能簡介java

人臉檢測 人臉跟蹤 人臉屬性檢測(性別、年齡) 人臉三維角度檢測 人臉對比 本文使用到的SDK爲本人本身使用JNA作的封裝,2.0的使用比1.x的版本使用更方便,api更集中更科學 人臉識別:算法

人臉特徵值抽取
人臉特徵值比對得到類似度介於 0.0~1.0之間
【類似度越接近1.0兩我的臉特徵數據越有多是一我的】

人臉特徵值抽取的步驟:api

1,對圖片或者視頻流中的人臉位置進行識別
2,對人臉特徵值進行抽取(裏面算法比較專業,咱們就知道有這麼回事就行)
3,保存人臉特徵值入特徵庫

此處的demo,僅僅爲了演示,直接進行兩張圖的特徵抽取,並進行比對ide

素材,兩張「朱莉」的照片優化

在這裏插入圖片描述

在這裏插入圖片描述

首先,編寫抽取人臉特徵值的代碼,此處須要注意最後一行代碼,返回的時候去new 了一個新的FaceFeature,此處的目的是對FaceFeature作深度copy,由於虹軟對內存作了一些優化,FaceFeature的內存會被重複使用,若是不作深度copy,反覆調用該方法,FaceFeature中的特徵數據會被覆蓋code

/**
	 * 
	 * @param ins  FaceEngine ins = FaceEngine.INSTANCE
	 * @param hEngine  初始化之後的引擎實例
	 * @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());
	}

有了人臉特徵抽取的方法,咱們再作人臉比對就很容易了,代碼就幾行:視頻

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());

執行後,得到兩張圖片的人臉類似度值爲htm

0.9412362

通常只要類似度超過0.8,就能夠認爲是一我的。這兩張照片中人臉的類似度高達0.94,應該肯定是一我的!!!!blog

使用已經封裝好的SDK進行人臉識別 https://www.jianshu.com/p/96636db03792

使用已經封裝好的SDK進行人臉識別【人臉特徵提取比對】 https://www.jianshu.com/p/ab64464571da

虹軟ArcFace 2.0,java SDK使用、人臉信息識別(年齡、性別) https://www.jianshu.com/p/cfe90f82be97

相關文章
相關標籤/搜索