AP AR

ops/2025/3/20 11:24:41/

混淆矩阵

真实值=正例真实值=负例
预测值=正例TPFP
预测值=负例FNTN

(根据阈值预测)

P精确度计算:TP/(TP+FP)

R召回率计算:TP/(TP+FN)

AP

综合考虑P R

根据不同的阈值计算出不同的PR组合, 画出PR曲线,计算曲线下面积即为PR

(所有点插值法计算,简单来讲就是近似计算小矩形面积和)

import numpy as np
import matplotlib.pyplot as pltdef calculate_precision_recall(confusion_matrices):#计算P Rrecall = []precision = []for tp, fp, fn in confusion_matrices:if tp + fp == 0:p = 0.0else:p = tp / (tp + fp)if tp + fn == 0:r = 0.0else:r = tp / (tp + fn)precision.append(p)recall.append(r)return recall, precisiondef calculate_ap_all_points(recall, precision):#所有点插值法计算面积recall = np.concatenate(([0.], recall, [1.]))precision = np.concatenate(([0.], precision, [0.]))for i in range(precision.size - 1, 0, -1):precision[i - 1] = np.maximum(precision[i - 1], precision[i])ap = np.sum(np.diff(recall) * precision[1:])return ap# 示例 (每个元素为 [TP, FP, FN])
confusion_matrices = [[10, 0, 0],  [8, 1, 2],  [6, 2, 4], [5, 3, 5],  [4, 4, 6],  [3, 7, 7],  
]# 计算精确率和召回率
recall, precision = calculate_precision_recall(confusion_matrices)# 计算AP
ap = calculate_ap_all_points(recall, precision)
print(f"平均精度 (AP): {ap}")plt.plot(recall, precision, marker='o')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve (AP = {:.3f})'.format(ap))
plt.grid(True)
plt.show()

AR

平均召回率

主要是考虑漏检,专注于R

import numpy as npdef calculate_ar(true_positives, false_negatives, max_detections):recall_values = []for tp, fn in zip(true_positives, false_negatives):if tp + fn == 0:recall = 0.0else:recall = tp / (tp + fn)recall_values.append(recall)# 假设我们只考虑前 max_detections 个召回率值if len(recall_values) > max_detections:recall_values = recall_values[:max_detections]if not recall_values:return 0.0ar = np.mean(recall_values)return ar# 示例数据
true_positives = [10, 8, 6, 5, 4, 3]  # TP
false_negatives = [0, 2, 4, 5, 6, 7]  # FP
max_detections = 5  # 最大检测次数# 计算AR
ar = calculate_ar(true_positives, false_negatives, max_detections)
print(f"平均召回率 (AR): {ar}")#计算maxDets 为10时候的AR
max_detections_2 = 10
ar_2 = calculate_ar(true_positives, false_negatives, max_detections_2)
print(f"平均召回率 (AR)maxDets为10 : {ar_2}")

平均精度(Average Precision,AP)以及AP50、AP75、APs、APm、APl、Box AP、Mask AP等不同阈值和细分类别的评估指标说明-CSDN博客


http://www.ppmy.cn/ops/166430.html

相关文章

Java继承与重写cpyhton

目录 父类的private能否继承给子类? 面向对象编程中,private成员在不同的语言中继承的情况有所不同。以下是Java、Python、C和C(实际上C语言不支持面向对象编程中的类和继承概念,但有些C风格的面向对象实现)对private…

51单片机的工作方式

目录 一、51 单片机的时钟电路及时钟信号 (一)时钟电路 (二)时钟信号 二、51 单片机的CPU 时序 (一)时钟周期​ (二)机器周期​ (三)指令周期​ 三、…

AI第一天 自我理解笔记--生成文本概率Top-k p 束搜索 贪心搜索温度

目录 1.Top-K 2.Top-P 采样 3. Beam Search(束搜索) 4. Greedy Search(贪心搜索) 5.Temperature(温度) 是如何控制生成文本的随机性的 生活中的类比:天气预报 总结:温度的“魔…

【HTML5】01-HTML摆放内容

本文介绍HTML5摆放标签的知识点。 目录 1. HTML概念 2. HTML骨架 3. 标签的关系 4. 标题标签 5. 段落标签 6. 换行和水平线 7. 文本格式化标签 8. 图像标签 图像 - 属性 9. 路径 相对路径 绝对路径 10. 超链接标签 11. 音频标签 12. 视频标签 1. HTML概念 HTM…

麒麟服务器操作系统Go环境部署手册

软件概述 Go 介绍 Go语言,又称 Golang,是由Google的Robert Griesemer、Rob Pike及Ken Thompson开发的一种静态强类型、编译型语言。它的语法与C语言相近,但在功能上提供了内存安全、垃圾回收(GC)、结构形态以及CSP-style并发计算等特性。 Go语言的目标是兼具Python等动…

C11标准对于C语言的内存模型的描述

C11标准(ISO/IEC 9899:2011)对C语言的内存模型进行了重大改进,主要围绕多线程并发编程的规范化和安全性展开。以下是C11内存模型的核心特性及其意义: 一、原子操作与内存顺序 原子类型(_Atomic) C11引入_At…

【AI News | 20250316】每日AI进展

AI Repos 1、ReActMCP 将网络搜索能力集成到AI助手中的一个MCP服务:ReActMCP Web Search,相当于给AI装了个搜索引擎,可以实时查找最新的内容。它基于Exa API执行基本和高级网络搜索,高级搜索比如限制搜索的网站范围、指定日期范围…

Touch panel功能不良分析

一.用汇顶的IC测试软件进行分析方法 1.首先打开汇顶的测试软件,测试产品,看不良的提示项目及测试值 2.针对不良提示项目及数值,找出对应不良通道 3.找到对应的通道,看对应通道的银线及ITO问题,成品与FOG还需要看FPC…