(8)seetaface6 JNI之人脸相似度1:1(包含戴口罩人脸相似度)计算
项目地址
seetaface6SDK地址
前期准备
- 下载项目
- 下载seetaface6 模型文件: 模型文件1 (code:ngne),模型文件2 (code: t6j0)
- 配置模型文件到项目中,运行Test
人脸特征相似度介绍
- 特征提取过程可以分为两个步骤:1. 根据人脸5个关键点裁剪出人脸区域;2. 将人脸区域输入特征提取网络提取特征。
这两个步骤可以分开调用,也可以独立调用。 - 特征长度是不同模型可能不同的,要使用faceRecognizer.GetExtractFeatureSize()方法获取当前使用模型提取的特征长度。
- 相似度的范围是[0, 1],但是需要注意的是,如果是直接用內积计算的话,因为特征中存在复数,所以计算出的相似度可能为负数。识别器内部会将负数映射到0。
- 在一些特殊的情况下,需要将特征提取分开两步进行,比如前端裁剪处理图片,服务器进行特征提取和对比。
- 戴口罩人脸相似度计算需要切换成 face_recognizer_mask.csta模型
- 下面代码中,一张图片中可能有多个人脸(也可能没有人脸),这里演示用图片至少包含一个人脸,且只取第一个。
人脸特征模型介绍
模型 | 模型说明 | 备注 |
---|---|---|
face_recognizer.csta | 高精度人脸识别人脸向量特征提取模型,建议阈值:0.62 | 返回1024长度向量特征 |
face_recognizer_mask.csta | 戴口罩人脸向量特征提取模型,建议阈值:0.48 | 返回512长度向量特征 |
face_recognizer_light.csta | 轻量级人脸向量特征提取模型,建议阈值:0.55 | 返回512长度向量特征 |
人脸特征相似度代码
package com.seeta.sdk.proxy;import com.seeta.proxy.FaceDetectorProxy;
import com.seeta.proxy.FaceLandmarkerProxy;
import com.seeta.proxy.FaceRecognizerProxy;
import com.seeta.pool.SeetaConfSetting;
import com.seeta.sdk.*;
import com.seeta.sdk.util.LoadNativeCore;
import com.seeta.sdk.util.SeetafaceUtil;/*** 人脸特征相似度 1:1* 人脸相似度计算*/
public class FaceRecognizerProxyTest {static {LoadNativeCore.LOAD_NATIVE(SeetaDevice.SEETA_DEVICE_AUTO);}//模型文件夹路径public static String CSTA_PATH = "E:\\models";// 拼接模型路径public static String[] detector_cstas = {CSTA_PATH + "/face_detector.csta"};// 人脸关键点定位模型路径拼接public static String[] landmarker_cstas = {CSTA_PATH + "/face_landmarker_pts5.csta"};//高精度人脸特征提取模型,1024维public static String[] recognizer_cstas = {CSTA_PATH + "/face_recognizer.csta"};public static String fileName = "E:\\111.jpg";public static String fileName2 = "E:\\222.jpg";public static void main(String[] args) {//人脸识别检测器对象池配置,可以配置对象的个数哦SeetaConfSetting detectorPoolSetting = new SeetaConfSetting(new SeetaModelSetting(0, detector_cstas, SeetaDevice.SEETA_DEVICE_AUTO));//人脸检测器对象池代理 , spring boot可以用FaceDetectorProxy来配置BeanFaceDetectorProxy faceDetectorProxy = new FaceDetectorProxy(detectorPoolSetting);//人脸关键点定位器对象池配置SeetaConfSetting faceLandmarkerPoolSetting = new SeetaConfSetting(new SeetaModelSetting(0, landmarker_cstas, SeetaDevice.SEETA_DEVICE_AUTO));//人脸关键点定位器对象池代理 , spring boot可以用FaceLandmarkerProxy来配置BeanFaceLandmarkerProxy faceLandmarkerProxy = new FaceLandmarkerProxy(faceLandmarkerPoolSetting);SeetaConfSetting faceRecognizerPoolSetting = new SeetaConfSetting(new SeetaModelSetting(0, recognizer_cstas, SeetaDevice.SEETA_DEVICE_AUTO));//人脸特征提取器,人脸特征相似度计算器FaceRecognizerProxy faceRecognizerProxy = new FaceRecognizerProxy(faceRecognizerPoolSetting);SeetaImageData image1 = SeetafaceUtil.toSeetaImageData(fileName);SeetaImageData image2 = SeetafaceUtil.toSeetaImageData(fileName2);try {//照片1SeetaRect[] detects1 = faceDetectorProxy.detect(image1);//detects1[0] 图片中可能有多个人脸(也可能没有人脸),这里演示只取第一个SeetaPointF[] pointFS1 = faceLandmarkerProxy.mark(image1, detects1[0]);//向量特征数组float[] features1 = faceRecognizerProxy.extract(image1, pointFS1);//照片2SeetaRect[] detects2 = faceDetectorProxy.detect(image2);//detects1[0] 图片中可能有多个人脸(也可能没有人脸),这里演示只取第一个SeetaPointF[] pointFS2 = faceLandmarkerProxy.mark(image2, detects2[0]);//向量特征数组float[] features2 = faceRecognizerProxy.extract(image2, pointFS2);//对比向量特征数组if (features1 != null && features2 != null) {float calculateSimilarity = faceRecognizerProxy.cosineSimilarity(features1, features2);System.out.printf("第相似度:%f\n", calculateSimilarity);}} catch (Exception e) {e.printStackTrace();}}
}
输出结果
- float: 分数
结果:0.776509
总结
1. 人脸识别过程复杂,但这个代码简单。
2. 精度高,这边的模型都是中科院商业开源的,比起社区的模型,用到的训练集多很多。
3. 功能齐全 :
人脸检测和关键点定位
人脸特征提取和对比
人脸特征提取
人脸特征对比
活体检测
人脸跟踪
质量评估
年龄识别
性别识别
口罩检测
口罩人脸识别
眼睛状态检测
不懂seetaface6SDK的可以先看gitee项目哦
(8)seetaface6 JNI之人脸相似度1:1(包含戴口罩人脸相似度)计算相关推荐
- 【英特尔杯记录】Python戴口罩人脸识别部分
博主参加英特尔杯后,主要完成机器视觉相关代码的编写,首先是人脸识别 采用Dlib作为人脸检测分类器,对于戴口罩人脸也有较好的识别效果,最终将人脸图像上传至百度云人脸库,通过调用百度API进行人脸识别 ...
- 智能抗疫 | 戴口罩人脸数据助力科技防疫
新冠肺炎疫情防控牵动着国人的心,同时也是中国科技实力的一次临场考验."提升科技防控疫情力度,积极为打赢疫情防控阻击战作出贡献."1月29日,国资委主任郝鹏表示.帮助安检及医护人员提 ...
- 统一操作系统 UOS 官网正式上线;旷视回应“戴口罩人脸识别”;IntelliJ IDEA 2019.3.3 发布 | 极客头条...
整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...
- 京东AI:戴口罩人脸识别pytorch开源库
项目介绍 该项目是JDAI开源的基于PyTorch的人脸识别工具箱,提供了一个包括目前主流backbone和head的的training module,一个标准化的人脸识别evaluation mod ...
- Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集)
Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集) 目录 Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集) 1.戴口罩识别的方法 (1)基于多类别 ...
- 由火车站戴口罩人脸识别入站感想
由火车站戴口罩人脸识别入站感想 个人经历 过完春节,去上班,疫情还很严重,火车站机器安检,需要摘下口罩刷身份证才可以安检成功,在摘下口罩的那一刻,慌得一批. 最近经历 最近又坐火车,还是机器安检,这时 ...
- 戴口罩人脸识别、高精度人脸识别解决方案
1.数据集的整理及清洗 1. 线上数据40万人,2000万张图 2. glint360,36万人,2000多万张图 2.人脸预处理 ----采用自研的图像处理算法对人脸进行 "中心矫正&qu ...
- 戴上口罩AI变“脸盲”?口罩人脸识别黑科技来袭
疫情期间,口罩在全国抗疫中起到了关键作用.但在口罩成为每一位公民"标配"的同时,对诸如"刷脸"支付.高铁闸机身份认证等需要人脸识别的场景提出了挑战. 口罩.帽子 ...
- 中国队拿下口罩人脸识别世界第一!还将推出全球最大公开人脸数据集
允中 发自 凹非寺 量子位 编辑 | 公众号 QbitAI 在新冠疫情全球大流行的背景下,佩戴口罩几乎是所有国家和地区居民出行的必备选项.但严重的面部遮挡会对人脸识别技术构成严重挑战,受此影响,类似手 ...
- 人脸识别与膜虹识别_当人脸识别遭遇口罩,虹膜识别的机会来了
本文转自[科技日报]: 当人脸识别遭遇口罩,虹膜识别的机会来了 专家指出虹膜识别标准体系还需进一步完善 本报记者 马爱平 突如其来的新冠肺炎疫情,让人脸识别(Face ID)技术遭遇尴尬,因为一旦用户 ...
最新文章
- 【CV】Pytorch一小时入门教程-代码详解
- c语言 char转int_图文并茂,一文讲透C语言结构体内存对齐
- 去杠杆高歌猛进,借呗会倒闭吗?
- java--用 * 打印出各种图形(新手请进)
- 计算机学院考勤管理办法,计科学院进一步加强课堂考勤实施意见(试行)
- 类对象作为函数参数进行值传递
- 联发科推全新P系芯片 聚焦中端市场
- 2016年前端web开发趋势总结
- python if not A 和 if A is None
- 基于Java前后端分离的在线蛋糕销售系统(含优秀毕业论文)
- 在线抽奖、限时秒杀、拼团抢购,别的商城有的功能你也可以轻松拥有!
- vue3中使用swiper7及autoplay无效问题
- Win10系统导出证书私钥及公钥
- JAVA对接发送SMS短信服务
- 带你学微信小程序开发
- Mysql 8.0 安装详细教程、问题处理、卸载(亲测可用)
- python爬虫——正则表达式
- 解决Xmanager重复输入两次的问题
- 苹果cms首页文件html,苹果cms首页视频不更新怎么解决
- 一文掌握APQP(产品质量策划)