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