• 深度学习-目标检测中的mAP计算


    谨以本文记录深度学习入门过程中学习的目标检测常见指标,如有错误还请朋友不吝指教!

    目标检测评价指标——mAP

    如上图所示,绿颜色的为GT Box,红颜色的Predict Box。如果要正确检测出图中的猫和狗,那怎么才能算是正确的检测呢?下边的这三个标准是都需要看的:
    1. GT与预测框的IoU是否大于阈值?
    2. 预测的类别是否正确?
    3. 置信度是否大于阈值?

    交并比(IoU,Intersection over Union)

    IoU的作用是评价两个矩形框之间的相似性,在目标检测中是度量两个检测框的交叠程度。计算公式如下:

    [IOU=frac{area(B_{gt}cap B_{p})}{area(B_{gt} cup B_p)} ]

    其中(B_{gt})表示GT Box,(B_p)表示Predict Box。

    查准率和查全率

    什么是TP、TN、FP、FN?

    • TP:True Positive
    • TN:True Negative
    • FP:False Positive
    • FN:False Negative

    TP、TN、FP和FN的对应解释如上所述,其中的Positive和Negative表示模型对样本预测的结果是正样本还是负样本True和False表示预测的结果和真实结果是否相同。例如:True Positive就是模型预测样本为正样本,该结果与实际结果相同,该样本实际上本来就是标签为正的样本。

    如果假设IoU阈值为0.5的话,那在目标检测中:

    • TP:表示(IoU>0.5)的检测框的数量,也就是检测正确的数量。
    • FP:表示(IoU le 0.5)的检测框数量(或者是检测到同一GT的多余的检测框的数量),属于误检一类了。
    • FN:表示没有检测到的GT数量,即漏检的数量。

    查准率(Precision)

    被预测为正样本的检测框中预测正确的占比:

    [Precision=frac{TP}{TP+FP}=frac{TP}{all detections} ]

    如上图所示,图中GT共有5只猫待检测,但实际上只检测出来了一只,而且这个检测是正确的。那这种情况下的查全率就是:

    [Precision=frac{1}{1}=100\% ]

    查全率(Recall)

    被正确检测出来的真实框占所有真实框的比例:

    [Recall=frac{TP}{TP+FN}=frac{TP}{all ground truths} ]

    同样是上边有5个待检测的GT,这次得到了50个预测框,其中5个全部预测正确,这种情况下TP=5,漏检FN=0最终的查全率为:

    [Recall=frac{5}{5+0}=100\% ]

    AP和mAP

    AP 是计算某一类 P-R 曲线下的面积,mAP 则是计算所有类别 P-R 曲线下面积的平均值。其中P是查准率Precision,R是查全率Recall。

    下面以3张图片为例,说明AP和mAP的计算过程:

    在所有的图片中(当前只有上图一张),待检测的目标的数量(num_{ob}=2),上图中的检测情况如下表所示:

    GT id Confidence OB(IoU=0.5)
    1 0.98 True
    1 0.61 False

    该表中的顺序是按Confidence从高到低排序的,对于一个GT来说,只能有一个检测框为正确的检测。

    加入第二张图片,此时待检测的目标数量(num_{ob}=3),检测情况如下表所示

    GT id Confidence OB(IoU=0.5)
    1 0.98 True
    3 0.89 True
    3 0.66 False
    1 0.61 False

    加入第三张图片,加上前两张中的待检测目标,共有 (num_{ob}=7) 个目标需要检测,检测情况如下表所示:

    GT id Confidence OB(IoU=0.5)
    1 0.98 True
    3 0.89 True
    6 0.88 True
    7 0.78 True
    3 0.66 False
    1 0.61 False
    4 0.52 True

    依次取Confidence的阈值为[0.98, 0.89, 0.88, 0.78, 0.66, 0.61, 0.52],计算对应的查准率和查全率如下表所示:

    Rank Precision Recall Confidence thread
    1 1.0 0.14 0.98
    2 1.0 0.28 0.89
    3 1.0 0.42 0.88
    4 1.0 0.57 0.78
    5 0.80 0.57 0.66
    6 0.66 0.57 0.61
    7 0.71 0.71 0.52

    以Confidence thread=0.52为例:
    此时的TP=5,误检FP=2,第一张和第三张两张图片共漏检FN=2,所以

    [Precision=frac{TP}{TP+FP}=frac{5}{5+2}=0.71 ]

    [Recall = frac{TP}{TP+FN}=frac{5}{5+2}=0.71 ]

    绘制出对应的P-R曲线图:

    计算曲线下方的面积,也就是猫这一类别的AP:

    [egin{aligned} & (0.14-0) imes 1.0+(0.28-0.14) imes1.0 + (0.42-0.28) imes 1.0+ \ & (0.57-0.42) imes1.0 + (0.71-0.57) imes 0.71=0.6694 end{aligned} ]

    对于表格中Recall相同的,只保留Precision最高的值进行计算,最终得到猫这一类的AP=0.6694,如果要计算mAP则需要计算出其他类别的AP,并取平均值。


    参考链接:
    https://www.zhihu.com/question/53405779/answer/399478988
    如果想看视频讲解的朋友可以移步这位up主的投稿,文中的例子也是来源于该视频:https://www.bilibili.com/video/BV1ez4y1X7g2/?spm_id_from=333.788.recommend_more_video.4

  • 相关阅读:
    15、TSA数据上传(https://www.ncbi.nlm.nih.gov/genbank/tsaguide/#SP)
    14、SRA数据上传
    14、批量处理文件
    .net mvc 利用分部视图局部刷新.
    观察者模式(Observer)
    内存和性能
    DOM中的事件对象(event)
    HTML事件处理程序
    惰性载入函数
    Comet之SSE(Server
  • 原文地址:https://www.cnblogs.com/sykline/p/15120002.html
Copyright © 2020-2023  润新知