记录 | pytorch计算ap的方法

假设当前经过标签数据与预测数据的加载,我们得到了下面两个变量:

  • det_boxes:包含全部图像中所有类别的预测框,其中一个边框包含了[left, top, right, bottom, score, NameofImage]
  • gt_boxes:包含了全部图像中所有类别的标签,其中一个标签的内容为[left, top, right, bottom, 0]。需要注意的是,最后一位0代表该标签有没有被匹配过,如果匹配过则会置1,其他预测框再去匹配则为误检框。

下面是所有类别的评测过程。

for c in classes:# 通过类别作为关键字,得到每个类别的预测、标签及总标签数dects = det_boxes[c]gt_class = gt_boxes[c]npos = num_pos[c]#利用得分作为关键字,对预测框按照得分从高到低排序dects = sorted(dects, key = lambda conf: conf[5], reverse = True)#设置两个与预测边框长度相同的列表,标记是True Positive还是False PositiveTP = np.zeros(len(dects))FP = np.zeros(len(dects))#对某一个类别的预测框进行遍历for d in range(len(dets)):#将iou默认置为最低iouMax = sys.float_info.min#遍历与预测框同一图像中的同一类别的标签,计算iouif dects[d][-1] in gt_class:for j in range(len(gt_class[dects[d][-1]])):iou = Evaluator.iou(dects[d][:4], gt_class[dects[d][-1]][j][:4])if iou > iouMax:iouMax = ioujmax = j       #记录与预测有最大iou的标签#如果最大iou大于阈值,并且没有被匹配过,则赋予TPif iouMax >= cfg['iouThreshold']:if gt_class[dects[d][-1]][jmax][4] == 0:TP[d] = 1gt_class[dects[d][-1]][jmax][4] = 1   #标记为匹配过#如果被匹配过,赋予FPelse:FP[d] = 1#如果最大iou没有超过阈值,赋予FPelse;FP[d] = 1#如果对应图像中没有该类别的标签,赋予FPelse:FP[d] = 1#利用NumPy的cumsum()函数,计算累计的FP与TPacc_FP = np.cumsum(FP)acc_TP = np.cumsum(TP)rec = acc_TP / npos    #得到每个点的Recallprec = np.divide(acc_TP, (acc_FP + acc_TP))    #得到每个点的Precision#利用Recall与Precision进一步计算得到AP[ap, mpre, mrec, ii] = Evaluator.CalculateAveragePrecision(rec, prec)

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

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

相关文章

聚合支付备案机构如何有效应对自律监督现场检查

孟凡富 在2023年第四季度,部分已备案的聚合支付机构收到了中国支付清算协会的《中国支付清算协会自律检查通知书》,标志着对其进行的现场检查工作正式启动。此次检查的时间范围涵盖了机构从2022年9月1日至2023年8月31日的运营情况,内容广泛&…

Uni-App《》

1. 什么是 UniApp?它有什么特点? UniApp 是一个基于 Vue.js 的跨平台应用开发框架,可以使用 Vue.js 的开发语法编写一次代码,然后通过编译生成可以在多个平台(包括iOS、Android、H5 等)上运行的应用。UniAp…

HTML世界核心

