睿智的目标检测20——利用mAP计算目标检测精确度

article/2025/9/12 2:23:34

睿智的目标检测20——利用mAP计算目标检测精确度

  • 学习前言
  • GITHUB代码下载
  • 知识储备
    • 1、IOU的概念
    • 2、TP TN FP FN的概念
    • 3、precision(精确度)和recall(召回率)
    • 4、概念举例
    • 5、单个指标的局限性
  • 什么是AP
  • 绘制mAP

学习前言

好多人都想算一下目标检测的精确度,mAP的概念虽然不好理解,但是理解了就很懂。
在这里插入图片描述

GITHUB代码下载

这个是用来绘制mAP曲线的。
https://github.com/Cartucho/mAP
这个是用来获取绘制mAP曲线所需的txt的
https://github.com/bubbliiiing/count-mAP-txt

知识储备

1、IOU的概念

IOU的概念应该比较简单,就是衡量预测框和真实框的重合程度。
下图是一个示例:图中绿色框为实际框(好像不是很绿……),红色框为预测框,当我们需要判断两个框之间的关系时,主要就是判断两个框的重合程度。
在这里插入图片描述
计算IOU的公式为:
在这里插入图片描述
可以看到IOU是一个比值,即交并比。
在分子部分,值为预测框和实际框之间的重叠区域;
在分母部分,值为预测框和实际框所占有的总区域。
在这里插入图片描述
在这里插入图片描述
交区域和并区域的比值,就是IOU。

2、TP TN FP FN的概念

TP TN FP FN里面一共出现了4个字母,分别是T F P N。
T是True;
F是False;
P是Positive;
N是Negative。

T或者F代表的是该样本 是否被正确分类。
P或者N代表的是该样本 被预测成了正样本还是负样本。

TP(True Positives)意思就是被分为了正样本,而且分对了。
TN(True Negatives)意思就是被分为了负样本,而且分对了,
FP(False Positives)意思就是被分为了正样本,但是分错了(事实上这个样本是负样本)。
FN(False Negatives)意思就是被分为了负样本,但是分错了(事实上这个样本是这样本)。

在mAP计算的过程中主要用到了,TP、FP、FN这三个概念。

3、precision(精确度)和recall(召回率)

P r e c i s i o n = T P T P + F P Precision= \frac{TP}{TP+FP} Precision=TP+FPTP
TP是分类器认为是正样本而且确实是正样本的例子,FP是分类器认为是正样本但实际上不是正样本的例子,Precision翻译成中文就是“分类器认为是正类并且确实是正类的部分占所有分类器认为是正类的比例”。

R e c a l l = T P T P + F N Recall= \frac{TP}{TP+FN} Recall=TP+FNTP
TP是分类器认为是正样本而且确实是正样本的例子,FN是分类器认为是负样本但实际上不是负样本的例子,Recall翻译成中文就是“分类器认为是正类并且确实是正类的部分占所有确实是正类的比例”。

4、概念举例

在这里插入图片描述
如图所示,蓝色的框是 真实框绿色和红色的框是 预测框,绿色的框是正样本,红色的框是负样本。一般来讲,当预测框和真实框IOU>=0.5时,被认为是正样本。
因此对于这幅图来讲。
真实框一共有3个,正样本一共有2个,负样本一共有2个。
此时
P r e c i s i o n = 2 2 + 2 = 1 / 2 Precision= \frac{2}{2+2} = 1/2 Precision=2+22=1/2
R e c a l l = 2 2 + 1 = 2 / 3 Recall= \frac{2}{2+1} = 2/3 Recall=2+12=2/3

5、单个指标的局限性

在目标检测算法里面有一个非常重要的概念是置信度,如果置信度设置的高的话,预测的结果和实际情况就很符合,如果置信度低的话,就会有很多误检测。

假设一幅图里面总共有3个正样本,目标检测对这幅图的预测结果有10个,其中3个实际上是正样本,7个实际上是负样本。对应置信度如下。
在这里插入图片描述
如果我们将可以接受的置信度设置为0.95的话,那么目标检测算法就会将序号为1的样本作为正样本,其它的都是负样本。此时TP = 1,FP = 0,FN = 2。
P r e c i s i o n = 1 1 + 0 = 1 Precision= \frac{1}{1+0} = 1 Precision=1+01=1
R e c a l l = 1 1 + 2 = 1 / 3 Recall= \frac{1}{1+2} = 1/3 Recall=1+21=1/3
此时Precision非常高,但是事实上我们只检测出一个正样本,还有两个没有检测出来,因此只用Precision就不合适。

