coco如何计算map的,recall如何插值的

2024-06-15 05:28
文章标签 计算 recall map 插值 coco

本文主要是介绍coco如何计算map的,recall如何插值的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不同召回率阈值是通过将累积的真阳性数量除以所有正样本的数量来产生的。在代码中,召回率阈值 `recThrs` 是预定义的,是用于评估的标准参数。具体步骤如下:

1. **预定义召回率阈值:**
   - `recThrs` 是在参数 `p` 中预定义的,是一组固定的值,用于在评估过程中衡量不同的召回率水平。
   - 例如,`recThrs` 可能是一个从 0 到 1 的等间隔数组,用于表示从 0% 到 100% 的召回率。

2. **计算每个 IoU 阈值下的召回率:**
   - 对于每个 IoU 阈值 `t`,通过累积的真阳性 `tp_sum` 和假阳性 `fp_sum` 来计算召回率 `rc` 和精度 `pr`。
   - 具体计算如下:
     ```python
     rc = tp / npig  # 计算召回率
     pr = tp / (fp + tp + np.spacing(1))  # 计算精度
     ```

3. **将累积的召回率与预定义的召回率阈值匹配:**
   - 使用 `np.searchsorted` 函数将计算得到的召回率数组 `rc` 与预定义的召回率阈值 `recThrs` 进行匹配。
   - `np.searchsorted` 会返回 `rc` 中大于等于 `recThrs` 的位置索引。
     ```python
     inds = np.searchsorted(rc, p.recThrs, side='left')
     ```

4. **插值计算对应的精度值:**
   - 根据找到的索引 `inds`,从计算得到的精度数组 `pr` 中提取对应位置的精度值,并存储到 `precision` 数组中。
   - 如果索引超出范围,会捕获异常并继续处理。
     ```python
     try:
         for ri, pi in enumerate(inds):
             q[ri] = pr[pi]
             ss[ri] = dtScoresSorted[pi]
     except:
         pass
     ```

5. **存储结果:**
   - 将计算得到的精度和得分分别存储到 `precision[t, :, k, a, m]` 和 `scores[t, :, k, a, m]` 中。

以下是代码中相关部分的详细解释:

```python
for t, (tp, fp) in enumerate(zip(tp_sum, fp_sum)):
    tp = np.array(tp)
    fp = np.array(fp)
    nd = len(tp)
    rc = tp / npig  # 计算召回率
    pr = tp / (fp + tp + np.spacing(1))  # 计算精度
    q = np.zeros((R,))
    ss = np.zeros((R,))

    if nd:
        recall[t, k, a, m] = rc[-1]
    else:
        recall[t, k, a, m] = 0

    pr = pr.tolist()
    q = q.tolist()

    for i in range(nd - 1, 0, -1):
        if pr[i] > pr[i - 1]:
            pr[i - 1] = pr[i]

    inds = np.searchsorted(rc, p.recThrs, side='left')

    try:
        for ri, pi in enumerate(inds):
            q[ri] = pr[pi]
            ss[ri] = dtScoresSorted[pi]
    except:
        pass

    precision[t, :, k, a, m] = np.array(q)
    scores[t, :, k, a, m] = np.array(ss)
```

通过这些步骤,预定义的召回率阈值 `recThrs` 被用作基准,计算得到的召回率 `rc` 和精度 `pr` 被匹配和插值,最终得到不同召回率阈值下的精度值 `precision[t, :, k, a, m]`。

这篇关于coco如何计算map的,recall如何插值的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062543

相关文章

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

Java - BigDecimal 计算分位(百分位)

日常开发中,如果使用数据库来直接查询一组数据的分位数,就比较简单,直接使用对应的函数就可以了,例如:         PERCENT_RANK() OVER(PARTITION BY 分组列名 ORDER BY 目标列名) AS 目标列名_分位数         如果是需要在代码逻辑部分进行分位数的计算,就需要我们自己写一个工具类来支持计算了 import static ja

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版