当前位置: 首页 > news >正文

人脸识别之--计算余弦相似度-android

余弦相似度是比对两个向量是否一致,余弦相似度是通过计算两个向量的夹角余弦值来衡量它们之间的相似度,算出来的值可以直接用作相似度的分数。

公式:

余弦相似度和欧式距离经常用来人脸识别特征对比。

其中:

1、余弦相似度是通过计算两个向量的夹角余弦值来衡量它们之间的相似度

2、欧式距离是通过计算两个向量之间的欧氏距离来衡量它们之间的相似度

  • 余弦相似度的优点是在计算相似度时不受向量的绝对大小影响,只受向量的方向影响,因此适用于文本、图像等数据的相似度度量。
  • 欧式距离的优点是直观易理解,计算简单。但是欧式距离在计算高维稀疏数据时可能会受到维度灾难的影响,且对异常值敏感。

在人脸识别中余弦距离用的比较多。

这里用来计算两组特征值的相似度,具体代码如下:

package com.hax.util;import com.hax.vo.FaceInfo;import java.util.List;/*** add hmy* 人脸比对工具* 2024年6月12日16:34:22*/
public class FaceUtils {// 计算平方值private static double euclideanNorm(double []vec) {double sum = 0.0;for (int i =0; i < vec.length; i++){sum += vec[i] * vec[i];}return Math.sqrt(sum);}// 计算平方值private static double euclideanNorm(List<Float> vec) {double sum = 0.0f;for (int i =0; i < vec.size(); i++){sum += vec.get(i) * vec.get(i);}return Math.sqrt(sum);}// 计算两个向量的点积private static double dotProduct(double[] vec1,double[] vec2) {double result = 0.0;for (int i = 0; i < vec1.length; ++i) {result += vec1[i] * vec2[i];}return result;}// 计算两个向量的点积private static double dotProduct(List<Float> vec1, List<Float> vec2) {double result = 0.0f;for (int i = 0; i < vec1.size(); ++i) {result += (vec1.get(i) * vec2.get(i));}return result;}//计算余弦相似度 返回具体分值public static double verification(FaceInfo src, FaceInfo dest) {double sim = dotProduct(src.getEmbed(), dest.getEmbed()) /(euclideanNorm(src.getEmbed()) * euclideanNorm(dest.getEmbed()));sim = 0.5 + sim * 0.5;//把-1到1的范围 隐射到0-1的范围 -1到0 映射0-0.5 0到0.5隐射到0.5-0.75 0.5到1 映射到0.75-1return sim;}
}

其中Embed值是List<Float> 值为512维。

相关文章:

人脸识别之--计算余弦相似度-android

余弦相似度是比对两个向量是否一致&#xff0c;余弦相似度是通过计算两个向量的夹角余弦值来衡量它们之间的相似度&#xff0c;算出来的值可以直接用作相似度的分数。 公式&#xff1a; 余弦相似度和欧式距离经常用来人脸识别特征对比。 其中&#xff1a; 1、余弦相似度是通…...

C语言王国——数据的内存管理

目录 一、引言 二、整形在内存中的存储 2.1 进制之间的转换 2.1.1 整形的二进制 2.1.2 十进制和二进制 2.1.3 十进制和八进制的转换 2.1.4 十六进制和十进制的转换 2.2 原码&#xff0c;反码&#xff0c;和补码 三、大、小端字节序 3.1 大小端的定义 3.2 为什么会有大…...

Kotlin 协程真的轻量吗?

