【小知识】目标检测各类指标概念总结

共 5285字,需浏览 11分钟

 ·

2024-06-22 11:00




向AI转型的程序员都关注公众号 机器学习AI算法工程




前言


目标检测论文中出现过很多容易混淆的评价指标,比如FLOPS、FLOPs、 GFLOPS,包括最基本的AP、mAP这些定义,索性将这些基本概念搞清楚,做个总结。


一、AP(Average Precision)


1.1 TP(True Positive)、FP(False Positive)、FN(False Negative)


TP:与真实目标框GT(Ground Truth)的 IoU大于指定阈值(比如0.5)的预测框(一个GT只计算一个TP)


FP:与真实目标框GT(Ground Truth)的 IoU小于等于指定阈值(比如0.5)的预测框(多余的TP也被认为是FP)


FN: 没有TP的真实目标框GT(Ground Truth)


一个GT只会计算一个TP,一个GT即使有5个IoU大于0.5的预测框,TP也只能等于1,剩下的4个都被认为是FP。按IOU最大的作为TP ‘


如果一个预测框与多个GT的IoU都大于0.5,那么这个预测框与IoU最大的那个GT匹配,其他GT是FN





举个例子,以单张图片为例(目标检测任务中是所有的验证集图片),计算人这一类别的TP、FP、FN。首先,TP、FP、FN都是针对某一个类别来说(AP的计算也是如此),比如上图中车这个目标也是我们要检测出来的,所以车也可以计算TP、FP、FN。


将类别为人的预测框全部筛选出来(绿框表示),红色的为GT。预测框1与GT1的IoU大于0.5,故预测框1属于TP;预测框2与GT1的IoU小于0.5,故预测框2属于FP;预测框3与GT1的IoU大于0.5但已经有一个TP了,故预测框3属于FP;GT2没有TP,故属于FN。


故TP=1,FP=2,FN=1。


1.2 Precision(查准率)、Recall(召回率/查全率)


Precision= TP / (TP + FP)


Recall=TP / (TP + FN)



(TP + FP)就是所有生成的预测框数量,(TP + FN)在目标检测中就是GT的数量(因为一个GT只计算一个TP)。所以可以通俗的理解:Precision就是衡量误检程度,Recall是衡量漏检程度。


你可以让模型尽可能多地生成预测框,可以提高Recall。因为Recall只和GT和TP的数量有关。多生成预测框我每个GT都有一个TP的机会也更大,极端一点整张图片生成100000个预测框,保证每个GT都有一个TP,此时Recall为1,我的Recall仍然可以很大。


你可以让模型尽可能少地生成预测框,可以提高Precision。因为Precision只和 (TP + FP)就是所有生成的预测框数量有关。比如我只有一个TP,但是我总共只预测了2个框,我的Precision是0.5;如果我总共预测了4个框,我的Precision是0.25。


所以单一用Precision或者Recall是没有意义的,并不能实际反映出模型检测效果的好坏。


1.3 PR曲线


单一用Precision或者Recall是没有意义的,所以要综合考虑两者,也就是PR曲线:纵轴是Precision,横轴是Recall。用PR曲线下方的面积来衡量检测效果,也就是AP(Average Precision)。


AP是衡量单个类别检测效果的指标



以上图为例增加一个预测框,计算Precision和Recall,每预测一个框都会改变两者的值。


大概步骤如下:


我会依次遍历每个类别,在同一个类别下,按照置信度分数给你的pred_bbox从大到小排序,然后用一个匹配规则去确定你的pred_bbox中哪些是TP,哪些是FP,以及我的gt_bbox中哪些是FN。


为什么要按置信度排序?因为这样绘制出来的precision-recall曲线下的面积比按你直接给我的pred_bbox的顺序要大。毕竟我和你的目标是一样,你希望你的得分越高,我也希望你的得分越高,所以我就这样做了。


按照1步骤,我就可以逐个bbox计算出precision和recall,进而绘制出precision-recall曲线。


举个简单的例子,假设一共5个pred_bbox和4个gt_bbox,经过步骤1,5个pred_bbox被判定为「TP,TP,FP,TP,FP」,那么逐个bbox计算出的precision=「1/1,2/2,2/3,3/4,3/5」,recall=「1/4,2/4,2/4,3/4,3/4」。Precision和Recall组成坐标,得到逐个bbox的precision-recall曲线,我就可以计算这个曲线下的面积了,得到ap了。



可以看出随着预测框数量的增加,Precision是减少的,Recall是增加的。


将点描绘在坐标轴上即PR曲线(举例)。



但是PR曲线下围成的面积的计算方式还有很多种做法(VOC和COCO数据集计算方法不一样),有插值、平滑.


1.4 mAP(mean Average Precision)


PR曲线下方的面积就是AP(Average Precision),mAP就是所有类别的AP取平均就是mAP。比如Person的AP是0.6,Car的AP是0.8,那mAP就是(0.6+0.8)/2=0.7


