mAP小解(浅入深出IoU)

413 阅读5分钟

最近一直在搞大模型,对之前图像算法的记忆已经开始有些许模糊了,准备开一个专题记录一下之前CV领域的核心知识点,供自己以后复习所用,时常温故而知新,可以为师矣~

mAP

mAP(mean Average Precision)是一种用于衡量目标检测模型精度的指标。它是通过计算模型在不同置信度阈值下的平均精度来评估模型性能的。

在目标检测任务中,模型通常会输出每个检测框及其对应的置信度分数。例如,在COCO数据集上的目标检测任务中,置信度分数通常是介于0.5和1之间的概率值,表示检测框内是否存在目标物体。

mAP通过将模型在不同置信度阈值下的精度取平均值来衡量模型的性能。具体来说,mAP将模型在所有置信度阈值下的精度值进行排序,并计算每个阈值下的精度平均值。然后,将所有阈值下的平均精度取平均值,作为模型的mAP得分。

通常情况下,mAP的计算方法如下:

  1. 对于每个置信度阈值i,计算模型在该阈值下的精度值precision_i。
  2. 对于所有的置信度阈值i,计算所有精度值的平均值average_precision_i。
  3. 计算所有阈值下平均精度的平均值,即为模型的mAP得分。

需要注意的是,在计算mAP得分时,通常会选择一个合适的阈值来对模型输出的置信度分数进行阈值化,以避免模型对低置信度分数的误检。常用的阈值化方法有IoU阈值和Gini系数阈值化等。

置信度阈值

置信度阈值是指在目标检测中,用于确定模型输出的检测框是否为真正的目标框的阈值。在目标检测任务中,模型通常输出每个检测框及其对应的置信度分数,而置信度分数是指模型对该检测框是否为目标的置信度。

通常情况下,置信度阈值是一个固定的阈值,例如0.5或0.6。如果模型输出的置信度分数高于该阈值,则认为该检测框是真正的目标框;否则,认为该检测框是误检框或非目标框。

置信度阈值的选择通常需要根据具体任务和数据集进行调整。如果置信度阈值过低,模型可能会将一些非目标框误判为目标框,导致检测结果不准确;如果置信度阈值过高,则可能会漏检一些真正的目标框,导致检测结果不完整。因此,在实际应用中,需要通过实验和调参等方式来确定最优的置信度阈值。

阈值化方法

IoU阈值和Gini系数阈值化是常用的目标检测中的阈值化方法。它们的主要区别在于阈值的计算方式不同。

IoU阈值是指将模型输出的每个检测框的IoU(交并比)与阈值进行比较,如果IoU大于阈值,则认为该检测框是真正的目标框;否则,认为该检测框是误检框或非目标框。IoU是指两个集合的交集与并集的比值,通常用来衡量两个集合的相似度。在目标检测中,IoU阈值通常设置为0.5或0.6。

Gini系数阈值化是指将模型输出的每个检测框的Gini系数与阈值进行比较,如果Gini系数大于阈值,则认为该检测框是真正的目标框;否则,认为该检测框是误检框或非目标框。Gini系数是指一个集合中元素的不纯度(即不纯度的比例),它通常用来衡量一个集合中的类别分布情况。在目标检测中,Gini系数阈值通常设置为0.5或0.6。

在实际应用中,IoU阈值和Gini系数阈值化都可以用于目标检测任务中的阈值化方法。通常情况下,选择哪种方法取决于具体的应用场景和数据集。如果数据集中的目标框具有明显的边界,则IoU阈值可能更适合;如果数据集中的目标框具有较大的重叠区域,则Gini系数阈值化可能更适合。

IoU

Intersection over Union 交并比 ,衡量两个框(预测&真实)的交集面积与并集面积的比值。 IoU 的计算公式为: IoU = (Intersection Area) / (Union Area) 其中交集面积是预测框和真实框重叠部分的面积,并集面积是两个框的总面积。IoU 通常被用作判断预测框是否为真正的正例或误报的阈值。高 IoU 值表示预测框与真实框匹配度高,而低 IoU 值则表示预测框与真实框匹配度低。

1-IoU作为损失函数

由于IoU是比值,对目标物体scale不敏感

于是出现 GIoU、DIoU和MIoU,都是IoU的变体,具有不同的特点和适用场景。

  1. GIoU (IoU只关注重叠区域)

在IoU的基础上引入了最小外接矩形的概念来解决IoU无法处理检测框和真实框没有重叠时loss等于0的问题。在GIoU中,每个预测框都需要和一个最小外接矩形进行匹配,如果匹配成功则认为预测框和真实框重叠。GIoU的计算方法与IoU类似,但是在计算损失时需要考虑最小外接矩形的重叠情况。

GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。

  1. DIoU (Distence,中心拉线)

引入两框中心点距离,中心点连线越短,回归效果越好

  1. CIoU

在DIoU基础上,引入长宽比(多一个惩罚项,涉及到反三角函数,会损耗算力)