人工智能学习07--pytorch19--目标检测:常见指标(mAP计算+coco评价标准)

news2025/1/11 6:02:52

怎样才算正确检测到一个目标?

在这里插入图片描述

  • 什么是IOU:
    https://blog.csdn.net/qq_51831335/article/details/125719420
    在这里插入图片描述
    在这里插入图片描述

mAP计算方法:

在这里插入图片描述
假设针对某一类别的AP情况
TP:预测正确的边界框个数。预测边界框与GT-box的IOU>0.5
FP:假阳性

FN就是 把检测对象检测为背景的 那些检测框 的数量,也就是一些被检测错误(F)为负样本(N)的样本,它们本来应该被检测为正样本。

FN:漏检
在这里插入图片描述
↑只检测出了一个目标:
TP=1
FP=0
Precision=1/(1+0)=1
所以仅通过Precision无法判断模型好坏
在这里插入图片描述↑假设有5个目标,网络预测出了50个目标(包括需要检测的这5个目标)。
TP=真实目标的个数
FN=0,因为没有漏检
召回率Recall = TP/(TP+FN) =100%
所以单靠召回率也不行

引入AP,进一步求mAP。
因为是针对每一个类别去分别求的AP值。一个类别对应一个AP值。但是在目标检测中有多个类别,所以对多个类别取平均值,就得到了mAP

