计算机视觉目标检测性能指标
目录
精确率(Precision)和召回率(Recall)
F1分数(F1 Score)
IoU(Intersection over Union)
P-R曲线(Precision-Recall Curve)和 AP
mAP(mean Average Precision)
目标检测是计算机视觉领域中的一个重要任务,其目标是在图像或视频中识别出物体的位置和类别。为了评估目标检测算法的性能,需要使用一系列指标来量化模型的准确性、召回率、精确率以及对不同类别的处理能力。本文将详细介绍常见的目标检测性能指标,包括精确率、召回率、F1分数、IoU、AP、mAP、P-R曲线等,同时提供相关公式和案例。
精确率(Precision)和召回率(Recall)
精确率和召回率是评估目标检测模型性能的重要指标,它们通常在二分类任务中使用。在目标检测中,精确率表示模型正确识别出的目标数与所有被模型预测为目标的框的数量之间的比例。召回率表示模型正确识别出的目标数与总目标数之间的比例。

公式如下:
准确率(Accuracy):Acc = ( TP + TN ) / ( P +N )
精确率( precision ):TP / ( TP+FP ) = TP / P
召回率(recall)):TP / (TP + FN ) = TP / T
案例: 假设我们有一个目标检测模型在一组图像上进行测试,其中涉及10个目标物体。模型识别出了8个目标,其中6个是真实目标(真阳性),2个是错误识别的(假阳性),而实际上还有2个目标未被识别(假阴性)。那么,精确率为6 / (6 + 2) = 0.75,召回率为6 / (6 + 2) = 0.75。
F1分数(F1 Score)
F1分数是精确率和召回率的调和平均,用于综合考虑模型的准确率和召回率。F1分数对于处理不平衡数据集或需要权衡精确率和召回率的情况非常有用。
公式如下:

案例: 假设一个目标检测模型的精确率为0.8,召回率为0.7。那么,F1分数为2 * (0.8 * 0.7) / (0.8 + 0.7) = 0.7619。
IoU(Intersection over Union)
IoU是衡量预测边界框和真实边界框之间重叠程度的指标,常用于评估目标检测框的质量。IoU通过计算预测框和真实框的交集面积除以它们的并集面积来衡量。
公式如下:

通常,如果IoU大于某个阈值(例如0.5),则将预测框视为正确预测。
案例: 考虑一个目标检测任务,真实框的位置为[20, 30, 100, 150],预测框的位置为[25, 35, 95, 145]。交集面积为(95 - 25) * (145 - 35) = 6000,真实框面积为(100 - 20) * (150 - 30) = 9000,预测框面积为(95 - 25) * (145 - 35) = 6000。并集面积为9000 + 6000 - 6000 = 9000。因此,IoU为6000 / 9000 = 0.6667。
P-R曲线(Precision-Recall Curve)和 AP
PR 曲线是用于衡量模型在不同召回率下的准确性的一种图形化表示方式。在目标检测中,召回率是指正确检测出的正样本数量与所有实际正样本数量的比率,而精确率是指正确检测出的正样本数量与所有被模型预测为正样本的样本数量的比率。
用一个简单的例子来演示平均精度(AP)的计算。假设数据集中总共有5个苹果。我们收集模型为苹果作的所有预测,并根据预测的置信水平(从最高到最低)对其进行排名。第二列表示预测是否正确。如果它与ground truth匹配并且loU≥0.5,则是正确的。

表中,Rank一列表示框按置信度由高到低排列后的序号,correct表示该框是否正确,Precision表示计算出的精确率,Recall表示计算出的召回率。
精确率和召回率的计算是一个不断累计的过程,而不是每个框独立的。
例如:
在第一个框时,精确率 = 1/1 =1.0,召回率 =1/5 = 0.2;
在第二个框时,精确率 = 2/2 = 1.0,召回率 = 2/5 = 0.4;
在第三个框时,精确率 = 2/3 = 0.67,召回率 = 2/5 = 0.4;
……
这时,我们根据精确率和召回率,就能绘制出PR曲线:

