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

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

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

人脸识别:

人脸特征值抽取 人脸特征值比对获得相似度介于 0.0~1.0之间 【相似度越接近1.0两个人脸特征数据越有可能是一个人】

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

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

首先,编写抽取人脸特征值的代码,此处需要注意最后一行代码,返回的时候去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());
}

`

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

`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,应该确定是一个人!!!!

使用已经封装好的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

转载于:https://my.oschina.net/u/4086500/blog/3041731

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值