这个时候如果我们将可以接受的置信度设置为0.35的话,那么目标检测算法就会将序号为1的样本作为正样本,其它的都是负样本。此时TP = 3,FP = 3,FN = 0。
P r e c i s i o n = 3 3 + 3 = 1 / 2 Precision= \frac{3}{3+3} = 1/2 Precision=3+33=1/2
R e c a l l = 3 3 + 0 = 1 Recall= \frac{3}{3+0} = 1 Recall=3+03=1
此时Recall非常高,但是事实上目标检测算法认为是正样本的样本里面,有3个样本确实是正样本,但有三个是负样本,存在非常严重的误检测,因此只用Recall就不合适。

二者进行结合才是评价的正确方法。

什么是AP

AP事实上指的是,利用不同的Precision和Recall的点的组合,画出来的曲线下面的面积。
如下面这幅图所示。
在这里插入图片描述
当我们取不同的置信度,可以获得不同的Precision和不同的Recall,当我们取得置信度够密集的时候,就可以获得非常多的Precision和Recall。

此时Precision和Recall可以在图片上画出一条线,这条线下部分的面积就是某个类的AP值。

mAP就是所有的类的AP值求平均。

绘制mAP

我们首先在这个github上下载绘制mAP所需的代码。
https://github.com/Cartucho/mAP
在这个代码中,如果想要绘制mAP则需要三个内容。分别是:
detection-results:指的是预测结果的txt。
在这里插入图片描述
ground-truth:指的是真实框的txt。
在这里插入图片描述
image-optional:指的是图片,有这个可以可视化,但是这个可以没有。
在这里插入图片描述
我们需要生成这三个内容,此时下载第二个库,这个是我拿我制作的ssd代码写的一个可以生成对应txt的例子。
https://github.com/bubbliiiing/count-mAP-txt
我们首先将整个VOC的数据集放到VOCdevikit中
在这里插入图片描述
然后修改voc2ssd.py里面的trainval_percent,一般用数据集的10%或者更少用于测试。如果大家放进VOCdevikit的数据集不是全部数据,而是已经筛选好的测试数据集的话,那么就把trainval_percent设置成0,表示全部的数据都用于测试。
在这里插入图片描述
然后运行voc2ssd.py。
此时会生成test.txt,存放用于测试的图片的名字。
在这里插入图片描述
然后依次运行主目录下的get_dr_txt.py和get_gt_txt.py获得预测框对应的txt和真实框对应的txt。
get_dr_txt.py是用来检测测试集里面的图片的,然后会生成每一个图片的检测结果,我重写了detect_image代码,用于生成预测框的txt。
利用for循环检测所有的图片。
在这里插入图片描述
get_dr_txt.py是用来获取测试集中的xml,然后根据每个xml的结果生成真实框的txt。
利用for循环检测所有的xml。
在这里插入图片描述
完成后我们会在input获得三个文件夹。
在这里插入图片描述
此时把input内部的文件夹复制到mAP的代码中的input文件夹内部就可以了,然后我们运行mAP的代码中的main.py,运行结束后,会生成mAP相关的文件。
在这里插入图片描述
结果生成在Result里面。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/oX6dSZby.shtml

相关文章

误差与精度

机械专业用于教授学生误差与精度概念的课程叫做《公差与测量》或者叫做《机械精度设计》,而公差或者精度的本质含义就是误差的大小,公差越小,误差越小,精度越高。所以机械专业这门课其本质教授的还是误差理论。 在学校并没有好好学…

层次分析法 AHP