AP是PR曲线下的面积,会设定采样点,一般在横轴0~1范围内平均分为10或者100段,最后采样的值相加除以采样点数。当然还有别的方法。
mAP(mean Average Precision)
mAP是所有类别AP的平均值,通常用于衡量多类别目标检测任务的整体性能。它对模型在各个类别上的性能进行综合评估,能够准确反映模型在不同类别上的表现。
案例: 假设我们有一个多类别目标检测模型,对于每个类别计算得到的AP如下:
| 类别 | AP |
|---|---|
| 狗 | 0.85 |
| 猫 | 0.75 |
| 车辆 | 0.90 |
| 行人 | 0.70 |
则mAP为(0.85 + 0.75 + 0.90 + 0.70) / 4 = 0.80。
目标检测性能指标在评估模型在不同数据集和任务上的性能时起着重要作用。精确率、召回率、F1分数、IoU、AP、mAP以及P-R曲线等指标能够综合考虑模型在不同方面的表现,帮助我们更好地理解模型的优势和局限性。在实际应用中,根据任务的特点和需求,选择适合的指标来评估模型的性能是至关重要的。
相关文章:
计算机视觉目标检测性能指标
目录 精确率(Precision)和召回率(Recall) F1分数(F1 Score) IoU(Intersection over Union) P-R曲线(Precision-Recall Curve)和 AP mAP(mean…...
什么是webpack?如何在项目中安装配置webpack?
webpack 是前端项目工程化的具体解决方案。 它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端 JavaScript 的兼容性、性能优化等强大的功能。 让程序员把工作的重心放到具体功能的实现上,提高了前端开发效率和项目的可维护性。目前企业…...
linux两台服务器互相备份文件(sshpass + crontab)
crontab crontab是linux系统自带的定时调度软件,可用于设置周期性被执行的指令,一般用在每天的非高峰负荷时间段运行作业,可在无需人工干预的情况下运行作业。支持在一周或一月中的不同时段运行。 crontab命令允许用户提交、编辑或删除相应的…...
Flask框架-配置日志(1):flask使用日志
一、项目结构 study_flask --| apps/ --| __init__.py --| base/ --| logger.py --| __init__.py --| app.py 二、配置日志功能 1、base/logger.py import os import logging from datetime import datetime,date,timedelta from logging.handlers import RotatingFileHandl…...
每天一道leetcode:1192. 查找集群内的关键连接(图论困难tarjan算法)
今日份题目: 力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号。它们之间以 服务器到服务器 的形式相互连接组成了一个内部集群,连接是无向的。用 connections 表示集群网络,connections[i] [a, b] 表示服务器 a …...
解决Windows系统远程登陆后vscdoe无法输入字符,键盘没有反应,鼠标可以点击,没有反应
文章目录 前言操作过程 前言 使用vscode编译器时,通过远程登录或者屏幕锁屏解锁后,vscode出现无法输入字符内容,但vscode没有死机,切换到其他软件的窗口再切换回来后,可以使用鼠标点击,但是只要使用键盘输…...
axios同一个接口,同时接收 文件 或者 数据
1、前端代码 const service axios.create({baseURL: "http://192.168.2.200:8080/api",timeout: 180000 })// 响应拦截 service.interceptors.response.use(async response > {if(response){// 请求时设置返回blob, 但是实际上可能返回的是json的情况if (respon…...
【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云
【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云 serverless服务是腾讯云自研的新一代云原生关系型数据库TDSQ L-C的无服务器架构版,是全Serverless架构的云原生数据库 前言 体验了一下腾讯云刚出的TDSQL-C Serverless,使用…...
算法通关村第九关 | 二叉树查找和搜索树原理
1. 二分查找的扩展问题 1.1山脉数组的巅峰索引 LeetCode852:题目核心意思是在数组中,从0到i是递增的,从i1到数组最后是递减的,让你找到这个最高点。 三种情况: mid在上升阶段的时候,满足arr[mid] > a…...
jenkins gitlab 安装
目录 一 准备安装环境 二 安装gitlab软件 三 配置gitlab 四 重新加载配置启动gitlab 五 修改密码 五 创建用户组 一 准备安装环境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安装 Postfix 邮件服务器,以便 Git…...
Vue2(组件开发)
目录 前言一,组件的使用二,插槽slot三,refs和parent四,父子组件间的通信4.1,父传子 :父传子的时候,通过属性传递4.2,父组件监听自定义事件 五,非父子组件的通信六&#x…...
(二)结构型模式:8、代理模式(Proxy Pattern)(C++示例)
目录 1、代理模式(Proxy Pattern)含义 2、代理模式的UML图学习 3、代理模式的应用场景 4、代理模式的优缺点 5、C实现代理模式的实例 1、代理模式(Proxy Pattern)含义 代理模式(Proxy),为…...
代码审计-ASP.NET项目-未授权访问漏洞
代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…...
爬虫逆向实战(十四)--某培训平台登录
一、数据接口分析 主页地址:某培训平台 1、抓包 通过抓包可以发现登录是表单提交到j_spring_security_check 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个j_password加密参数 请求头是否加密? 无响应是…...
GT Code - 图译算法编辑器(集成QT、C++、C、Linux、Git、java、web、go、高并发、服务器、分布式、网络编程、云计算、大数据项目)
目录 项目概述 发文意义 项目介绍 功能分析 设计概要 功能展示 项目文档 项目概述 “GT Code 图译算法编辑器”是一款跨平台、轻量级的代码编辑器,主要面向软件开发人员,它实现了编辑、编译、绘制代码流程图、生成调试演示动画等功能,以…...
# 快速评估立功科技基于S32K324的TMS方案
文章目录 1.前言2.立功科技的TMS方案介绍2.1 介绍资料2.2 简要介绍 3.S32K3_TriMotor评估板测试3.1 环境搭建S32 Design Studio for S32 Platform 3.4安装RTD 2.0.0安装Freemaster 3.2 3.2 例程测试3.3 例程适配3.4 双核烧录3.5 测试 1.前言 最近和一些做汽车水泵/风机的客户交…...
docker+haror
docker 2013年诞生,推荐单容器只运行一个程序或进程,形成一个分布式的应用模型。 总结下来就是:docker带来启动流程更快,运行效率较高、资源损耗较小,属于轻量级的服务。 docker的安装 推荐的一键化安装的脚本&#…...
Shell编程——弱数据类型的脚本语言快速入门指南
目录 Linux Shell 数据类型 变量类型 运算符 算术运算符 赋值运算符 拼接运算符 比较运算符 关系运算符 控制结构 顺序结构 条件分支结构 if 条件语句 case 分支语句 循环结构 for 循环 while 循环 until 循环 break 语句 continue语句 函数 函数定义 …...
iOS textView支持超链接跳转
将某些文字变成高量可以点击的超链接核心功能代码 attri.addAttribute(NSAttributedString.Key.link, value:NSURL.init(string: "dctt:p/userPrivacy.html")!, range: NSRange.init(location: s.count - 4, length: 4) )textView.linkTextAttributes [NSAttributed…...
大牛分析相机镜头光学中疑难问题
1、变焦和对焦有什么区别? 变焦就是改变镜头的焦距(准确说是像距),以改变拍摄的视角,也就是通常所说的把被摄体拉近或推远。例如18-55mm和70-200mm镜头就是典型的变焦镜头。焦距越长,视角越窄。 对焦通常指调整镜片组和底片(传感器平面)之间的距离,从而使被摄物在CC…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
