目标检测mAP

TP:预测为正,实际为正

FP:预测为正,实际为负

FN:预测为负,实际为正

TN:预测为负,实际为负

precision = TP / (TP + FP)

recall = TP / (TP + FN)

 

TP:该predicted bounding box与当前结果所在图像的所有gt bounding box的最大IoU大于阈值,且该gt bounding box还未被匹配。

FP:该predicted bounding box与当前结果所在图像的所有gt bounding box的最大IoU小于阈值,或者大于阈值,但该gt bounding box已经被匹配。

precision: pre = TP / (TP + FP)

recall: rec = TP / float(npos),npos就是gt bb的数目

AP:

计算AP值,如果use_07_metric=true, 则用11个点采样的方法, 将rec从0-1分成11个点, 这些点prec值求平均近似表示AP
如果use_07_metric=false, 则采用更为精确的逐点积分方法

mAP

IoU

任何算法,度量总是与数据的真实值 (ground truth) 进行比较。对于目标检测,ground truth包括图像中的目标的类别以及图像中每个目标的边界框。

假设图像的ground truth如上图所示,训练和验证数据以相同的方式进行了标注。该模型将返回大量的预测,但是在这些模型中,大多数都具有非常低的score,因此只考虑高于某个score的预测信息。通过我们的模型运行原始图像,在置信阈值score确定后,下图是目标检测算法返回的带有边框的bounding boxes。

识别正确的检测和计算精度

我们使用IoU看检测是否正确需要设定一个阈值,最常用的阈值是0.5。即IoU>0.5,则认为是真实的检测,否则认为是错误的检测。我们现在计算模型得到的每个检测框的IoU值。用计算出的IoU值与设定的IoU阈值比较,就可以计算出每个图像中每个类的正确检测次数 (A)。对于每个图像,我们都有ground truth的数据,因此也知道了该图像中给定类别的实际数目 (B) 的数量。

precision = A/B

 

### mAP 的含义与计算方法 #### 平均精确度 (Average Precision, AP) 平均精确度是用于评估目标检测模型的一个重要指标。它综合考虑了查准率(Precision)和查全率(Recall)。对于每一个类别,通过绘制 Precision-Recall 曲线来计算该类别的 AP 值。曲线下的面积即为 AP[^1]。 #### 查准率(Precision) 查准率定义为目标检测算法预测的目标中实际正确的比例。其公式如下: \[ P = \frac{TP}{TP + FP} \] 其中 \( TP \) 表示真正例数,\( FP \) 表示假正例数。 #### 查全率(Recall) 查全率表示的是所有真实目标中有多少被成功检测到的比例。其公式为: \[ R = \frac{TP}{TP + FN} \] 这里 \( FN \) 是指漏检的真实目标数量。 #### Mean Average Precision (mAP) Mean Average Precision 是多个类别上 AP 的平均值。具体来说,在多类目标检测任务中,先分别针对每一类计算 AP,再取这些 AP 的平均值得到最终的 mAP。这使得 mAP 成为了一个能够全面反映模型性能的综合性指标[^2]。 #### 计算过程概述 在 YOLO 和 PyCOCOTools 中实现了不同的 mAP 计算方式。YOLO 使用 IoU 阈值固定的方法快速估算 mAP 而 PyCOCOTools 则采用 COCO 数据集的标准,支持多种 IoU 阈值下 mAP 的计算。 ```python def calculate_map(precision_recall_curve): """ Calculate the average precision given a list of precisions and recalls. Args: precision_recall_curve: List of tuples containing precision and recall values Returns: ap: The computed average precision value """ sorted_pr = sorted(precision_recall_curve, key=lambda x: x[1]) total_area = 0 prev_r = 0 for p, r in sorted_pr: area = (r - prev_r) * p total_area += area prev_r = r return total_area ``` 上述代码片段展示了如何基于 Precision-Recall 曲线上的离散点集合来近似计算单个类别的 AP 值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值