【java】人脸识别 虹软ArcFace 2.0-抽取人脸特征并作比对

虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.html 虹软ArcFace功能简介html

人脸检测 人脸跟踪 人脸属性检测(性别、年龄) 人脸三维角度检测 人脸对比 本文使用到的SDK为本人本身使用JNA作的封装,2.0的使用比1.x的版本使用更方便,api更集中更科学java

人脸识别:算法

人脸特征值抽取
人脸特征值比对得到类似度介于 0.0~1.0之间
【类似度越接近1.0两我的脸特征数据越有多是一我的】

人脸特征值抽取的步骤:api

1,对图片或者视频流中的人脸位置进行识别
2,对人脸特征值进行抽取(里面算法比较专业,咱们就知道有这么回事就行)
3,保存人脸特征值入特征库

此处的demo,仅仅为了演示,直接进行两张图的特征抽取,并进行比对 素材,两张“朱莉”的照片 ide

首先,编写抽取人脸特征值的代码,此处须要注意最后一行代码,返回的时候去new 了一个新的FaceFeature,此处的目的是对FaceFeature作深度copy,由于虹软对内存作了一些优化,FaceFeature的内存会被重复使用,若是不作深度copy,反复调用该方法,FaceFeature中的特征数据会被覆盖优化

/**
	 * 
	 * @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());
	}

有了人脸特征抽取的方法,咱们再作人脸比对就很容易了,代码就几行:code

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

执行后,得到两张图片的人脸类似度值为视频

0.9412362

通常只要类似度超过0.8,就能够认为是一我的。这两张照片中人脸的类似度高达0.94,应该肯定是一我的!!!!htm

使用已经封装好的SDK进行人脸识别blog

https://www.jianshu.com/p/96636db03792

使用已经封装好的SDK进行人脸识别【人脸特征提取比对】

https://www.jianshu.com/p/ab64464571da

虹软ArcFace 2.0,java SDK使用、人脸信息识别(年龄、性别)

https://www.jianshu.com/p/cfe90f82be97

相关文章
相关标签/搜索