前言 在官方文档的介绍中,提到了: 协程是轻量的 并给出了一个例子: fun main() = runBlocking {repeat(50_000) {// 启动大量的协程launch {delay...

Cantata 24.04 全新发布:以代码为中心的测试实现革命性升级!

简介 Cantata 24.04于2024年4月发布&#xff0c;以开创性的功能彻底革新了软件测试。此版本的主要功能是以代码为中心&#xff08;Code-Centred&#xff09;的方法&#xff0c;可以更快、更高效地在C/C的代码编辑器中创建单元和集成测试。 Cantata 24.04采用C中的最新标准并全…...

【问题记录】VMware 17.5.1下载VMware tools失败报错的解决方法

一&#xff0c;问题现象 Ubuntu可以上网&#xff0c;但是下载VMware tools失败&#xff0c;报错提示&#xff1a;“连接到更新服务器时发生证书错误。请检查您的Internet设置或联系您的系统管理员。” 下载安装VMware tools&#xff1a; 报错提示&#xff1a; 二&#xff0…...

Android - RadioGroup中多个radiobutton同时被选中问题

问题描述: 动态创建radio button, 并将多个button添加到radio group中。但是实际运行时多个radiobutton会被同时选中: 代码如下: mRadioGroup findViewById(R.id.radioGroup);mDevButtons new RadioButton[device_count];for(int i0;i<device_count;i) {mDevButtons[i] …...

如何在ElementTree文本中嵌入标签

在 ElementTree 中&#xff0c;你可以使用 Element 对象的方法来创建新的标签&#xff0c;并将其嵌入到现有的 XML 结构中。下面是一个简单的示例&#xff0c;演示了如何在 ElementTree 文本中嵌入新的标签&#xff1a; 1、问题背景 我正在使用Python ElementTree模块来处理HT…...

C语言宏定义+条件编译

1、宏定义 1.概念 C语言中的宏定义是一种预处理指令&#xff0c;它允许开发者为一段代码或值定义一个名称&#xff0c;称为宏。在编译程序时&#xff0c;预处理器会在实际编译之前对源代码进行预处理&#xff0c;将宏名称替换为其定义的内容。宏定义通常使用 #define 指令来实…...

python实现自动化测试框架如何进行数据参数化?这个包可以了解下

1.数据参数化介绍 只要你是负责编写自动化测试脚本的&#xff0c;数据参数化这个思想你就肯定会用 &#xff0c;数据参数化的工具你肯定的懂一些 &#xff0c;因为它能大大的提高我们自动化脚本编写效率 。 1.1什么是数据参数化 所谓的数据参数化 &#xff0c;是指所执行的测…...

面试题:Redis和MySql数据库如何保持数据一致性?

前提引入&#xff1a; 在高并发的场景下&#xff0c;大量的请求直接访问Mysql很容易造成性能问题。所以&#xff0c;我们都会用Redis来做数据的缓存&#xff0c;削减对数据库的请求。但是&#xff0c;Mysql和Redis是两种不同的数据库&#xff0c;如何保证不同数据库之间数据的一…...

直流遥控器 继电器8-10V应用 降压恒压SL3036电源芯片

在现代电子设备中&#xff0c;电源的稳定性和可靠性对于设备的正常运行至关重要。特别是在直流遥控器这类设备中&#xff0c;由于其需要长时间稳定运行且对电压稳定性要求较高&#xff0c;因此选择一款合适的电源芯片显得尤为重要。本文将重点介绍SL3036电源芯片在直流遥控器继…...

论文Abstract怎么写

摘要是你要写的最后一项内容 步骤 首先先通读自己的文章&#xff0c;清楚自己写的文章是研究型还是技术型&#xff0c;适合描述性的摘要还是知识性。 描述性摘要内含研究目的、目标及方向等&#xff0c;不讲研究结果。字数大约100-200字。知识性摘要则包含研究结果&#xff0c…...

PS系统教程19

渐变与照片调色 增加色彩背景新建图层选好渐变拉选图片渐变 与图层模式结合 也可以变换颜色 看起来比较自然&#xff0c;因为是与人物结合起来 也可以选择系统里面的一些色调 可以进行多次调试...

Excel函数之MAP

MAP 语法 MAP(array, [arrar2], ……, lambda(value,[value2], ……, calculation)) array:需要进行映射的数组,可以有多个 注:多个数组的形状大小尽可能保持一致,否则将出现错误值 value:数组中的每个值,每次取一个值,每个 array 按顺序对应一个 value calculation:…...

在2024年WWDC大会上,苹果宣布了其全新的“Apple Intelligence”AI功能以及ISO18功能

以下是一些主要的新增功能&#xff1a; Apple WWDC 2024开发者大会6月11日凌晨在总部Apple Park举行 1.智能照片编辑&#xff1a; 照片&#xff1a;AI驱动的照片润饰功能,可以根据用户描述生成自定义表情符号​ 2.Safari浏览助手&#xff1a; Safari&#xff1a;AI助手能够总…...

解决linux jenkins要求JDK版本与项目版本JDK不一致问题

背景–问题描述&#xff1a; 新入职公司&#xff0c;交接人说jenkins运行有问题&#xff0c;现在都是手动发布&#xff0c;具体原因让我自己看&#xff08;笑哭&#xff09;。我人都蒙了&#xff0c;测试环境都手动发布&#xff0c;那不是麻烦的要死&#xff01; 接手后&am…...

推荐一款WPF绘图插件OxyPlot

开始 使用 NuGet 包管理器添加对 OxyPlot 的引用&#xff08;如果要使用预发布包&#xff0c;请参阅下面的详细信息&#xff09;向用户界面添加PlotView在代码中创建一个PlotModel绑定到你的属性PlotModelModelPlotView 例子 您可以在代码存储库的文件夹中找到示例。/Source/Ex…...

普通表在线重定义为分区表

普通表在线转换成分区表示例 源表表结构如下&#xff1a; CREATE TABLE EDC_SEPERATOR ( SEPERATOR_ID NUMBER(15) NOT NULL, EQUIPMENTINFO NVARCHAR2(20), RECORD NVARCHAR2(50), TITLE NVARCHAR2(50), ID NVARCHAR2(50), TE…...

自动驾驶场景下TCP协议参数优化调整案例分享

RTT 往返时间&#xff0c;从tcp协议栈决定发包&#xff0c;到收到回包的时间。 包含本地驱动&#xff0c;网卡硬件&#xff0c;网线&#xff0c;交换机&#xff0c;收包方处理的耗时。需注意如果开了delayed ack&#xff0c;协议栈未做特殊处理&#xff08;默认没做&#xff…...

奇思妙想:多头RAG

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...