目标检测评价指标

  • 目标识别:识别出目标类别即可,分类问题
  • 目标检测:要在图中标出目标的bbox
  • 目标分割:将目标从图片中分割出来
  • 目标跟踪:在视屏中进行目标跟踪

IoU(Intersection over Union)

参考原文
IoU是目标检测算法性能mAP计算的一个非常重要的函数,它是判定当前候选框是否为目标的一个threshold,其全称为交并比(目标检测中就是当前候选框位置和ground truth框位置的交并比),它的取值直接影响了mAP评价指标,在RCNN中取值为0.3,这个数值至关重要,如果 threshold 取值为 0.5,mAP 指标直接下降 5 个点,如果取值为 0,mAP 下降 4 个点。
计算交集的直觉考虑:考虑两个边框的相对位置,按照A在B的左上、左下、右上、右下、包含、不想交六中情况来讨论
但是以上方法过于复杂,分这么多情况讨论会使程序的逻辑非常复杂,所以有必要寻求更简洁的方案
从新思考问题,其实两框交集的计算实际上就是计算两个集合的交集,化简图示如下(此图来源于其他博客):

目标检测评价指标_第1张图片

从化简结果可以看出,交集计算的核心为交集上下界的计算,在上图中的计算可符号化为:

  • 交集下界:
  • 交集上界:
  • 如果low大于high则交集为空
    将一维宽展到二维即可计算两框交集,代码如下:
# 该代码源于网络
def iou(box1, box2):
    '''
    两个框(二维)的 iou 计算
    
    注意:边框以左上为原点
    
    box:[top, left, bottom, right]
    '''
    in_h = min(box1[2], box2[2]) - max(box1[0], box2[0])
    in_w = min(box1[3], box2[3]) - max(box1[1], box2[1])
    inter = 0 if in_h<0 or in_w<0 else in_h*in_w
    union = (box1[2] - box1[0]) * (box1[3] - box1[1]) + \
            (box2[2] - box2[0]) * (box2[3] - box2[1]) - inter
    iou = inter / union
    return iou

多标签分类评价方法(mAP)

参考原文
多标签图像分类任务的评价方法一般采用的是和信息检索中类似的方法——mAP(mean average precision)。
1、实际的多标签图像分类中,我们通常不满足只通过top5个测试图片来衡量模型,而是需要知道top1到topm(m是所有的测试样本个数)对应的precision and recall。
2、当选出的图片数量n增加,recall是逐渐增大的(如1/6,2/6,...,6/6)。而随着recall增加,precision整体上呈现下降趋势
3、如果把recall当做横轴,precision当做纵轴,则可以得到precision-recall曲线
但是对于同一recall值,可能具备多个precision值,通常的做法是取其中最大的precision
4、对每个recall对应的precision求均值就得到所谓的average precision,即AP。这样就得到了对应一个类(分类器)的average precision,它表示的是该模型在某个类别上的好坏
5、如果要求模型在所有类别上的好坏,就求所有类别对应的AP的均值,即所谓的mAP。

你可能感兴趣的:(目标检测评价指标)