深度学习图像处理(分类or检测)中结果的评价方法-mAP简介

深度学习中的多标签图像分类任务采用mAP作为评价标准,而非mean accuracy。mAP通过计算P-R曲线、AP及平均AP来评估模型性能。文章详细介绍了P-R曲线的绘制、AP的计算以及mAP的计算过程。

多标签图像分类(Multi-label Image Classification)任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean accuracy,该任务采用的是和信息检索中类似的方法—mAP(mean Average Precision)。mAP虽然字面意思和mean accuracy看起来差不多,但是计算方法要繁琐得多。

P-R曲线的绘制

  1. 用训练好的模型得到所有测试样本的confidence score,本例中某一类有20个测试样本。(每一类的P-R曲线、AP均单独计算)
    这里写图片描述
  2. 对该类的confidence score排序,得到:
    这里写图片描述
  3. 计算top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall,这两个标准的定义如下:
### 评估深度学习图像处理模型性能的关键指标 #### 准确率 (Precision) 准确率衡量的是预测为正类别的实例中有多少是真正的正类别。对于目标检测任务而言,当预测框与真实框之间的交并比(Intersection over Union, IOU)超过设定阈值,并且分类正确,则认为是一个真正例(TP)[^1]。 ```python def precision(tp, fp): return tp / (tp + fp) if (tp + fp) != 0 else 0 ``` #### 召回率 (Recall) 召回率反映的是所有实际为正类别的样本中被成功检出的比例。同样地,在计算过程中也需要考虑IOU以及类别匹配情况来决定哪些预测可以算作TP[^2]。 ```python def recall(tp, fn): return tp / (tp + fn) if (tp + fn) != 0 else 0 ``` #### F1分数 (F1 Score) F1分数综合考量了精确度和召回率两个方面的影响,通过调和平均数的方式得出一个平衡两者关系后的单一数值表示方法。特别适用于不平衡数据集的情况下的表现评测。 \[ \text{F1} = 2 * (\frac{\text{precision}*\text{recall}}{\text{precision}+\text{recall}})\] ```python def f1_score(precision_val, recall_val): return 2 * ((precision_val * recall_val) / (precision_val + recall_val)) \ if (precision_val + recall_val) != 0 else 0 ``` #### 平均精度均值 (mean Average Precision, mAP) mAP是在多个不同置信水平上对每个类别的AP取平均值得到的结果。它不仅关注于单个物体的定位准确性(IOU),还涉及到整个测试集中各类别之间相对重要性的加权求和过程。 #### 交并比 (Intersection Over Union, IoU) IoU用来量化两个边界框重叠程度的一个比例值,通常作为判断一次有效检测的标准之一。具体来说,就是指预测框与真实标签框相交区域面积除以其联合覆盖总面积得到的小数形式结果。 ```python def iou(box_a, box_b): # 计算交集部分坐标范围 inter_xmin = max(box_a[0], box_b[0]) inter_ymin = max(box_a[1], box_b[1]) inter_xmax = min(box_a[2], box_b[2]) inter_ymax = min(box_a[3], box_b[3]) # 如果没有交叉则返回零 if inter_xmax <= inter_xmin or inter_ymax <= inter_ymin: return 0.0 # 否则继续计算交集宽度高度 inter_width = inter_xmax - inter_xmin inter_height = inter_ymax - inter_ymin # 获取各自矩形面积大小 area_box_a = (box_a[2]-box_a[0])*(box_a[3]-box_a[1]) area_box_b = (box_b[2]-box_b[0])*(box_b[3]-box_b[1]) # 返回最终iou得分 intersection_area = inter_width*inter_height union_area = area_box_a + area_box_b - intersection_area return intersection_area / float(union_area) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值