CMC、mAP解析:图像检索领域评价指标

news2024/11/13 15:22:39

1. CMC: Cumulative Matching Characteristics 累计匹配特征

CMC是一种计算 top-n 的评价指标,主要用来评估闭集中rank-n的正确率。
下面举例说明:
在双模态特征匹配中。底库 Gallery 中有10条数据(label分别为1,2,3,4···10),现在来了一个待查询 query的数据(label = 1)。通过模型提取特征并计算相似度以后,如果和Gallery中的数据按照相似度从高到低进行排序后,得到的识别结果是:

  1. {1,2,3,4,5···,10}, 因为第一个就已经匹配上了,所以说rank-1 = 100%
  2. {2,1,3,4,5···,10}, 因为第一个计算出来的label是2,没有匹配上,因此 rank-1 = 0, rank-2 = 100%,rank -5同理肯定也是100% 因为前两个已经得到了正确的结果,那么前五个中一定包含正确的结果。
  • 如果存在多条query数据时,CMC指标一般会直接 取平均 的做法

2. mAP: mean Average Precision

mAP 其实就是对AP的平均值,因为mAP是对准确率进行两次平均以后的一个评价指标,因此我们需要首先明确准确率precision、召回率 recall的概念:
在一般情况下,Precision就是指检索出来的条目有多少是正确的,而Recall则表示库中所有正确的条目,有多少被检索出来。
可以表示为以下公式:
P r e c i s i o n = 检索出来的正确信息数目 检索出来的信息总数 Precision = \frac {检索出来的正确信息数目} {检索出来的信息总数} Precision=检索出来的信息总数检索出来的正确信息数目

R e c a l l = 检索出来的正确信息数目 库中的信息总条数 Recall = \frac{检索出来的正确信息数目}{库中的信息总条数} Recall=库中的信息总条数检索出来的正确信息数目

  • 需要注意的是Precision和Recall都是针对某一个类别而言的。
    在信息检索领域,AP指的是不同召回率上正确率的平均值。而现在的有些检索系统为了能够快速返回结果,在计算AP时就不再考虑召回率。换句话说,如果数据库中和查询信息相关的5条信息,分别出现在查询结果中的第1、3、6、9、10位,那么这次查询的AP就是:
    A P = ( 1 1 + 2 3 + 3 6 + 4 9 + 5 10 ) 5 = 0.62 AP = \frac{(\frac{1}{1} + \frac{2}{3} + \frac{3}{6} + \frac{4}{9} + \frac{5}{10})}{5} = 0.62 AP=5(11+32+63+94+105)=0.62
    而多次查询的AP值的平均,也就是mAP,附图说明:
    在这里插入图片描述

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

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

相关文章

回归预测 | MATLAB实现TSO-SVM金枪鱼群算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现TSO-SVM金枪鱼群算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现TSO-SVM金枪鱼群算法优化支持向量机多输入单输出回归预测(多指标,多图)效果一览基…

深度优先遍历与连通分量(Java 实例代码源码包下载)

目录 深度优先遍历与连通分量 Java 实例代码 src/runoob/graph/Components.java 文件代码: 深度优先遍历与连通分量 深度优先遍历(Depth First Search)的主要思想是首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点。当没有…

AI在日常生活中的应用:从语音助手到自动驾驶

