当前位置: 首页 > news >正文

检测精度评价指标召回率和精确率

        检测精度评价指标为:

1、召回率(Recall Rate )          2、平均精度均值(mAP)        3、平均对数漏检率(MR-2)

 计算 TP 和 FP 的示例

假设你有一个目标检测模型,并使用它检测图像中的目标。你需要计算 TP 和 FP 以评估模型的性能。我们假设有以下数据:

  • ground_truth: 实际的目标位置。
  • detections: 模型检测到的目标位置。
import cv2
import numpy as np# 这是一个假设的 ground_truth 和 detections 数据
ground_truth = [(50, 50, 100, 100),  # 真实的目标区域(200, 200, 250, 250)
]detections = [(55, 55, 105, 105),  # 检测到的目标区域(TP)(60, 60, 110, 110),  # 检测到的目标区域(TP)(210, 210, 260, 260),# 检测到的目标区域(TP)(300, 300, 350, 350) # 错误检测到的目标区域(FP)
]# 计算 IoU(Intersection over Union)
def compute_iou(box1, box2):x1, y1, x2, y2 = box1x1g, y1g, x2g, y2g = box2xi1 = max(x1, x1g)yi1 = max(y1, y1g)xi2 = min(x2, x2g)yi2 = min(y2, y2g)inter_area = max(0, xi2 - xi1) * max(0, yi2 - yi1)box1_area = (x2 - x1) * (y2 - y1)box2_area = (x2g - x1g) * (y2g - y1g)union_area = box1_area + box2_area - inter_areaiou = inter_area / union_areareturn iou# 设置 IoU 阈值
iou_threshold = 0.5# 初始化 TP 和 FP 计数器
TP = 0
FP = 0# 遍历检测结果并计算 TP 和 FP
for detection in detections:is_tp = Falsefor gt in ground_truth:iou = compute_iou(detection, gt)if iou >= iou_threshold:is_tp = Truebreakif is_tp:TP += 1else:FP += 1print(f'True Positives (TP): {TP}')
print(f'False Positives (FP): {FP}')

解释

  1. 计算 IoUcompute_iou 函数计算两个边界框之间的 IoU(Intersection over Union),用于判断检测结果是否与真实目标匹配。
  2. 设置阈值:设置一个 IoU 阈值(如 0.5),超过该阈值则认为检测结果是一个 TP。
  3. 遍历检测结果:对于每个检测结果,计算其与所有 ground truth 的 IoU,如果有一个超过阈值,则认为该检测结果是 TP,否则为 FP。

补充:

  1. 真正例(True Positive, TP)

解释:模型正确地将正类别样本预测为正类别。

例子:在疾病诊断中,一个病人实际患有疾病,模型也预测他患有疾病。

  1. 假正例(False Positive, FP)

解释:模型错误地将负类别样本预测为正类别。

例子:在垃圾邮件检测中,一个正常的邮件被模型错误地标记为垃圾邮件。

  1. 真负例(True Negative, TN)

解释:模型正确地将负类别样本预测为负类别。

例子:在疾病诊断中,一个病人实际上没有患病,模型也预测他没有患病。

  1. 假负例(False Negative, FN)

解释:模型错误地将正类别样本预测为负类别。

例子:在疾病诊断中,一个病人实际患有疾病,但模型预测他没有患病。

这些指标在评估分类模型时非常重要,因为它们可以用来计算更复杂的性能指标,如准确率(Accuracy)、召回率(Recall)或敏感度、精确率(Precision)、F1分数等。例如:

准确率:分类正确的样本占总样本数的比率:计算公式为:(TP+TN)/(TP+TN+FP+FN)

召回率:正类别中被正确预测的样本比例;计算公式为TP/(TP+FN)

精确率:被预测为正类别中实际为正类别的样本比例;计算公式为:TP/(TP+FP)

F1分数:精确率和召回率的调和平均数,计算公式为2×(精确率×召回率)/(精确率+召回率)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C到C嘎嘎的衔接篇
  • [FPGA]-时序传输模型分析
  • Python:while循环
  • Java之Java基础八(方法)
  • Spring webflux基础核心技术
  • Jetson-AGX-Xavier上 时间同步方案GPS+PPS+NTP+PTP
  • 深入理解C++中的特殊成员函数:构造函数、析构函数、拷贝构造函数与赋值操作符重载
  • 【laravel+Easyswoole】
  • 企业网三层架构
  • slf4j日志框架和logback详解
  • C++入门基础(2)
  • 论文翻译:Rethinking Interpretability in the Era of Large Language Models
  • 设计模式使用场景实现示例及优缺点(行为型模式——策略模式)
  • leetcode 147. 对链表进行插入排序
  • Kafka基础入门-代码实操
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • C++入门教程(10):for 语句
  • Joomla 2.x, 3.x useful code cheatsheet
  • mysql_config not found
  • React Native移动开发实战-3-实现页面间的数据传递
  • SpringCloud集成分布式事务LCN (一)
  • Vue 2.3、2.4 知识点小结
  • Vue2 SSR 的优化之旅
  • Webpack 4 学习01(基础配置)
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 汉诺塔算法
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端路由实现-history
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用 @font-face
  • 学习ES6 变量的解构赋值
  • ​flutter 代码混淆
  • ​Python 3 新特性:类型注解
  • #define
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (Note)C++中的继承方式
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)Linux——Linux常用指令
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四)js前端开发中设计模式之工厂方法模式
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • *Django中的Ajax 纯js的书写样式1
  • .bat文件调用java类的main方法
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core Web APi类库如何内嵌运行?
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 中 GetProcess 相关方法的性能
  • .NET成年了,然后呢?
  • .Net的DataSet直接与SQL2005交互
  • .NET上SQLite的连接
  • /run/containerd/containerd.sock connect: connection refused