目录 一、基本文档(Basic Documentation) 二、基本标签(Basic Tags) 三、文本格式化(Formatting) 四、链接(Links) 五、图片(Images) 六、样式/区块(Styles/Sections) 七、无序列表(Disorder List) 八、有序列表(Sequence List) 九、定义列表(Definin…

用户空间与内核通信(二)

文章:用户空间与内核通信(一)介绍了系统调用(System Call),内核模块参数和sysfs,sysctl函数方式进行用户空间和内核空间的访问。本章节我将介绍使用netlink套接字和proc文件系统实现用户空间对内…

python入门----基础

这里写目录标题 重点虚拟环境/与//的区别/// 关于print字符串可以用号拼接单双引号转义符换行三引号 变量变量的定义变量名的命名 API库导库以及使用 注释单行注释多行注释 数据类型strboolNoneTypetype函数 交互模式介绍开启 input作用延伸 if-else条件嵌套语句逻辑运算符内容…

信号系统之窗口正弦滤波器

1 Windowed-Sinc 的策略 图 16-1 说明了 windowed-sinc 滤波器背后的思想。在**(a)**中,显示了理想低通滤波器的频率响应。所有低于截止频率 f c f_c fc​ 的频率都以单位振幅通过,而所有较高的频率都被阻挡。通带是完全平坦的,阻带中的衰减…

代码随想录算法训练营第三六天 | 无重叠区间、划分字母区间、合并区间

目录 无重叠区间划分字母区间合并区间 LeetCode 435. 无重叠区间 LeetCode 763.划分字母区间 LeetCode 56. 合并区间 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠…

【linux】体系结构和os管理

冯诺依曼体系结构 输入单元:包括键盘, 鼠标,扫描仪, 写板等 中央处理器(CPU):含有运算器和控制器等 输出单元:显示器,打印机等 这里的存储器指的是内存 三者是相互连接的,设备之间会进行数据的来回拷贝&am…

.NET有哪些微服务框架

1.概述 想要对.net的微服务方案进行一下调查,看有什么可选的方案和框架,与spring clound相比.net 创建微服务是相对较麻烦的。 ID名称说明1Service FabricSteeltoe是帮助.NET开发的服务接入Spring Cloud技术栈的官方支持工具。也就是说,微服…

STM32F1 - I2C读写EEPROM

Inter-integrated circuit 1> 实验概述2> I2C模块 - 硬件方框图3> I2C模块 - 主发送器模式4> I2C模块 - 主接收器模式 1> 实验概述 通过STM32F103内部I2C硬件模块, 读写EEPROM - AT24C02 2> I2C模块 - 硬件方框图 3> I2C模块 - 主发送器模式 4…

GPT-4助力我们突破思维定势

GPT-4在突破思维局限、激发灵感和促进知识交叉融合方面的作用不可小觑,它正逐渐成为一种有力的工具,助力各行业和研究领域的创新与发展。 GPT-4在突破传统思维模式、拓宽创新视野和促进跨学科知识融合方面扮演着越来越重要的角色: 突破思维…

【Oracle11g安装配置详细教程——详细讲解】

Oracle11g安装配置详细教程 1. 介绍2. Windows环境安装Oracle 11g步骤3. Linux环境安装Oracle 11g步骤4. 注意事项 1. 介绍 由于Oracle 11g的安装涉及到一系列复杂的步骤,并且每一步可能还会因为操作系统的不同(如Windows、Linux)而略有差异…

java 数据结构LinkedList类

目录 什么是LinkedList 链表的概念及结构 链表的结构 无头单向非循环链表 addFirst方法(头插法) addLast方法(尾插法) addIndex方法 contains方法 removeAllKey方法 size和clear方法 链表oj题 无头双向非循环链表 ad…

Paper - 使用 CombFold 组合装配实现大型蛋白质复合物的结构预测

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/136170304 CombFold: predicting structures of large protein assemblies using a combinatorial assembly algorithm and AlphaFold2 CombFold…

大公司为什么禁止SpringBoot项目使用Tomcat?

原作者:老杨 原文PDF链接:https://topjavaer.cn/advance/excellent-article/28-springboot-forbid-tomcat.html 前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat…

ClickHouse监控及备份

第1章 ClickHouse监控概述 第2章 Prometheus&Grafana的安装 第3章 ClickHouse配置 第4章 Grafana集成Prometheus 第5章 备份及恢复

【C语言】位操作符与移位操作符练习

目录 前言: 1.一道变态的面试题 2.输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。 方法一: 方法二: 方法三: 3.打印整数二进制的奇数位和偶数位 前言: 前篇我们学习过C语言…

【开源】JAVA+Vue.js实现城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统,支持…

gem5学习(22):经典内存系统的一致性——Classic Memory System coherence

官网教程:gem5: Classic memory system coherence M5 2.0b4引入了一个经过大量重写和简化的缓存模型,包括一个新的一致性协议。一致性协议是用于确保多个缓存之间的数据一致性的规则和机制。这意味着在多个缓存中存储的数据将保持一致,以避免…

C#分部类、分割类的用法,及用分割类设计一个计算器

目录 一、涉及到的知识点 1.分部类 2.分部类主要应用在以下两个方面 3.合理使用分部类分割类 4.事件处理程序 5.Math.Ceiling方法 6.Text.Contains() 7.pictureBox.Tag属性 二、实例 1.源码 2.生成效果 在开发一些大型项目或者特殊部署时,可能需要…