深度学习中的mAP

在深度学习中,mAP是指平均精度均值(mean Average Precision) ,它是深度学习中评价模型好坏的一种指标(metric),特别是在目标检测中。

精确率和召回率的概念:

(1).精确率(Precision):预测阳性结果中实际正确的比例(TP / Total Predictions),预测正确的百分比,取值范围是0, 1

(2).召回率(Recall):实际正样本中被正确预测的比例(TP / Total Ground Truths),取值范围是0, 1。在目标检测任务中,mAP能够综合考虑模型在不同召回率下的性能,从而更全面地评估模型的检测能力。

P-R曲线就是表示召回率和精确率之间关系的曲线图:如下图所示

它们的数学定义如下:

IoU(Intersection over Union,交并比):是量化两个区域重叠程度的指标 ,取值范围0, 1。我们用它来测量预测边界与真实(ground truth)目标边界的重叠程度,如下图所示:借助IoU阈值,我们可以判断预测是真阳性、假阳性还是假阴性(True Positive, False Positive, or False Negative)。在目标检测中,预测(TP、FP或FN)的正确性是在IoU阈值的帮助下决定的。而在目标分割中,它是通过参考Ground Truth像素来决定的。Ground Truth表示已知目标。

AP(Average Precision,平均精度):计算召回率在0到1之间的平均精度值 。Average Precision is not the average of Precision。为简单起见,我们可以说它是精度率--召回率曲线(precision-recall curve)下的面积AP是按类别计算的

(1).11点插值法计算AP:11点插值法是在2007年PASCAL VOC挑战赛中引入的。其中,精确率值记录在11个等距召回率值中。以这种方式对精确率/召回率曲线进行插值的目的是减少由于样本排名(ranking of examples)的细微变化而导致的精确率/召回率曲线中的"摆动(wiggles)"的影响。实际上,评估数据集(evaluation dataset)非常巨大,当我们绘制所有预测的图表时,相邻点之间的差异将非常小。因此,11个点插值足以比较两个模型。

(2).101点插值法计算AP:MS COCO于2014年引入了101点插值AP。它是P-R曲线下AUC(Area Under the Curve)的更好近似值。

目标检测中计算AP步骤

(1).使用模型生成预测分数(置信度)

(2).将预测分数转换为类标签

(3).由TP、FP、FN计算精确率和召回率

(4).计算精度率--召回率曲线下的面积。

(5).计算AP。

mAP:在多类别的目标检测任务中,还会计算所有类别AP的平均值,即mAP。mAP = 1/n * sum(AP),n是类别数

(1).mAP50:IoU阈值为0.5时的mAP值。

(2).mAP50-95:IoU阈值从0.5到0.95(步长为0.05)范围内的mAP值,然后计算平均值。

注:以上整理内容及原图主要来自于以下博文

https://jonathan-hui.medium.com

https://learnopencv.com

GitHubhttps://github.com/fengbingchun/NN_Test

相关推荐
Tairitsu_H6 天前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
茶本无香9 天前
Arthas 实战:线上“看 Map”的四种武器
java·map·arthas·线上定位
2402_882893869 天前
封装红黑树实现map和set —— 从源码到模拟实现
c++·set·map
j7~19 天前
【C++】《C++STL 笔记:搞懂序列 / 关联容器,聊聊 set 和 map》
c++·set·map·multimap·multiset·键值对pair·序列是容器和关联式容器
这是个栗子19 天前
前端开发中的常用工具函数(十):JavaScript 数组遍历
javascript·map·遍历·filter·foreach·for·for...of
liulilittle1 个月前
无锁并发容器的设计与实现原理
开发语言·c++·set·map·并发·无锁·lock-free
lingran__1 个月前
C++ STL map 与 set 底层剖析与模拟实现万字详解|基于红黑树,复刻 SGI-STL 泛型复用架构
开发语言·c++·stl·set·map·泛型编程·sgi-stl
lingran__1 个月前
C++ STL 关联式容器万字详解:set、multiset、map、multimap|接口用法 + 易错点 + 力扣真题实战
开发语言·c++·stl·set·map·红黑树·关联式容器
CappuccinoRose2 个月前
Rust学习文档(四)
开发语言·后端·学习·算法·rust·vector·map
IOT那些事儿2 个月前
STM32几种特殊格式文件
map·elf·hex·bin·lnp·axf