近期有朋友问到目标检测评价指标的问题,确实在刚入门目标检测算法中,会遇到这些问题。在这进行整理一下目标检测相关理论常识。会持续进行更新,欢迎大家关注。也欢迎留言,需要我补充的知识点。
一、经典目标检测算法
机器学习知识经验分享之三:基于卷积神经网络的经典目标检测算法
当前发展较为好的属于YOLO系列目标检测算法,可以看本人的专栏介绍。
二、目标检测算法评价指标
根据不同的评价角度,根据个人的理解可以将评价指标分为三类:
- 评价检测精度如何。一般可以用准确度(Accuracy),精度(Precision),召回率(Recall Rate), PR 曲线,AP,mAP等。其中最重要的指标就是mAP@0.5这个指标。大部分论文都用这个评价指标。对于初学者来说最先需要了解这个指标,后面将重点介绍这个指标是什么含义。
- 评价模型运行的速度如何。比如 fps,一秒处理几张图。严格说某些场合也会很在意模型的大小,这也是一个研究方向,比如 squeeze net, mobile net, shuffle net 等。所以除了上面三个维度,模型的大小也可以是一个评价维度。
- 评价模型大小如何。比如参数量、网络层数、权值大小等,这个有利于进一步的落地部署。
1.评价精度指标
准确度定义:
精度定义
召回率
AP
mAP
IoU
2.评价速度指标
以下为百度百科对FPS的定义:
FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧。FPS也可以理解为我们常说的“刷新率(单位为Hz)”,例如我们常在游戏里说的“FPS值”。我们在装机选购显卡和显示器的时候,都会注意到“刷新率”。一般我们设置缺省刷新率都在75Hz(即75帧/秒)以上。例如:75Hz的刷新率刷也就是指屏幕一秒内只扫描75次,即75帧/秒。而当刷新率太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影响。电影以每秒24张画面的速度播放,也就是一秒钟内在屏幕上连续投射出24张静止画面。有关动画播放速度的单位是fps,其中的f就是英文单词Frame(画面、帧),p就是Per(每),s就是Second(秒)。用中文表达就是多少帧每秒,或每秒多少帧。电影是24fps,通常简称为24帧。
如何计算:就是用模型检测单张图片所用的时间,换算成秒后,求倒数即为FPS的数值。
可通过评估程序val.py或者test.py获取单张图片检测时间,如上图所示。 以上检测单张图片的时间为0.2ms+1.7ms+1ms=2.9ms,所以FPS=1000/2.9=345
3.评价模型大小指标
可通过评估程序val.py或者test.py得知训练得到模型的参数量以及复杂度等,如下所示。