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

        检测精度评价指标为:

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×(精确率×召回率)/(精确率+召回率)

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

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

相关文章

Git代码管理工具 — 3 Git基本操作指令详解

目录 1 获取本地仓库 2 基础操作指令 2.1 基础操作指令框架 2.2 git status查看修改的状态 2.3 git add添加工作区到暂存区 2.4 提交暂存区到本地仓库 2.5 git log查看提交日志 2.6 git reflog查看已经删除的记录 2.7 git reset版本回退 2.8 添加文件至忽略列表 1 获…

在conda的环境中安装Jupyter及其他软件包

Pytorch版本、安装和检验 大多数软件包都是随Anaconda安装的,也可以根据需要手动安装一些其他软件包。 目录 创建虚拟环境 进入虚拟环境 安装Jupyter notebook 安装matplotlib 安装 pandas 创建虚拟环境 基于conda包的环境创建、激活、管理与删除http://t.cs…

(实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee

★硬件资源:本文章以STM32L431RCT6做主控芯片做验证; ★IDE开发环境:RT Thread stdio; ★RT Thread 版本:V4.0.3 一、RT Thread Stdio加载软件包 1、如下图所示,通过RT Thread Stdio加载的软件包&#…

gd32发送数据,定义参数,接收中断

void usart_receive_data(uint8_t ucch) {usart_data_receive(UART3); } void usart_send_data(uint8_t ucch) {usart_data_transmit(UART3,(uint8_t)ucch);while(usart_flag_get(UART3,USART_FLAG_TBE) RESET); } 这是在c文件中定义函数,之后在h文件中声明&#…

Windows终端远程登陆Linux服务器(SSH+VScode)

W i n d o w s 终端远程登陆 L i n u x 服务器( S S H V S c o d e ) \huge{Windows终端远程登陆Linux服务器(SSHVScode)} Windows终端远程登陆Linux服务器(SSHVScode) 文章目录 写在前面通过SSH远程连接L…

4000厂商默认账号密码、默认登录凭证汇总.pdf

获取方式: 链接:https://pan.baidu.com/s/1F8ho42HTQhebKURWWVW1BQ?pwdy2u5 提取码:y2u5

【总线】AXI第九课时:介绍AXI响应信号 (Response Signaling):RRESP和 BRESP

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…

28.【C语言】库函数

1.函数定义 在计算机科学中,子程序是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏…

AC修炼计划(AtCoder Regular Contest 180) A~C

A - ABA and BAB A - ABA and BAB (atcoder.jp) 这道题我一开始想复杂了,一直在想怎么dp,没注意到其实是个很简单的规律题。 我们可以发现我们住需要统计一下类似ABABA这样不同字母相互交替的所有子段的长度,而每个字段的的情况有&#xff…

目标检测基本标注工具-labelImg安装与使用

🍉一、安装 1.1 打开conda创建虚拟环境🎈 conda create -n labelImg python3.8 -y 1.2 激活labelImg虚拟环境🎈 activate labelImg1.3 安装labelImg🎈 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple lab…

Rust vs Go: 特点与应用场景分析

目录 介绍Rust的特点Go的特点Rust的应用场景Go的应用场景总结 介绍 Rust和Go(Golang)是现代编程语言中两个非常流行的选择。凭借各自的独特优势和广泛的应用场景,吸引了大量开发者的关注。本文将详细介绍Rust和Go的特点,并探讨它…

golang程序性能提升改进篇之文件的读写---第一篇

背景:接手的项目是golang开发的(本人初次接触golang)经常出现oom。这个程序是计算和io密集型,调用流量属于明显有波峰波谷,但是因为各种原因,当前无法快速通过serverless或者动态在高峰时段调整资源&#x…

python的简单爬取

需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式(爬取百度logo为例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…

C语言之指针的奥秘(三)

一、字符指针变量 在指针的类型中&#xff0c;有字符指针char*&#xff0c;一般使用&#xff1a; #include<stdio.h> int main() {char ch w;char* p &ch;*p w;return 0; } 还有一种方式&#xff1a; #include<stdio.h> int main() {const char* p &qu…

[Vulnhub] Sedna BuilderEngine-CMS+Kernel权限提升

信息收集 IP AddressOpening Ports192.168.8.104TCP:22, 53, 80, 110, 111, 139, 143, 445, 993, 995, 8080, 55679 $ nmap -p- 192.168.8.104 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 …

强化学习编程实战-5 基于时间差分的方法

第4章中&#xff0c;当模型未知时&#xff0c;由于状态转移概率P未知&#xff0c;动态规划中值函数的评估方法不再适用&#xff0c;用蒙特卡洛的方法聘雇值函数。 在蒙特卡洛方法评估值函数时&#xff0c;需要采样一整条轨迹&#xff0c;即需要从初始状态s0到终止状态的整个序列…

“论软件维护方法及其应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 软件维护是指在软件交付使用后&#xff0c;直至软件被淘汰的整个时间范围内&#xff0c;为了改正错误或满足 新的需求而修改软件的活动。在软件系统运行过程中&#xff0c;软件需要维护的原因是多种多样的&#xff0c; 根据维护的原因不同&#xff0c;可以将软件维护…

DockerSecret+DockerConfig介绍及使用

DockerSecret 查看官网介绍&#xff0c;Secret是daemon API 1.25之后引入的&#xff0c;它运行在swarm上的命令。 生产环境下&#xff0c;为了安全&#xff0c;我们不能把各项目的配置密码写入到配置文件。 我们可以引入docker的secret方式保护密码。 场景&#xff1a; 用…

数据结构之链表操作详解与示例(反转链表,合并链表,旋转链表,对链表排序)

文章目录 1. 反转链表2. 合并链表3. 旋转链表4. 对链表排序总结 链表是一种常见的基础数据结构&#xff0c;它在内存中的存储方式非常灵活。本文将详细介绍反转链表、合并链表、旋转链表以及对链表排序这四种操作&#xff0c;并提供C和C的实现示例。 1. 反转链表 反转链表意味…

【数学建模】——【线性规划】及其在资源优化中的应用

目录 线性规划问题的两类主要应用&#xff1a; 线性规划的数学模型的三要素&#xff1a; 线性规划的一般步骤&#xff1a; 例1&#xff1a; 人数选择 例2 &#xff1a;任务分配问题 例3: 饮食问题 线性规划模型 线性规划的模型一般可表示为 线性规划的模型标准型&…