在这里插入图片描述
累加训练集中的目标个数(2)
通过列表表示检测到的目标信息(按照Confidence降序排列表格)
Confidence:预测这个目标的概率
OB:是否是TP(是否是想要检测的目标)
(弹幕:
若一个 GT 有多个预测边框,则认为 IOU 最大且大于等于 0.5 的预测框标记为 TP,其他的标记为 FP,即一个 GT 只能有一个预测框标记为 TP


因为预测的两个边界框预测的目标都是第一只猫,所以ID都是1,预测给出的数值是置信度,不是IOU,IOU是预测框与真实框的交并比

在这里插入图片描述
针对confidence取不同阈值所得到的Precision和Recall的信息。
1.将Confidence设置到0.98,大于等于0.98的目标才算正确匹配。
2.只检测到了一个目标(绿色,TP=1),所以不存在假阳性(FP=0)。总目标个数是7,所以漏检了6个(FN=6)。
Precision=1/(1+0)=1
Recall=1/(1+6)=1/7

将Confidence阈值调低:
在这里插入图片描述
FN=7-2=5

在这里插入图片描述
False:并不是想要检测的目标。FP=1。
FN=7-4=3.

不断调整阈值(因为这样可以使得recall值一定是逐渐增大的),得到↓
在这里插入图片描述
可以以Recall为横坐标,Precision为纵坐标,得到P-R曲线。
对于横坐标Recall,需要滤除一些重复信息(保存Precision最大的那个)。
在这里插入图片描述
具体方法见视频。(目的就是求面积,就算不规则的也是类似画梯形去近似)
最后求得的0.6694就是对应猫这个类别的AP值。可以用同样的方法求得别的类别是AP值,最终一起求均值得到mAP。

coco评价标准:

使用目标检测网络训练后,在验证集中得到的coco评价列表
在这里插入图片描述
比较常见的两个目标检测数据集:pascal voc、coco
在这里插入图片描述
上面COCO评价标准中每一条数据的含义:
AP:
在这里插入图片描述
AP Across Scales:
针对小面积、中面积、大面积的AP
可以了解到目标检测网络对不同尺度目标的检测效果。
在这里插入图片描述
AR: recall查全率
在这里插入图片描述
第三个:
最多预测100个目标(检测框)。通过限定预测的值,可以从下图看出,大约64%的目标被检测出来。
在这里插入图片描述
AR Across Scales:
对应不同目标尺度的AR值。
在这里插入图片描述
建议看的:
在这里插入图片描述
如果对目标准确率较高就看IoU=0.75的哪个。
对小目标检测要求较高:
在这里插入图片描述
如果这两个差距很小的话,可以减少检测的目标个数,可以提高一些目标检测的效率。
在这里插入图片描述

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

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

相关文章

原工程运行正常,重新复制一份后再 npm install 后再运行就报错的解决办法

原工程,运行正常 将刚刚的工程复制一份呢,重新 npm install 再 npm run serve 就报错 出现这个问题十之八九都是依赖的问题。有可能是因为这个工程里面之前安装过一些东西,后来莫名其妙的就把 package.json 里面相关的依赖给删掉了。但由于原…

lwIP 开发指南

目录 lwIP 初探TCP/IP 协议栈是什么TCP/IP 协议栈架构TCP/IP 协议栈的封包和拆包 lwIP 简介lwIP 源码下载lwIP 文件说明 MAC 内核简介PHY 芯片介绍YT8512C 简介LAN8720A 简介 以太网接入MCU 方案 lwIP 无操作系统移植lwIP 带操作系统移植ARP 协议ARP 协议的简介ARP 协议的工作流…

uni-app项目运行和项目结构目录讲解

UNI-APP学习系列 uni-app项目运行和项目结构目录讲解 文章目录 UNI-APP学习系列前言总结 前言 UNI-APP学习系列之uni-app项目运行和项目结构目录讲解 运行项目 使用 pnpm 包管理工具 # 查看是否安装pnpmpnpm -v# 无则安装npm install -g pnpm下载依赖 pnpm i运行pnpm dev:h…

Window的创建

Window的创建 上一篇说到了Window和WindowManager的关系并且讲述了WindowManager如何添加Window与Window内部的三个方法的实现 这篇主要讲几个常见的Window的创建比如Activity,Dialog和Toast 其中Activity属于应用Window Dialog属于子Window Toast属于系统Window z-order…

python基础知识(二):变量和常用数据类型

目录 1. 变量1.1 变量的定义1.2 变量的命名规则 2. 常用数据类型2.1 字符串2.1.1 字符串的常用方法2.1.1.1 title()方法:将字符串中的单词首字母大写2.1.1.2 upper()方法:将字符串中的单词字母全大写2.1.1.3 lower()方法:将字符串中的单词字母…

什么是分段路由?如何在网络中实施分段路由?

在计算机网络中,分段路由(Subnetting)是一种将一个大的网络划分为多个较小子网的技术。它允许网络管理员更有效地分配 IP 地址和管理网络流量。本文将详细介绍分段路由的概念、原理以及如何在网络中实施分段路由。 1. 分段路由的概念 分段路…

【深入浅出Spring Security(一)】Spring Security的整体架构

Spring Security的整体架构 一、整体架构认证(Authentication)AuthenticationManagerAuthentication登录后的数据保存(SecurityContextHolder) 授权(Authorization)ConfigAttribute 二、总结 这篇博客所述主…

CISCN 2023 初赛 pwn——Shellwego 题解

这是一个用go语言写的elf程序,没有PIE。这也是本蒟蒻第一次解go pwn题,故在此记录以便参考。 而且,这还是一个全部符号表被抠的go elf,直接面对一堆不知名的函数实在有些应付不来,因此在比赛时委托逆向的队友把符号表…

2023/5/28总结

static static:静态,可以修饰成员方法,成员变量。(是所有成员共享的) static修饰的特点: 被类的所有对象共享(判断是否使用静态关键字的条件)可以通过类名和对象名调用在定义对象时,…

图【数据结构】

目录 一、图的定义和基本术语 二、图的类型定义 三、图的存储结构 1、数组(邻接矩阵)表示法 二、邻接表(链式)表示法 三、图的邻接表的存储表示 四、十字链表与邻接多重链表 (1)十字链表 &#xff…

113.删除有序数组中的重复项 removeDuplicatesFromSortedArray

文章目录 题目描述解题思路代码详解运行截图 题目描述 题目链接 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元…

Java中ReentrantLock的概念深入理解

ReentrantLock和Synchronized的区别 核心区别 ReentrantLock是一个类,Synchronized是Java中的一个关键字。 两者都是JVM层面实现互斥锁的方式 效率区别 线程竞争激烈推荐使用ReentrantLock去实现,不存在锁竞争观念; Synchronized是存在锁升…

大数据Doris(二十九):Broker Load导入HDFS csv 格式数据并提取文件路径中的分区字段

文章目录 Broker Load导入HDFS csv 格式数据并提取文件路径中的分区字段 一、创建Doris表 二、准备HDFS数据<

蚁群算法(解决TSP问题)

一、概述 蚂蚁在寻找食物源时&#xff0c;会在其经过的路径上释放一种信息素&#xff0c;并能够感知其它蚂蚁释放的信息素。信息素浓度的大小表征到食物源路径的远近&#xff0c;信息素浓度越高&#xff0c;表示对应的路径距离越短。通常&#xff0c;蚂蚁会以较大的概率优先…

chatgpt赋能python:Python文件复制粘贴到另一个目录

Python文件复制粘贴到另一个目录 Python是一种通用编程语言&#xff0c;可用于各种任务&#xff0c;包括文件复制和移动。在本文中&#xff0c;我们将探讨Python中的文件复制粘贴到另一个目录。 为什么要使用Python进行文件复制粘贴&#xff1f; Python提供了强大的文件处理…

case when用法

case when的基本使用&#xff1a; Case when 的用法: 一旦满足了某一个WHEN, 则这一条数据就会退出CASE WHEN , 而不再考虑 其他CASE。 Case when 的用法 -- -搜索Case函数: Case函数(Case搜索函数): 判断表达式的真假,如果为真,返回结果;如果为假,返回else值;如果未定义el…

批处理文件(.bat)启动redis及任何软件(同理)

批处理文件 每次从文件根目录用配置文件格式来启动redis太麻烦了 可以在桌面上使用批处理文件&#xff08;.bat&#xff09;启动Redis&#xff0c;请按照以下步骤进行操作&#xff1a; 打开文本编辑器&#xff0c;如记事本。 在编辑器中输入以下内容&#xff1a; 将文件保存…

70.爬楼梯问题+746.使用最小花费爬楼梯

目录 一、70.爬楼梯问题分析 二、代码 三、746.使用最小花费爬楼梯分析 四、代码 一、70.爬楼梯问题分析 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int climbStairs(int n) {if(n1||n2)return n;vector<int>dp(n1);dp…

线性表的链式表示——单链表

目录 一、单链表的定义二、单链表上基本操作的实现1、采用头插法建立单链表2、采用尾插法建立单链表3、按序号查找结点值4、按值查找表结点5、插入结点操作6、删除结点操作7、求表长操作 三、双链表、循环链表、静态链表 顺序表可以随时存取表中的任意一个元素&#xff0c;它的…

翻译:开源软件的架构(volume2): 可伸缩web框架及分布式系统

英文源地址 开源软件已经成为构建一些超大型网站的基础组成部分了.随着这些网站的成长, 围绕着它们软件架构的最佳实践与指导思想开始涌现.本文尝试去阐述设计大型网站时的需要考虑一些关键问题, 以及用于实现这些目标的基础组件. 本文主要关注web系统,尽管其中一些内容也适用于…