直接放代码,从官方那边抠出来的AP计算代码,代码内部分为voc2007之前的11点计算方法和voc2007之后的方法,目前都已经采用else:内的计算方法

import numpy as npdef voc_ap(rec, prec, use_07_metric=False):""" ap = voc_ap(rec, prec, [use_07_metric])Compute VOC AP given precision and recall.If use_07_metric is true, uses theVOC 07 11 point method (default:False)."""# 针对2007年VOC,使用的11个点计算AP,现在不使用if use_07_metric:# 11 point metricap = 0.for t in np.arange(0., 1.1, 0.1):if np.sum(rec >= t) == 0:p = 0else:p = np.max(prec[rec >= t])ap = ap + p / 11.else:# correct AP calculation# first append sentinel values at the endmrec = np.concatenate(([0.], rec, [1.]))  #[0.  0.0666, 0.1333, 0.4   , 0.4666,  1.]mpre = np.concatenate(([0.], prec, [0.])) #[0.  1.,     0.6666, 0.4285, 0.3043,  0.]# compute the precision envelope# 计算出precision的各个断点(折线点)for i in range(mpre.size - 1, 0, -1):mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i])  #[1.     1.     0.6666 0.4285 0.3043 0.    ]# to calculate area under PR curve, look for points# where X axis (recall) changes valuei = np.where(mrec[1:] != mrec[:-1])[0]  #precision前后两个值不一样的点print(mrec[1:], mrec[:-1])print(i) #[0, 1, 3, 4, 5]# AP= AP1 + AP2+ AP3+ AP4ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1])return aprecall = [0.3,0.6,0.7,0.8,0.9,0.92]
precision = [1.0,0.95,0.91,0.89,0.79,0.4]ap = voc_ap(recall, precision)print(ap)

Python下通过PR曲线值计算AP相关推荐

  1. 【python】使用sklearn画PR曲线,计算AP值

    import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import precision_recall_curv ...

  2. python 实现大文件md5值计算

    参考:python 实现大文件md5值计算_ddw6022的博客-CSDN博客 python比较两个文本文件是否相同 - douzujun - 博客园 用python 正确计算大文件md5 值 - P ...

  3. python 实现文件哈希值计算

    运行效果 # -*- coding: utf-8 -*-import hashlib #导入hashlib模块 import tkinter import tkinter.messagebox imp ...

  4. mips平台下使用jiffies_to_msecs差值计算rtt不准确问题

    我们业务模块实现了rtt计算机制,通过发送探测request时,使用jiffies_to_msecs(jiffies)记录下发送时间值.收到探测reply时,再使用jiffies_to_msecs(j ...

  5. python下表运算_python科学计算_numpy_广播与下标

    多维数组下标 多维数组的下标是用元组来实现每一个维度的,如果元组的长度比维度大则会出错,如果小,则默认元组后面补 : 表示全部访问: 如果一个下标不是元组,则先转换为元组,在转换过程中,列表和数组的转 ...

  6. Detection:目标检测常用评价指标的学习总结(IoU、TP、FP、TN、FN、Precision、Recall、F1-score、P-R曲线、AP、mAP、 ROC曲线、TPR、FPR和AUC)

    目录 前言 1. IoU 2. TP.FP.TN.FN 2.1 混淆矩阵 2.2 TP.FP.TN.FN的定义 2.3 TP.FP.TN.FN在目标检测中的对应内容 2.3.1 TP,FP在目标检测中 ...

  7. python怎么画出圆润的曲线_Python如何画P-R曲线

    Python如何画P-R曲线 Python生成P-R图需要安装第三方库matplotlib.numpy及sklearn. 推荐学习<Python教程>. P-R曲线的生成方法: 根据学习器 ...

  8. 机器学习-Precision(查准率)、Recall(查全率)、P-R曲线

    目录 前言 一.查准率P.查全率R与P-R曲线 二.Python实现 总结 前言 我们经常会关心"检索出的信息中有多少比例是用户感兴趣的""用户感兴趣的信息中有多少被检索 ...

  9. yoloV3测试map和画PR曲线

    参考1:https://blog.csdn.net/qq_33350808/article/details/83178002 2:https://blog.csdn.net/weixin_437175 ...

  10. 绘制ROC曲线及P-R曲线

    绘制ROC曲线及P-R曲线 描述 ROC曲线(Receiver Operating Characteristic Curve)以假正率(FPR)为X轴.真正率(TPR)为y轴.曲线越靠左上方说明模型性 ...

最新文章

  1. 计算机密码行业专题研究:网络安全最大弹性领域
  2. 《易学C++(第2版)》——1.4 C++能够做些什么
  3. 扎心!互联网行业的神回复
  4. boost::process::env相关的测试程序
  5. Vue Axios的配置 (高仿饿了么)
  6. [USACO12OPEN]Unlocking Block【BFS / 广搜】
  7. 在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例
  8. oracle中chr(39),oracle中chr含义
  9. 将一个32bit的数据,颠倒过来,bit0与bit31交换,bit1与bit30交换,C语言实现与verilog实现。
  10. win10如何获得管理员权限
  11. 联想G480如何关闭数字小键盘
  12. CentOS 7.6 下载和安装
  13. 测试4年裸辞失业,面试17k的测试岗被按在地上摩擦,结局让我崩溃大哭....
  14. 小米华为苹果推送相关Nginx转发推送配置
  15. EtherCAT总线运动控制器应用进阶一
  16. 2016年会是不动产区块链启动的时刻…
  17. CF1294F 题解
  18. MySQL 批量修改表名称
  19. 5-双摇杆机构运动分析
  20. FICO配置详解之六:产品成本控制

热门文章

  1. LaTeX中参考文献的插入方式(不使用BibTeX)
  2. SQL join关联三个表或多个表
  3. 4、网络嗅探器的设计与实现
  4. 华为一碰传nfc_详解:华为免费升级的“一碰传”到底是个什么东西?
  5. 支付宝扫码支付php demo
  6. Java将英文句子分解为单词
  7. 经典逻辑推理题(答案)
  8. CC2652RB1F开发板烧录ZNP的固件
  9. Pyramidal Feature Shrinking for Salient Object Detection阅读笔记
  10. 光场相机微透镜阵列排布方式以及其填充率比较