测试开源C#人脸识别模块ViewFaceCore(3:人脸特征提取和对比)

news2024/10/10 20:20:45

  ViewFaceCore模块的FaceRecognizer支持人脸特征提取和对比,将人脸中的关键信息转换为矢量信息,然后通过计算两个矢量的相似度以判断人脸的相似程序。
  调用FaceRecognizer对比人脸相似度主要包括以下步骤:
  1)调用faceDetector类获取图片的人脸信息;
  2)调用FaceLandmarker类获取人脸关键点信息;
  3)调用FaceRecognizer类的Extract函数,输入人脸关键点信息计算人脸的特征矢量;
  4)逐个计算人脸与人脸之间的特征矢量相似度,相似度高则为同一人脸。

  FaceRecognizer类中提供两种方式判断人脸相似度:
  1)IsSelf函数基于两个人脸特征矢量直接返回是否为同一人,此时判断相似度是基于程序中内置的阈值进行判断的,超过阈值则判断为同一人,否则为不同人。该阈值与人脸识别模型相关:68个关键点检测模型的默认阈值为0.62,5个关键点检测模型的默认阈值为0.55,戴口罩关键点检测模型的默认阈值为0.4,可以在FaceRecognizeConfig中调制阈值。
  2)Compare函数基于两个人脸特征矢量返回两个人脸的相似度值,此时由编程的人根据需要或特定算法判断是否为同一人,例如相似度最高的为同一人,或者所有相似度超过指定值的人脸均为同一人。

  根据上述内容,编写测试程序测试FaceRecognizer的基本用法,主要是先导入人像,计算人像的特征矢量,然后在导入另一图片,在图片中根据相似度判断是否存在人像,存在则用蓝色框标识,否则用红色框标识。
  采用68个关键点检测模型,调用IsSelf函数的测试程序效果如下所示,图片中人较多或者人脸看着差不多时,调用IsSelf、采用默认阈值会有误判。

在这里插入图片描述

在这里插入图片描述
  采用5个关键点检测模型,调用IsSelf函数的测试程序效果如下所示。
在这里插入图片描述
在这里插入图片描述

参考文献:
[1]https://github.com/ViewFaceCore/ViewFaceCore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/790171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一百一十六天学习记录:C++提高:STL-string(黑马教学视频)

string基本概念 string是C风格的字符串,而string本质上是一个类 string和char区别 1、char是一个指针 2、string是一个类,类内部封装了char*,管理这个字符串,是一个char型的容器。 特点: string类内部封装了很多成员方…

idea社区版(2023.1)设置spring boot项目热启动

热启动 在开发过程中,当写完一个功能我们需要运行应用程序测试时需要重启服务器,一个最简单的项目也要花费10多秒,如果是更大的项目则耗时更多。SpringBoot提供了spring-boot-devtools,使得项目在发生改动时能够自动重启应用 id…

hadoop3编译安装

1.参考资料 官方的https://github.com/apache/hadoop/blob/trunk/BUILDING.txt 2.编译环境 Linux系统:Centos7.2 Jdk版本:jdk1.8 cmake版本:3.19 Hadoop版本:3.1.2 Maven版本:3.6.3 Protobuf版本:2…

【数据分析专栏之Python篇】二、Jupyer Notebook安装配置及基本使用

文章目录 前言一、Jupter Notebook是什么1.1 简介1.2 组成部分1.3 Jupyter Notebook的主要特点 二、为什么使用Jupyter Notebook?三、安装四、Jupyter Notebok配置4.1 基本配置4.2 配置开机自启与后台运行4.3 开启代码自动补全 五、两种键盘输入模式5.1 编辑模式5.2 命令模式5…

J2EE通用分页02

目录 一.重构-提取公用方法 1.为了进行公共方法的抽取,需要找出上面实习中的可通用部分,和差异化部分 2.公用方法封装思路 3. 具体实现 二.分页标签 2.1 准备一个Servlet 3.2 结果展示页面 三. 过滤器解决中文乱码问题 四.加入分页功能 四…

