【计算机视觉 | 目标检测】目标检测中的评价指标 mAP 理解及计算(含示例)

文章介绍了目标检测领域的关键评价指标,包括Precision(精确率)、Recall(召回率)、AveragePrecision(AP)、meanAveragePrecision(mAP)、IntersectionoverUnion(IoU)和F1-score。这些指标用于衡量算法在检测目标时的准确性、召回能力和多类别性能。AP和mAP是评估目标检测算法综合性能的重要标准,而IoU则用于计算预测边界框与真实边界框的重叠程度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目标检测的评价指标

在目标检测中,有几个常用的评价指标用于衡量算法的性能。以下是其中几个重要的评价指标:

1.1 Precision

Precision(精确率):Precision 衡量了在所有被检测为正样本的样本中,有多少是真正的正样本。

Precision 的计算公式为:Precision = TP / (TP + FP),其中 TP 是真正的正样本数量,FP 是将负样本错误地标记为正样本的数量。较高的 Precision 表示算法在正样本的判定上更准确。

1.2 Recall

Recall(召回率):Recall 衡量了在所有真正的正样本中,有多少被算法正确地检测出来了。

Recall 的计算公式为:Recall = TP / (TP + FN),其中 TP 是真正的正样本数量,FN 是错误地未能检测到的正样本数量。较高的 Recall 表示算法能够更好地检测出真实目标。

1.3 Average Precision(AP)

AP 是根据 Precision-Recall 曲线计算的面积。它对不同召回率下的 Precision 进行插值,并计算插值曲线下的面积。AP 是评估目标检测算法在不同召回率下的综合性能指标。

1.4 mean Average Precision(mAP)

mAP 是所有类别的 AP 值的平均值。它是评估多类别目标检测算法整体性能的重要指标。

1.5 Intersection over Union(IoU)

IoU 是用于衡量预测边界框与真实边界框之间重叠程度的指标。IoU 计算为预测框与真实框的交集面积除以它们的并集面积。IoU 通常用于确定预测框是否与真实框匹配。

1.6 F1-score

F1-score 是 Precision 和 Recall 的调和平均值,用于综合考虑算法的准确性和召回能力。

F1-score 计算公式为:F1-score = 2 * (Precision * Recall) / (Precision + Recall)。

需要注意的是,评价指标的选择和解释应该结合具体的任务和应用场景,综合考虑多个指标可以更全面地评估目标检测算法的性能。

二、基础知识

当评估分类或目标检测算法性能时,Precision(精确率)和 Recall(召回率)是两个重要的指标。它们用于衡量算法在识别目标时的准确性和召回能力。

2.1 Precision

  • 定义:Precision 衡量了在所有被分类为正样本或检测为目标的样本中,有多少是真正的正样本或真实目标。
  • 计算公式:Precision = TP / (TP + FP),其中 TP 是真正的正样本或目标数量,FP 是将负样本或非目标错误地标记为正样本或目标的数量。
  • 解释:Precision 告诉我们,当算法判断某个样本为正样本或目标时,有多大概率它是正确的。较高的 Precision 表示算法在正样本或目标的判定上更准确。

2.2 Recall

  • 定义:Recall 衡量了在所有真正的正样本或目标中,有多少被算法正确地检测出来了。
  • 计算公式:Recall = TP / (TP + FN),其中 TP 是真正的正样本或目标数量,FN 是错误地未能检测到的正样本或目标数量。
  • 解释:Recall 告诉我们算法在找出真实目标方面的能力。较高的 Recall 表示算法能够更好地检测出真实目标。

精确率和召回率之间存在一种权衡关系。增加阈值可以提高精确率,但可能会导致召回率降低,因为更少的样本被分类为正样本或目标。降低阈值可以提高召回率,但可能会导致精确率降低,因为更多的样本被分类为正样本或目标。

精确率和召回率经常一起使用,以综合评估算法的性能。同时考虑这两个指标可以帮助我们了解算法的分类或检测能力,并找到适合特定任务需求的平衡点。

在某些情况下,比如类别不平衡的数据集中,仅使用精确率或召回率可能会导致评估结果不准确。因此,使用其他指标如 F1-score(精确率和召回率的调和平均值)、AP(平均精确率)等能够提供更全面的性能评估。

2.3 IoU

在目标检测中即计算预测边界框与 GT 边界框的重叠程度。

