目标检测mAP计算以及coco评价标准

这篇是我对哔哩哔哩up主 @霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享

讲一下目标检测中的一些常见的指标

在我们使用目标检测网络训练时

最后在验证集上会得到一个coco的评价列表

就像我们图中给的这一系列参数列表一样

图片[1] - 目标检测mAP计算以及coco评价标准 - MaxSSL

图片[2] - 目标检测mAP计算以及coco评价标准 - MaxSSL图片[3] - 目标检测mAP计算以及coco评价标准 - MaxSSL

我们再进一步引入两个概念

第一个叫做precision

第二叫做recall

我们的precision呢就是说在我们模型预测的所有目标当中

预测正确的比例

那么它有个名称叫做查准率

接下来再看看它的公式

它的公式就等于tp除以tp加上fp

那么仅仅通过precision这个指标

能不能够展现出我们网络的一个检测能力呢

我们来假设这样一种情况

比如说我们有一个图片

它里面有五个目标

但是我们网络只检测出了其中一个目标

图片[4] - 目标检测mAP计算以及coco评价标准 - MaxSSL

那么这里的tp是等于一的

除了检测出正确的一个目标之外呢

没有检测到其他的任何边界框

那么这个时候呢fp是等于零的

所以呢此时的precision它是等于一的

也就是百分之百

那么很明显他还漏捡了好几个目标

所以说仅通过precision这个参数是无法评判我们检测网络的一个好坏的

图片[5] - 目标检测mAP计算以及coco评价标准 - MaxSSL

所以呢我们这里有另外一个指标叫做recall

也可以叫做召回率

那么它的含义就是说在所有的真实目标当中

模型预测正确的目标比例

它有一个通俗的叫法叫做查全率

它的公式呢就等于tp除以tp加上fn

那么我们能仅仅通过record来判定一个模型的好坏吗

那么我们再举另外一个例子

同样假设我们一张图片中有五个目标

然后呢我们的网络总共预测出了个50目标

然后这个目标当中呢就包括了所有我们需要检测的那五个目标

那么对于我们的record计算公式而言呢

它就是应该等于百分之百了

因为我们的tp就是等于我们真实目标的个数

而fn它是等于零的

因为它没有漏见

所以我们recall等于一的

也就是百分之百

那么很明显这种情况也不是我们所希望看见的

所以仅通过recall也是无法评判我们模型的好坏的

图片[6] - 目标检测mAP计算以及coco评价标准 - MaxSSL

右边表格从1到7表示逐渐降低置信程度得到的结果

图片[7] - 目标检测mAP计算以及coco评价标准 - MaxSSL

同样我们可以通过这两个公式可以计算得到相应的precision和recall

那么后面就依次类推

全部计算完之后呢

我们就能得到一系列的precision和recall

那么我们就以recall为横坐标

precision为纵坐标

就能得到一个pr曲线

首先我要讲一个需要注意的点

对我们的recall也是我们的横坐标呢

我们是需要列出一些重复的信息了

就比如说当我们record等于0.57的时候

这里有三个值

此时呢我们只需要保留我们precision值最大的这个情况就可以了

然后另外两个给删掉

那么在右边那个图中呢

就对应着我们用方框框住的这个坐标

有对应的我们这里的这五个点

那么这个图中用阴影部分框柱的面积呢就是我们的AP了

那么下面呢也给出了我们这个AP的计算公式

首先在我们第一个点的位置呢

它的计算公式是等于0.14减去零

然后再乘以我们所选取的这个点

包括他这个点本身以后的所有部分中

precision最大的值

那么很明显我们第一个点的位置及其以下

我们可以看到最大值是等于一的

所以这里就是乘以一

图片[8] - 目标检测mAP计算以及coco评价标准 - MaxSSL

然后对于我们第二个点呢

同样在我们第二个点的位置及其以下中寻找precision最大的值

那么也是一点

所以呢这里它也是乘以一点

那么对于我们第三个点呢

同样去寻找包括了这个点及其以下所有情况

precision最大的值

那么同样是一点

所以我们这里依旧是乘以一点

然后第四个点同样我们寻找包括它本身及其以后的所有情况中

precision选最大的情况

那么同样还是一点

所以这里我们还是乘以一点

那么对于我们第五个点

依然寻找包括他自己之后的所有情况中

precision最大的情况

那么第五点他这里所能够找到的最大precision

那么只有0.71

那么最后得到的

就是我们对应这个目标的ap的值了

那么使用同样的方法呢

你可以计算其他类别的ap值

最后呢我们再将所有类别的ap取一个均值

就得到了我们的map

接下来是coco评价指标当中的每一条数据它的一个含义

图片[9] - 目标检测mAP计算以及coco评价标准 - MaxSSL

那么相关的其他的信息呢

大家可以自己去coco的官网进行一个了解

首先呢我们来讲一下这个averageprecision

这里一共有三个值

首先我们来说中间这个值也就是iou取0.5的时候

在我们刚刚讲的那个事例当中

其实就是以iou的阈值取0.5的时候计算的ap的一个数值

例如:

图片[10] - 目标检测mAP计算以及coco评价标准 - MaxSSL

GTID为3的两行表示预测结果,其中OB是True还是False取决于IOU是否超过0.5

那么这个数值呢也就是我们pascalvoc数据集所提供的评价指标

那么在我们coco的评价指标当中

它主要的评价指标其实就是这个AP

图片[11] - 目标检测mAP计算以及coco评价标准 - MaxSSL

也就是第一个这个值

这个ap呢他写的是iou从0.5~0.95

间隔为0.05

一共十个iou上mAP的一个均值

大家注意啊

这里虽然说的是AP

其实它就是我们刚刚所计算的map

因为这里结合上下文可以很明确的知道这里的ap就是map

所以呢这里就直接标注是ap

也就是说它取一共十个值

分别去计算每一个iou所对应的map

然后呢再将这十个map取均值就得到我们coco数据中的ap

那么这个app呢也是我们coco数据当中的一个最主要的一个

评价的一个指标

我们iou的阈值设置的越大

就要求我们目标检测的边界框

与我们的gtbox重合度越来越高

那么也就是说目标的定位越来越准

接下来呢我们再来讲下一组参数

也就是apacrossscales

图片[12] - 目标检测mAP计算以及coco评价标准 - MaxSSL

在这组参数里面呢

我们能看到有一个ap针对小面积的

ap针对中等面积的

还有ap针对大面积的

通过这么一组参数啊

其实可以了解到我们目标检测网络

它对不同尺度的目标的检测效果

比如说如果你的应用场景都是一些相对较小的目标

那么你很可能就会更加关注于apsmall的这个值

接下来我们再来看下一组参数

averagerecall

那么我们每张图片限定检测目标个数

我们就能够得到相应的一个record值

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享