层次分析法(Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家 T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而…

权重计算方法一:层次分析法(AHP)

目录 1.层次分析法原理介绍 2.层次分析法建模步骤 3.案例分析 3.1 题目简述 3.2 确定评价指标,建立层次关系 3.3 构造判断矩阵 3.3.1 标度定义 3.3.2 构造判断矩阵 3.4 一致性检验 3.5 层次总排序 4.代码实现 1.层次分析法原理介绍 关于层次分析法的具体原…

【数学建模】层次分析法(AHP)

层次分析法 文章目录 层次分析法用途一、模型介绍一道典型例题1.建立层次结构2.对于同一层次的个元素关于上一层次中的某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。2.1 O-C矩阵(确定指标的权重)2.2 准则…

什么是AHP 层次分析法?

AHP层次分析法(The analytic hierarchy process)是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策…

[评价体系] 2、层次分析法AHP原理、例题

目录 1 基本介绍 2 建立步骤 2.1 建立递阶式层次结构模型 2.2 构造比较判断矩阵 2.3 层次单排序及一致性检验 2.4 层次总排序及其一致性检验 2.5 数据加权 3 案例:某学科创新能力评价指标体系 3.1 构建评价指标体系 3.2 构造判断矩阵及一致性检验 3.3 …

数学建模方法——层次分析法(AHP)

目录: 层次分析法简介层次分析法基本原理构造判断矩阵一致性检验一致性检验通过的判断矩阵求权重 4.1 算数平均法求权重 4.2 几何平均法求权重 4.3 特征值法求权重总结 0. 层次分析法简介 层次分析法(Analytic Hierarchy Process,简称AHP&…

层次分析法(AHP)算法简介

一、模型介绍 层次分析法(AHP)是美国运筹学家萨蒂于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分…

层次分析法(AHP)原理_例题应用及代码

层次分析法(AHP)原理应用及代码 1.AHP算法步骤2.算法举例第一步:建立递阶层次图第二步:建立判断矩阵计算五个指标的判断矩阵计算三个方案相对于某一指标的权重第三步:进行一致性检验一致性检验的步骤第一步:计算一致性指标 C I CI CI第二步:查找对应的平均随机一致性指标…

小话层次分析法(AHP)

在目标决策领域,有的决策数据信息是量化的,如一个项目的未来收益、消耗成本等,通过对各种信息进行计算可以做出较好的决策;但有的决策数据信息并不全是数字化的,如项目信息为“这个收益更好”、“这个成本更高”这样的…

清风数学建模学习笔记——层次分析法(AHP)

层次分析法 层次分析法(analytic hierarchy process),简称AHP。是建模比赛中比较基础的模型之一,其主要解决评价类的问题。如选择哪种方案最好,哪位员工表现最好等。 它是一个较为 主观 的评价方法,其在赋权…

层次分析法-yaahp软件使用

yaahp下载资源: 链接:https://pan.baidu.com/s/1Y08-wgn0YTzrDCaqToZLRg 提取码:avkc 目录 一.打开yaahp软件 1.新建AHP空白文件 2.进入画布页面。 3.点击检查模型按钮,检查模型是否正确 二、构造判断矩阵 1.先创建决策…

AHP层次分析法详解

APH简介 起源 层次分析法(AHP)是美国运筹学家Saaty于上世纪70年代初,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将…

AHP(层次分析法)的全面讲解及python实现

一、层次分析法的使用流程: 1. 建立层次结构模型 首先绘出层次结构图,正常三层是比较常见的:决策的目标、考虑的决策准则因素和决策对象。按它们之间的相互关系分为最高层、中间层和最低层(如下图是四层结构的) 2. 分…

层次分析法(AHP)基础概念整理+步骤总结

层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法 递阶层次的建立与特点 一般分为三层,最上面为目标层,最下面为方案层,中间是准则层或指标层。 最顶层是我们的目标,比如说选leader&…

层次分析法(AHP)模型的应用案例

层次分析法(AHP)模型的特点就是通过搭建递阶的层次结构,把我们生活中的判断事件转化到两两比较层次上面,从而把难于定性的判断来变为可实现数据操作的重要程度方面。在实际情况下,决策者可使用层次分析法(A…

层次分析法(AHP)详细步骤

1. 算法简介 层次分析法(AHP)是美国运筹学家萨蒂于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分…

第一讲 综合评价分析—层次分析法(AHP)

写在前面:本文仅用于记录清风数模课程的笔记总结 AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因 素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重 要度的比较上面。在许多情况下,决策者可以…

层次分析法(AHP法)

目录 一、介绍 二、层次分析法的基本原理 三、层次分析法的主要步骤 四、层次分析法评价过程 1,建立多级阶梯的层次结构 2,求判断矩阵A 3,计算相对权重 1)求和法 2)求根法 4,结果 5,综合重要度计算 一…

层次分析法(AHP)详解+完整代码

层次分析法(AHP) 1.算法简述与原理分析 ​ 层次分析法是一种主观赋值评价方法也是一个多指标综合评价算法,常用于综合评价类模型。层次分析法将与决策有关的元素分解成目标、准则、方案等多个层次,并在此基础上进行定性和定量分…