在这里插入图片描述

IoU(Intersection over Union)是目标检测中常用的评价指标,用于衡量预测边界框与真实边界框之间的重叠程度。它是通过计算两个边界框的交集面积除以它们的并集面积得到的。

具体而言,IoU 的计算公式如下:

IoU = Intersection Area / Union Area

其中,Intersection Area 是预测边界框与真实边界框的交集面积,而 Union Area 是它们的并集面积。

IoU 的取值范围是0到1,其中0表示没有重叠,1表示完全重叠。

IoU 在目标检测中具有重要的应用,常用于以下几个方面:

  1. 用于判断目标检测算法的预测结果是否正确,通常通过设置 IoU 阈值来决定预测框是否与真实框匹配。
  2. 在训练目标检测算法时,用于计算正样本与预测框之间的 IoU,以确定哪些预测框是与真实目标重叠较好的正样本。
  3. 在评估目标检测算法性能时,常用 IoU 作为指标之一,用于衡量算法的准确性和召回能力。

需要注意的是,IoU 只关注边界框之间的重叠程度,不考虑其它因素,如类别信息。因此,对于多类别目标检测任务,通常会结合 IoU 与类别预测的准确性来综合评估算法性能。

三、mAP 的计算

参考文献:

https://blog.csdn.net/NooahH/article/details/90140912

首先要计算每一类的 AP(Average Precision)。比如我们计算 person 这一类的 AP。

这里有一组测试集图片,每张图片都事先标记或未标记出 person,这样我们就有了 person 的 GT(Ground Truth)边界框。

在每张测试图片输入模型后会得到一系列 person 类的预测边界框,每个边界框都附带有一个置信度。(注意当我们计算 person 的 AP 时就只关注这一类的边界框,不考虑其他类的,即使该图片中存在如 dog 类的 GT 边界框。)

将每张测试集中的图片进行检测后会得到一系列预测边界框集合,之后将该预测边界框集合按照置信度降序排序。

然后对于某一张测试集图片,我们计算在该图片上 person 类的预测边界框与 GT 边界框重叠程度(即 IoU),如果 IoU 大于设定阈值(IoU 阈值的典型值为0.5)则将该边界框标记为 TP,否则标记为 FP。

对测试集中每张图片的预测边界框均进行如上操作(注意:在计算某一张图片的预测框时会从预测框集合中选取该图片的预测框)。由此会判定预测边界框集合中每个预测边界框属于 TP 或者 FP。

如下面3张图,我们要检测人脸,蓝色框表示 GT,绿色框表示预测边界框,旁边的红色数字为置信度:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以得出有3个 GT(GT1,GT2,GT3),3个预测框(BBox1,BBox2, BBox3)。

  1. 我们按照置信度降序排序预测框,这里的预测框正好是降序排序的。
  2. 对每张图片中的预测框计算 IoU,可以看出 BBox1 标记为 TP,BBox2 标记为 FP,BBox3 标记为 TP。
  3. 之后计算不同recall情况下 precision 值。前1个框,即 BBox1,计算precision = TP / (TP + FP) = 1 / (1 + 0) = 1,recall = TP / # GT = 1 / 3。(#GT 指的是测试集中所有 GT 数目,这里即为3)同理前2个框,即 BBox1,BBox2,计算 precision = 1 / (1 + 1) = 0.5,recall = 1 / 3。前3个框,即 BBox1,BBox2,BBox3,计算 precision = 2 / (2 + 1) = 2 / 3,recall = 2 / 3。我们就有了一组recall、precision值[(1 / 3, 1), (1 / 3, 0.5), (2 / 3, 2 / 3)]
  4. 绘制 PR 曲线如下图,然后每个“峰值点”往左画一条线段直到与上一个峰值点的垂直线相交。这样画出来的红色线段与坐标轴围起来的面积就是 AP 值。这里:

在这里插入图片描述

在这里插入图片描述

按照如上方法计算其他所有类的 AP,最后取平均值即为 mAP(mean Average Precision):

在这里插入图片描述
其中 C C C 表示总类别数目, A P i AP_i APi 表示第 i i i 类的 AP 值。

四、AP 计算的例子

比如说我们的测试集中类 A 的 GT 有 7 个,经过目标检测模型预测到了 10 个边界框,经过上次排序及判断操作,有如下结果:

