pytorch图像检索评价指标MAP

2023-11-12

map是图像检索模型的一个评价指标
在这里插入图片描述
以图片中第一个计算AP值为例

P的分别是[1, 2/3, 3/6, 4/9, 5/10]
R值分别是[1/5, 2/5, 3/5/, 4/5, 1]

AP计算结果

1+2/3+3/6+4/9+5/10/ 5

在这里插入图片描述

https://blog.csdn.net/weixin_40100431/article/details/88768479

假设输入一张图片,数据库中有3个图像与之匹配,按照相似度高低进行排序,得到的位置是第1位,第3位,第6位是这三幅图像,匹配正确。

在这里插入代码片

但是在这个程序设计中,待检索图像在当前数据库中,那么本身的相似度肯定是最高的,排在第0位,ranks=[0,1,3,6]
。nres=4。表示数据库中与待检索图像的属于同一类的个数。按照图像检索ap的计算 方式, 得到ap=(1+1+3/4+4/7)/4=0.830357143.但是这种计算方式ap值偏大,自己检索到自己不应该算到里面 ,于是正确的计算方式应该是ap=(1+2/3+3/6)/3=0.7222222。在测试的时候计算之后发现与代码中计算结果不一致。代码中的求取方式是[(1+1+3/4+4/7)/4+(1+2/3+3/6)/3]/2。不是求平均值。

import numpy as np

def compute_ap(ranks, nres):
    """
    Computes average precision for given ranked indexes.
    
    Arguments
    ---------
    ranks : zerro-based ranks of positive images
    nres  : number of positive images
    
    Returns
    -------
    ap    : average precision
    """

    # number of images ranked by the system
    nimgranks = len(ranks)

    # accumulate trapezoids in PR-plot
    ap = 0

    recall_step = 1. / nres

    for j in np.arange(nimgranks):
        rank = ranks[j]

        if rank == 0:
            precision_0 = 1.
        else:
            precision_0 = float(j) / rank
        precision_1 = float(j + 1) / (rank + 1)
        ap += (precision_0 + precision_1) * recall_step / 2.
    return ap

ranks=np.array([0,1,3,6])
ners=4
result=compute_ap(ranks,ners)
print(result)
0.8110119047619047
import numpy as np

ranks = np.array([1,3,6])

def compute_ap(ranks):
    ap = 0
    for i,j in enumerate(ranks):
        print(i,j)
        print((i + 1) / j)
        ap += (i + 1) / j
    return ap / len(ranks)
ap = compute_ap(ranks)
print("AP:",ap)
0 1
1.0
1 3
0.6666666666666666
2 6
0.5
AP: 0.7222222222222222
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytorch图像检索评价指标MAP 的相关文章

  • 查看tensor的形状,行列大小

    torch size是tuple 元组的子类 因此他支持元组所有的操作 如x size 0 import pandas as pd import numpy as np import torch x torch rand 5 3 print
  • Pytorch学习笔记(六)

    简单的LeNet网络模型 torchvision datasets torchvision是pytorch的一个图形库 它服务于PyTorch深度学习框架的 主要用来构建计算机视觉模型 以下是torchvision的构成 torchvisi
  • (pytorch进阶之路)Masked AutoEncoder论文及实现

    文章目录 1 导读 2 论文地址 3 代码实现思路 3 1 预处理阶段 3 2 Encoder 3 3 Decoder 3 4 fine tuning 3 5 linear probing 3 6 evaluation 4 代码地址 5 如
  • 使用GPU进行神经网络计算详解

    Pytorch学习笔记 六 使用GPU的简单LeNet网络模型中也提到了如何实现GPU上的运算 虽然不详细 但是也足够 总结 如果对于总结知识已经比较熟悉 那么下面的详解可以不用看 默认CPU进行计算 CPU上变量或模型不能与GPU上变量或
  • 关于Transformer中的位置编码

    位置编码 Positional Encoding 位置编码是在自然语言处理中 特别是在 Transformer 架构中使用的一个重要概念 Transformer 架构由于其自注意力机制 Self Attention Mechanism 的特
  • torch.nn.init常用函数总结

    torch nn init中常用的函数 torch nn init uniform torch nn init normal torch nn init constant torch nn init ones torch nn init z
  • Vision Transformer里的MLP Head里的Pre-Logits层

    Representation layer if representation size and not distilled self has logits True self num features representation size
  • CIFAR10数据集使用笔记

    CIFAR10数据集 1 数据集下载并转换为张量 train set torchvision datasets CIFAR10 root data path train True download True transform transf
  • 将tensor张量转换成图片格式并保存

    这是一个工具包 功能 反向操作transforms Normalize和transforms ToTensor函数 将tensor格式的图片转换成 jpg png格式的图片 注 这里是我原始的写法 但是是存在着一些改进空间的 如评论区所言
  • 树莓派4B安装Pytorch, torchvision(附已编译安装包)

    树莓派4B安装Pytorch torchvision Install Pytorch Raspberry Pi 4B Linux raspberrypi 4 19 75 v7l 1270 SMP Tue Sep 24 18 51 41 BS
  • python遍历目录的方法

    简单暴力法 递归 假设在 E 盘中 有个名为 Python 的文件夹 该文件夹中也有两个文件夹 分别是 A 和 B 另外 在 A 文件夹中还有一个 results txt 的文本文件 因此 Python 文件夹的文件结构如下 Python
  • pytorch图像检索评价指标MAP

    map是图像检索模型的一个评价指标 以图片中第一个计算AP值为例 P的分别是 1 2 3 3 6 4 9 5 10 R值分别是 1 5 2 5 3 5 4 5 1 AP计算结果 1 2 3 3 6 4 9 5 10 5 https blog
  • KORNIA与torch 版本存在依赖关系

    KORNIA 0 58对应torch 1 7 以上对应1 8 可以多下载几个多次安装 直到支持
  • PyTorch实战使用Resnet迁移学习

    PyTorch实战使用Resnet迁移学习 项目结构 项目任务 项目代码 网络模型测试 项目结构 数据集存放在flower data文件夹 cat to name json是makejson文件运行生成的 TorchVision文件主要存放
  • (pytorch进阶之路)DDPM扩散概率模型

    文章目录 概述 前置知识 diffusion图示 扩散过程 逆扩散过程 后验的扩散条件概率 似然函数 算法 代码实现 概述 扩散概率模型 deep unsupervised learning using nonequilibrium the
  • Pytorch并行训练方法-单机多卡

    简单方便的 nn DataParallel DataParallel 可以帮助我们 使用单进程控 将模型和数据加载到多个 GPU 中 控制数据在 GPU 之间的流动 协同不同 GPU 上的模型进行并行训练 细粒度的方法有 scatter g
  • [pytorch]关于cross_entropy函数

    loss F cross entropy output labels output 网络的全连接层的输出 值可能是有正有负的 例如 1 56 2 43 等 labels 正常标签 例如一共5个类别 值就是0 4
  • 【PyTorch学习】(三)自定义Datasets

    torchvision datasets源码地址 https github com pytorch vision blob master torchvision datasets 前两篇从搭建经典的ResNet DenseNet入手简单的了
  • Pytorch学习笔记(二)

    后续遇到一些函数等知识 还会进行及时的补充 tensor的创建 使用pytorch中的列表创建tensor tensor torch Tensor 1 1 0 2 print
  • pytorch分割网络数据输入接口

    pytorch的自定义接口是真的方便 记录一下自己分割数据输入的脚本 coding utf 8 Time 2019 10 31 21 36 Author Yunyun Xu Contact 1443563995 qq com File My

随机推荐