文章目录 AI的定义和发展AI在日常生活中的应用1. **智能语音助手**2. **智能家居**3. **智能医疗**4. **自动驾驶** 代码示例:使用Python实现基于机器学习的图片分类AI的未来前景结论 🎉欢迎来到AIGC人工智能专栏~探索AI在日常生活中的应用 ☆* o(≧▽≦…

centos9 mysql8修改数据库的存储路径

一、环境 系统:CentOS Stream release 9 mysql版本:mysql Ver 8.0.34 for Linux on x86_64 (MySQL Community Server - GPL) 二、修改mysql的数据库,存储路径 查看目录数据存储的位置 cat /etc/my.cnf操作 1、新建存放的目录,…

【leetcode 力扣刷题】数组交集(数组、set、map都可实现哈希表)

数组交集 349. 两个数组的交集排序+双指针数组实现哈希表unordered_setunordered_map 350. 两个数组的交集Ⅱ排序 双指针数组实现哈希表unordered_map 349. 两个数组的交集 题目链接:349. 两个数组的交集 题目内容如下,理解题意&#xff1a…

react 10之状态管理工具2 redux + react-redux +redux-saga

目录 react 10之状态管理工具2 redux store / index.js 入口文件actionType.js actions常量的文件rootReducer.js 总的reducer 用于聚合所有模块的 reducerrootSaga.js 总的saga 用于聚合所有模块的 sagastore / form / formActions.js 同步修改 isShowstore / form / formRedu…

[机缘参悟-100] :今早的感悟:儒释道代表了不同的人生观、思维模式决定了人的行为模式、创业到处是陷阱、梦想与欺骗其实很容易辨认

目录 一、关于儒释道 二、关于成长性思维与固定性思维 三、关于创业 四、关于梦想与忽悠 一、关于儒释道 儒:逆势而为,修身齐家治国平天下,大公无私 佛:万法皆空,众生皆苦,普度众生,无公无…

如何构建 NodeJS 影院微服务并使用 docker 进行部署

图片来自谷歌 — 封面由我制作 一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 在本系列中,我们将构建一个 NodeJS 微服务,并使用…

相邻节点迭代器(Java 实例代码源码包下载)

目录 相邻节点迭代器 Java 实例代码 src/runoob/graph/DenseGraphIterater.java 文件代码: src/runoob/graph/SparseGraphIterater.java 文件代码: 相邻节点迭代器 图论中最常见的操作就是遍历邻边,通过一个顶点遍历相关的邻边。邻接矩阵…

Python编程基础-函数

函数定义与调用 将完成某一特定功能并经常使用的代码编写成函数,在需要使用时直接调用 def 函数名(函数参数): 函数体 return 表达式或者值 def printHello(): #打印hello字符串print (hello)def printNum(): #输出0--9数字for i in range(0,10):print (i)return…

Unity 变量修饰符 之protected ,internal,const , readonly, static

文章目录 protectedinternalconstreadonlystatic protected 当在Unity中使用C#编程时,protected是一种访问修饰符,用于控制类成员(字段、方法、属性等)的可见性和访问权限。protected修饰的成员可以在当前类内部、派生类&#xf…

大数据背景和概念

一、背景 1.岗位现状 大数据在一线互联网已经爆发了好多年,2015年-2020年(国内互联网爆发期)那时候的大数据开发,刚毕业能写Hive SQL配置个离线任务、整个帆软报表都20K起步。如果做到架构师,50K跑不掉。现在市场回归…

字符串旋转(2)

题目要求: 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如: 给定s1 AABCD和s2 BCDAA,返回1。给定s1abcd和s2ACBD,返回0。AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个…

Stm32学习记录之中断

1、前言 该系列文章用于记录个人学习stm32单片机的过程,欢迎指导讨论~。 2、中断知识点梳理 中断 { N V I C ( 内嵌向量中断控制器 ) { 中断向量表 优先级 { 抢占优先级 响应优先级 自然优先级 优先级分组 E X T I ( 外部中断 ) { 触发方式 { 上边沿 下边沿 双边沿 …

wazuh安装、Rootkit原理解析与检测实践

目录 1.wazuh 1)什么是wazuh 2)安装wazuh 方法一:仓库安装(跟着官方文档走) 方法二:虚拟机OVA安装 2.Rootkit原理解析与检测实践 Rootkit主要分为以下2种 解压并编译这个文件 利用chkrootkit检查rootk…

看了这么多热闹,AI帮助你解决实际问题了吗?

经历了近两个月的日更之后,这个星期发文频率有所下降,日更需要花费更多的时间精力,而这恰恰是一个人忙起来之后无法保证的。后续发文频率稍做调整,内容会继续保持更新。 前几日小米发布会(雷老板2023年度演讲&#xff…

EndNote-文献管理工具【安装篇】

下载:(文末附安装包,建议使用这一个,官网都需要付费) 打开安装包,双击: 安装完了之后不要直接运行,因为EndNote软件少了一个类型的软件:GB/T17714。 因此我们需要把这个…

实现两个栈模拟队列

实现两个栈模拟队列 思路:可以想象一下左手和右手,两个栈:stack1(数据所在的栈) ,stack2(临时存放)。 入队:需要将入队 num 加在 stack1 的栈顶即可; 出队&am…

plt绘制箱型图+散点图

import numpy as np import matplotlib.pyplot as plt# 创建示例数据 np.random.seed(1) data [np.random.normal(0, std, 100) for std in range(1, 4)]# 绘制箱型图 plt.boxplot(data, patch_artistTrue,zorder0)# 添加数据点的散点图,并设置参数以避免重叠 for …