AP、mAP多标签图像分类任务的评价方法

本文介绍了多标签图像分类任务中的评估指标mAP的计算方法,包括Precision和Recall的定义,以及如何绘制Precision-Recall曲线。此外还详细解释了AP和mAP的区别及其计算方式。

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

注1:一般场景文本检测使用的是AP,而不是mAP,因为场景文本属于单类别;
注2:AP比H-mean的优点在于,AP不需要设置任何阈值!

多标签图像分类(Multi-label Image Classification)任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean  accuracy,该任务采用的是和信息检索中类似的方法—mAP(mean Average Precision)。mAP虽然字面意思和mean  accuracy看起来差不多,但是计算方法要繁琐得多,以下是mAP的计算方法:
首先用训练好的模型得到所有测试样本的confidence  score,每一类(如car)的confidence   score保存到一个文件中(如comp1_cls_test_car.txt)。假设共有20个测试样本,每个的id,confidence  score和ground  truth  label如下:​​

接下来对confidence  score排序,得到:
                                                                                      
然后计算precision和recall,这两个标准的定义如下:

上图比较直观,圆圈内(true   positives + false  positives)是我们选出的元素,它对应于分类任务中我们取出的结果,比如对测试样本在训练好的car模型上分类,我们想得到top-5的结果,即:

在这个例子中,true   positives就是指第4和第2张图片,false   positives就是指第13,19,6张图片。方框内圆圈外的元素(false   negatives和true  negatives)是相对于方框内的元素而言,在这个例子中,是指confidence   score排在top-5之外的元素,即:

其中,false   negatives是指第9,16,7,20张图片,true   negatives是指第1,18,5,15,10,17,12,14,8,11,3张图片。
那么,这个例子中Precision=2/5=40%,意思是对于car这一类别,我们选定了5个样本,其中正确的有2个,即准确率为40%;Recall=2/6=30%,意思是在所有测试样本中,共有6个car,但是因为我们只召回了2个,所以召回率为30%。
实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。这个例子的precision-recall曲线如下:

接下来说说AP的计算,此处参考的是PASCAL  VOC  CHALLENGE的计算方法。首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。​
当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, ..., M/M),对于每个recall值r,我们可以计算出对应(r' > r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。计算方法如下:​

相应的Precision-Recall曲线(这条曲线是单调递减的)如下:​

AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。
### 平均精度 (mAP) 的定义 平均精度(mean Average Precision, mAP)是一种广泛应用于目标检测和图像检索任务中的性能度量指标。对于多模态模型而言,在涉及对象定位或分类任务中,mAP 能够综合反映模型在多个类别上的表现。 具体来说,mAP 是指所有类别 AP 值的算术平均数。而 AP 则是在给定类别下,随着召回率增加时精确率曲线下的面积[^1]。 ### 计算方法 为了计算 mAP,首先需要确定每个预测框是否为真阳性(True Positive)。这通常基于两个条件: - **交并比 (Intersection over Union, IoU)**:用于衡量预测边界框与真实边界框之间的重叠程度。只有当 IoU 大于设定阈值(如 0.5 或更高),才会被认为是有效的匹配。 - **倒角距离 (Chamfer Distance, CD)**:另一种衡量方式,尤其适用于形状不规则的目标。如果 CD 小于某个预设值,则认为该预测有效[^3]。 一旦确认了哪些预测属于 TP 后,就可以按照如下步骤来求解单个类别的 AP: 1. 对所有测试样本按置信度降序排列; 2. 遍历列表,依次更新当前累计 TP 数目以及总 GT 数目; 3. 根据上述信息逐步构建 PR 曲线; 4. 最终得到曲线下方区域即为此类目的 AP; 最后取各单独标签对应的 AP 得分之平均值得到整体系统的 mAP 表现得分。 ```python def calculate_mAP(precision_recall_curves): ap_scores = [] for pr_curve in precision_recall_curves: # Calculate area under the curve using trapezoidal rule ap_score = np.trapz(pr_curve['precision'], x=pr_curve['recall']) ap_scores.append(ap_score) return sum(ap_scores)/len(ap_scores) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值