深度学习中的mAP

      在深度学习中,mAP是指平均精度均值(mean Average Precision),它是深度学习中评价模型好坏的一种指标(metric),特别是在目标检测中。

      精确率和召回率的概念:

      (1).精确率(Precision):预测阳性结果中实际正确的比例(TP / Total Predictions),预测正确的百分比,取值范围是[0, 1]。

      (2).召回率(Recall):实际正样本中被正确预测的比例(TP / Total Ground Truths),取值范围是[0, 1]。在目标检测任务中,mAP能够综合考虑模型在不同召回率下的性能,从而更全面地评估模型的检测能力。

      P-R曲线就是表示召回率和精确率之间关系的曲线图:如下图所示

      它们的数学定义如下:

      IoU(Intersection over Union,交并比):是量化两个区域重叠程度的指标,取值范围[0, 1]。我们用它来测量预测边界与真实(ground truth)目标边界的重叠程度,如下图所示:借助IoU阈值,我们可以判断预测是真阳性、假阳性还是假阴性(True Positive, False Positive, or False Negative)。在目标检测中,预测(TP、FP或FN)的正确性是在IoU阈值的帮助下决定的。而在目标分割中,它是通过参考Ground Truth像素来决定的。Ground Truth表示已知目标。

      AP(Average Precision,平均精度):计算召回率在0到1之间的平均精度值。Average Precision is not the average of Precision。为简单起见,我们可以说它是精度率--召回率曲线(precision-recall curve)下的面积AP是按类别计算的

      (1).11点插值法计算AP:11点插值法是在2007年PASCAL VOC挑战赛中引入的。其中,精确率值记录在11个等距召回率值中。以这种方式对精确率/召回率曲线进行插值的目的是减少由于样本排名(ranking of examples)的细微变化而导致的精确率/召回率曲线中的"摆动(wiggles)"的影响。实际上,评估数据集(evaluation dataset)非常巨大,当我们绘制所有预测的图表时,相邻点之间的差异将非常小。因此,11个点插值足以比较两个模型。

      (2).101点插值法计算AP:MS COCO于2014年引入了101点插值AP。它是P-R曲线下AUC(Area Under the Curve)的更好近似值。

      目标检测中计算AP步骤

      (1).使用模型生成预测分数(置信度)

      (2).将预测分数转换为类标签

      (3).由TP、FP、FN计算精确率和召回率

      (4).计算精度率--召回率曲线下的面积。

      (5).计算AP。

      mAP:在多类别的目标检测任务中,还会计算所有类别AP的平均值,即mAP。mAP = 1/n * sum(AP),n是类别数

      (1).mAP50:IoU阈值为0.5时的mAP值。

      (2).mAP50-95:IoU阈值从0.5到0.95(步长为0.05)范围内的mAP值,然后计算平均值。

      注:以上整理内容及原图主要来自于以下博文

      https://jonathan-hui.medium.com

      https://learnopencv.com

      GitHubhttps://github.com/fengbingchun/NN_Test

### mAP公式及其意义 mAP(mean Average Precision)是一种广泛应用于目标检测任务中的评价指标,用于衡量模型的整体性能。其核心在于综合考虑查准率(Precision)和查全率(Recall),并通过计算多个类别上的平均精度来得出最终的结果。 #### 1. 基本概念 查准率(Precision)定义为预测为正类的样本中有多少比例确实是正类: \[ \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} \] 其中 TP 是真正例数,FP 是假正例数[^2]。 查全率(Recall)则表示实际为正类的样本中有多少被成功识别出来了: \[ \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} \] 其中 FN 表示漏检的正类数量[^3]。 #### 2. AP 的计算方式 对于单个类别而言,Average Precision (AP) 可以通过绘制 Precision-Recall 曲线并计算曲线下面积得到。具体来说: 给定一组按置信度排序的预测框,依次计算不同阈值下的 Precision 和 Recall 值,并将其绘制成曲线。随后采用梯形积分的方式近似求解该区域面积: \[ \text{AP} = \sum_{i=1}^{n-1}\left(r_{i+1} - r_i\right)\cdot P_{inter}(r_i+1) \] 这里 \(r_1, r_2,\dots,r_n\) 对应的是按照升序排列的不同召回率点;\(P_{inter}(r_i+1)\) 则代表对应区间的插值精度。 #### 3. mAP 的定义 当面对多分类问题时,则需分别针对每一类单独计算各自的 AP 后再取均值作为整体表现评分即所谓的 mean Average Precision(mAP),表达如下所示: \[ \text{mAP}=\frac {1}{N_c }\sum _c ^{} {\text{AP}_c } \] 此处 \(N_c\) 表明总共有 C 种不同的物体种类数目[^1]。 #### 4. 实际应用案例分析 以下是基于 Python 编写的简单实现版本展示如何手动完成上述过程的一部分逻辑操作: ```python def compute_ap(recalls, precisions): """Compute the average precision from lists of recalls and precisions.""" # Append sentinel values at both ends. recalls = np.concatenate(([0.], recalls, [1.])) precisions = np.concatenate(([0.], precisions, [0.])) # Ensure precision is non-increasing by taking maximum per recall value. for i in range(len(precisions)-2,-1,-1): precisions[i]=max(precisions[i],precisions[i+1]) # Calculate area under PR curve using trapezoidal rule. ap=np.sum((recalls[1:]-recalls[:-1])*(precisions[1:]+precisions[:-1])/2.) return ap # Example usage with dummy data points representing different thresholds' results. example_recall=[0., 0.1, 0.2, ... ,1.]; example_precision=[...]; ap_result=compute_ap(example_recall,example_precision); print(f"The computed AP result equals to:{ap_result}") ``` 此函数接收两个列表参数 `recalls` 和 `precisions` 来模拟真实场景下产生的数据序列进而估算出相应的 AP 数值大小。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值