在这里插入图片描述
按照 confidence 降序排序。从上表 TP 可以看出我们预测正确 5 个(TP = 5),从 FP 看出预测错误 5 个(FP = 5)。除了表中已预测到的 5 个 GT,还有 2 个 GT 并未被预测出来(FN = 2)。

接下来计算 AP,计算前 * 个 BBox 得到的 precision 和 recall :

在这里插入图片描述

在计算 precision 和 Recall 时 Rank * 指的是前 * 个预测边界框的 TP 和 FP 之和。

同样可以通过绘制 PR 曲线计算线下面积,如下图所示:

在这里插入图片描述
AP值即浅蓝色图形的面积,蓝色折线为recall、precision点。

在这里插入图片描述

<think>好的,用户遇到了Git合并时本地更改会被覆盖的问题,需要解决方案。根据之前的引用资料,解决方法主要有commit、stash和revert三种。首先,我得确认用户的具体情况,比如他们的本地更改是否已经完成,是否需要保留,或者是否可以丢弃。用户可能不太清楚这三种方法的适用场景,需要详细解释每个选项的步骤和优缺点。比如,commit适用于需要保留更改的情况,stash适合临时保存以便后续恢复,而revert则是直接撤销更改,适用于不需要保留的情况。需要结构清晰,分点说明,每个方法都给出操作步骤和适用场景,帮助用户理解哪种情况最适合他们。还要注意使用中文,避免技术术语过于复杂,让用户容易理解。同时,生成相关问题,可能涉及如何恢复stash的内容,或者如何避免频繁冲突等,扩展用户的知识点。另外,要确保LaTeX格式正确,但在这个问题中可能用不上数学公式,所以主要关注代码块和引用标识。检查引用是否正确,比如引用[^1]和[^2]的来源是否相关,用户提供的引用内容是否准确对应解决方案。 最后,确保回答真实可靠,操作步骤准确无误,避免误导用户。可能还需要提醒用户根据具体情况选择方法,比如如果有未完成的实验性代码,stash可能是更好的选择,而如果是确定要保留的修改,则应该commit。</think>要解决Git合并时本地更改被覆盖的问题,可根据不同场景选择以下三种方法: ### 一、提交本地更改(commit) **适用场景**:当本地更改已测试通过且需要保留到版本历史中。 **操作步骤**: 1. 将改动添加到暂存区: ```bash git add . # 添加所有文件 # 或指定文件 git add file1.txt file2.py ``` 2. 提交更改并添加描述: ```bash git commit -m "完成用户登录模块优化" ``` 3. 执行合并操作: ```bash git merge origin/main ``` **优点**:保留完整的开发记录,便于后续追溯[^1]。 ### 二、暂存更改(stash) **适用场景**:需要临时保存未完成的修改(如调试代码),优先处理合并操作。 **操作步骤**: 1. 保存当前工作状态: ```bash git stash # 可选添加备注 git stash save "用户登录模块调试代码" ``` 2. 查看暂存记录列表: ```bash git stash list ``` 3. 合并远程分支: ```bash git merge origin/main ``` 4. 恢复暂存内容: ```bash git stash pop # 恢复并删除最近一次暂存 # 或指定特定暂存 git stash apply stash@{1} ``` **优点**:保持工作目录整洁,特别适合处理紧急合并任务[^2]。 ### 三、撤销本地更改(revert) **适用场景**:本地修改可丢弃(如实验性代码或错误修改)。 **操作步骤**: 1. 撤销所有未提交的修改: ```bash git checkout -- . # 全部文件 # 或指定文件 git checkout -- file1.txt ``` 2. 执行合并操作: ```bash git merge origin/main ``` **风险提示**:此操作不可逆,需确认文件无需保留。 --- ### 对比决策表 | 方法 | 保留记录 | 可恢复性 | 适用阶段 | |---------|----------|----------|------------------| | commit ||| 功能开发完成时 | | stash ||| 开发中途临时切换 | | revert ||| 放弃无效修改 | ### 扩展应用场景 - 当存在多个暂存时,可用`git stash list`查看记录,通过`git stash apply stash@{n}`精准恢复 - 合并后出现冲突时,可使用`git mergetool`可视化工具解决冲突 - 长期分支开发推荐使用`git rebase`保持提交历史线性
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值