AP是衡量单个类别检测效果的指标,mAP是衡量所有类别检测效果的指标


注:在COCO数据集中的AP就相当于mAP,COCO计算的AP就是所有类别的。


AP(mAP):COCO的AP是将以IoU阈值(即判断为TP的阈值)为0.5开始,以0.05递增到0.95,也就是以(0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95)为阈值共10个mAP取均值计算得来的。阈值越高,对模型精度要求也越高。


AP50:以IoU阈值为0.5判定为TP下的AP


AP75:以IoU阈值为0.75判定为TP下的AP


APs:小物体的AP


APm:中物体的AP


APL:大物体的AP





二、FLOPs、FLOPS


FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。


FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。所以FLOPs才是我们要关注的指标。


补一下FLOPs的计算过程:



这时Nvidia团队在ICLR上发表的论文中附录的内容,介绍了FLOPs的计算过程。很多大佬的计算过程都不一样,可以参考这个回答:FLOPs计算https://www.zhihu.com/question/65305385/answer/451060549


但是目前计算FLOPs还没有统一的标准,在torch中可以利用torchstat来计算复杂度。


安装使用参考github:torchstat


https://github.com/Swall0w/torchstat




三、FPS


FPS就是目标网络每秒可以处理(检测)多少帧(多少张图片),FPS简单来理解就是图像的刷新频率,也就是每秒多少帧。假设目标检测网络处理1帧(一张图片)要0.02s,此时FPS就是1/0.02=50。以基础的DETR模型为例,FPS为28,那么处理一张图片要1/28s。


四、MACs


MAC(Multiply Accumulate):积累加运算是在微处理器中的特殊运算。实现此运算操作的硬件电路单元,被称为“乘数累加器”。操作过程:例如运算a=a+bc,是将乘法的乘积结果b*c和累加器a的值相加,再存入累加器a的操作。若没有使用 MAC 指令,上述的程序可能需要二个指令,但 MAC 指令可以使用一个指令完成。而许多运算(例如卷积运算、点积运算、矩阵运算、数字滤波器运算、乃至多项式的求值运算)都可以分解为数个 MAC 指令,因此可以提高上述运算的效率。


MACs(Multiply–Accumulate Operations):乘加累积操作数,常常被人们与FLOPs概念混淆实际上1MACs包含一个乘法操作与一个加法操作,大约包含2FLOPs。通常MACs与FLOPs存在一个2倍的关系。因为MAC把乘加看成一个操作,所以用FLOPs计算的值会更大,1FLOPs=2MACs


机器学习算法AI大数据技术


 搜索公众号添加: datanlp



长按图片,识别二维码








阅读过本文的人还看了以下文章:




整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主




《大语言模型》PDF下载




动手学深度学习-(李沐)PyTorch版本




YOLOv9电动车头盔佩戴检测,详细讲解模型训练




TensorFlow 2.0深度学习案例实战




基于40万表格数据集TableBank,用MaskRCNN做表格检测




《基于深度学习的自然语言处理》中/英PDF




Deep Learning 中文版初版-周志华团队




【全套视频课】最全的目标检测算法系列讲解,通俗易懂!




《美团机器学习实践》_美团算法团队.pdf




《深度学习入门:基于Python的理论与实现》高清中文PDF+源码




《深度学习:基于Keras的Python实践》PDF和代码




特征提取与图像处理(第二版).pdf




python就业班学习视频,从入门到实战项目




2019最新《PyTorch自然语言处理》英、中文版PDF+源码




《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码




《深度学习之pytorch》pdf+附书源码




PyTorch深度学习快速实战入门《pytorch-handbook》




【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》




《Python数据分析与挖掘实战》PDF+完整源码




汽车行业完整知识图谱项目实战视频(全23课)




李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材




笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!




《神经网络与深度学习》最新2018版中英PDF+源码




将机器学习模型部署为REST API




FashionAI服装属性标签图像识别Top1-5方案分享




重要开源!CNN-RNN-CTC 实现手写汉字识别




yolo3 检测出图像中的不规则汉字




同样是机器学习算法工程师,你的面试为什么过不了?




前海征信大数据算法:风险概率预测




【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类




VGG16迁移学习,实现医学图像识别分类工程项目




特征工程(一)




特征工程(二) :文本数据的展开、过滤和分块




特征工程(三):特征缩放,从词袋到 TF-IDF




特征工程(四): 类别特征




特征工程(五): PCA 降维




特征工程(六): 非线性特征提取和模型堆叠




特征工程(七):图像特征提取和深度学习




如何利用全新的决策树集成级联结构gcForest做特征工程并打分?




Machine Learning Yearning 中文翻译稿




蚂蚁金服2018秋招-算法工程师(共四面)通过




全球AI挑战-场景分类的比赛源码(多模型融合)




斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)




python+flask搭建CNN在线识别手写中文网站




中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程






不断更新资源


深度学习、机器学习、数据分析、python


 搜索公众号添加: datayx  











浏览 98
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报