Qt Core学习日记——第七天QMetaObject(上)

每一个声明Q_OBJECT的类都具有QMetaObject对象 Q_OBJECT宏源代码: #define Q_OBJECT \ public: \ QT_WARNING_PUSH \ Q_OBJECT_NO_OVERRIDE_WARNING \ static const QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ vir…

Rust vs Go:常用语法对比(五)

题图来自 Rust vs Go 2023[1] 81. Round floating point number to integer Declare integer y and initialize it with the rounded value of floating point number x . Ties (when the fractional part of x is exactly .5) must be rounded up (to positive infinity). 按规…

垃圾回收标记阶段算法

1.标记阶段的目的 主要是在GC在前,判断出哪些是有用的对象,哪些是需要回收的对象,只有被标记为垃圾对象,GC才会对其进行垃圾回收。判断对象是否为垃圾对象的两种方式:引用计数算法和可达性分析算法。 2.引用计数算法…

MySQL基础(一)

目录 前言 一、概述 1.什么是数据库 2.数据库能干什么 3.为什么要用数据库,优势、特性 二、数据库类型 (一)、关系型数据库,RDBMS 1.概述 2.特点 3.代表产品 (二)、非关系型数据库,No…

性能测试常见故障和解决思路

目录 一、性能问题分析流程 二、内存溢出 (一)堆内存溢出 (二)永久代/方法区溢出 (三)栈内存溢出 (四)系统内存溢出 三、CPU过高 (一)us cpu过高 &a…

flink cdc环境搭建

1.下载flink https://archive.apache.org/dist/flink/flink-1.12.2/ 2.修改flink-conf.yaml #根据自己电脑核数修改,这里我设置为4,因为系统分配了4核 jobmanager.rpc.address: localhost #主机名根据自己设定 taskmanager.numberOfTaskSlots: 4 3.下载…

Databend 开源周报第 103 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 创建网络策略 …

机器学习深度学习——图像分类数据集

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——softmax回归(下) 📚订阅专栏:机器学习&&深度学习…

【腾讯云 Cloud Studio 实战训练营】沉浸式体验编写一个博客系统

文章目录 前言新建工作空间登录(注册)Cloud Studio 账号:进入 Cloud Studio 控制台:配置工作空间参数:确认并创建工作空间:项目搭建 配置nuxt 脚手架运行项目报错信息解决错误脚手架运行预览问题 开启博客代码配置layout首页配置 …

关于java中的内存回收机制

C中如果创建了一个对象,当不再使用的时候,需要手动调用delete方法来进行销毁。而Java提供了一套完整的垃圾回收机制(gc)。它会自动扫描内存中我们所创建过且不再使用的对象,进行自动销毁。但是gc并不完美,现…

7plus透明屏有哪些全新的使用体验?

7plus透明屏是指苹果公司推出的iPhone 7 Plus手机配备了透明屏幕的一种特殊版本。透明屏幕是一种新型的显示技术,可以使屏幕看起来透明,让用户感觉手机屏幕上的内容仿佛悬浮在空中一样。 透明屏幕的出现给用户带来了全新的使用体验。 首先,透…

对象存活判断

对象存活判断 在堆里存放着几乎所有的 Java 对象实例,在 GC 执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC 才会在执行垃圾回收时,释放掉其所占用的内存…

微信小程序客服系统-对接消息推送-对接模板订阅消息-嵌入webview客服链接

想要给自己的小程序增加客服系统功能 小程序客服对接导自己的系统等需求,可以参照我开发的客服系统,实现私有化部署搭建对接的微信小程序 小程序消息推送对接 首先登录小程序后台在小程序后台>开发管理>开发设置>服务器域名部分,配置…

基于Java+SpringBoot+vue前后端分离学科竞赛管理系统设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Linux中的库

一、库是什么 库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容。 二、库的分类和优缺点 静态库:是在程…