打开网易新闻 查看精彩图片

比较popular的目标检测算法,如RCNN,SSD等,需要使用评价指标来衡量其算法性能。

01

目标检测问题

目标检测问题输入为单张图像;输出为图像中的若干个目标分别的①类别class及其②位置坐标bounding box

为了检验目标检测算法的性能,需要引入全面的评价指标来比较算法优劣性。

02

基本概念T,F,P,N与混淆矩阵(Confusion Matrix)

P,N,T,F概念

预测值为正例,记为P(Positive)
预测值为反例,记为N(Negative)
预测值与真实值相同,记为T(True)
预测值与真实值相反,记为F(False)

混淆矩阵

混淆矩阵又被称为错误矩阵, 在每个类别下,模型预测错误的结果数量,以及错误预测 的类别和正确预测的数量都在一个矩阵下面显示出来,方便直观的评估模型分类的结果。

混淆矩阵中的横轴是模型预测的类别数量统计,纵轴是数据真实标签的数量统计。对角线,表示模型预测和数据标签一致的数目,所以对角线之和除以测试集总数就是准确率。对角线上数字越大越好,在可视化结果中颜色越深,说明模型在该类的预测准确率越高。如果按行来看,每行不在对角线位置的就是错误预测的类别。总的来说,我们希望对角线越高越好,非对角线越低越好,可视化对角线时可以归一化处理。

打开网易新闻 查看精彩图片

混淆矩阵(Confusion Matrix)

打开网易新闻 查看精彩图片

03

比率类指标:Accuracy + Precision + Recall + TPR + FPR + F指标 + Error rate

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

04

曲线类指标:PR曲线(AP值+mAP值) + ROC曲线(AUC值+ EER值)

由上节的一些比率类指标可以得到一些曲线,由曲线走势及其面积可以描述算法性能。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

PR曲线和ROC曲线

05

图像类指标:IoU(Intersection over Union)和NMS(Non-Maximum Suppression)

IoU(Intersection over Union)交并比

IoU这一值,可以理解为系统预测出来的框与原来图片中标记的框的重合程度。 计算方法即检测结果Detection Result与 Ground Truth 的交集比上它们的并集,即为检测的 准确率。 IoU正是表达这种bounding box和ground truth的差异的指标,即用来衡量预测的物体框和真实框的重合程度,即两个框的交并比,评价一个算法的时候,一种常见的方法是先设置一个IOU的阈值,只要算法找到的IOU大于这个阈值,就是一个有效的检测,把记过拿出来计算mAP作为最终的评价指标。 一般可以设置当IoU的值大于0.5的时候,则可认为检测到目标物体。

打开网易新闻 查看精彩图片

NMS(Non-Maximum Suppression)

非极大值抑制

非极大值抑制虽然一般不作评价指标,但是也是目标检测中一个很重要的步骤。 对于目标检测问题,为了提高召回率,在模型计算中间过程会生成许多候选框(bounding box),使用NMS从堆叠的边框中挑出最好的一个。

  • 输入:图像经过算法产生的某个类的所有候选框 (每个候选框 = 5维数组:框的坐标:X_max,X_min,Y_max,Y_min,对应分类下的置信度:confidence score)+ IoU阈值:th

  • 输出:图像某个类筛选后的若干个候选框(为输入边框的子集,也是5维数组)

  • 步骤:对每一类目标都进行如下步骤,如果是多目标问题,Non-Maximum Suppression一次处理一个类别,如果有N个类别,Non-Maximum Suppression就需要执行N次。

  • 第一步:

    • 对所有符合置信度阈值的bounding box根据置信度从大到小排序,

    • 得到当前集合CurrentSet:所有符合的bounding box

    • 得到当前集合CurrentSet内置信度最高的boundingbox:MaxScoreBB;

    • 设置一个集合MaxSet

  • 第二步:

    • 更新MaxSet:MaxScoreBB从CurrentSet移入MaxSet;

    • 更新CurrentSet:对所有CurrentSet中的boundingbox与MaxScoreBB求IoU,从CurrentSet中删掉IoU>th的boundingbox

    • 判断:

      • 如果CurrentSet为空,停止;

      • 如果CurrentSet不为空,更新MaxScoreBB:得到当前集合CurrentSet内置信度最高的boundingbox:MaxScoreBB;重复第二步

  • 第三步:

    • 输出MaxSet

举例:
对于dog class,得到若干个bounding box,
其中置信度>0.3的有bb1,bb98,bb23,bb41,bb20五个; 置信度分别为0.4,0.5,0.7,0.6,0.8
第一步:
- 对符合bounding box根据置信度从大到小排序: bb20(0.8)>bb23(0.7)>bb41(0.6)>bb98(0.5)>bb1(0.4)
- 得到当前集合CurrentSet:[ bb20, bb23, bb41, bb98, bb1]
- 得到当前集合CurrentSet内置信度最高的boundingbox:MaxScoreBB:bb20(0.8)
- 设置一个集合MaxSet: []
第二步:
- 更新MaxSet:MaxScoreBB从CurrentSet移入MaxSet:[bb20]; CurrentSet [bb23, bb41, bb98, bb1]
- 更新CurrentSet:
IoU(bb23,bb20)>th 从CurrentSet删掉
IoU(bb41,bb20)IoU(bb98,bb20)IoU(bb1,bb20)>th 从CurrentSet删掉
CurrentSet:[bb41, bb98]
- 判断CurrentSet不为空,重复第二步
重复第二步:
- 更新MaxSet:MaxScoreBB从CurrentSet移入MaxSet:[bb20,bb41]; CurrentSet [bb98]
- 更新CurrentSet:
IoU(bb41,bb98)>th 从CurrentSet删掉
CurrentSet:[]
- 判断CurrentSet为空,停止
第三步:
输出MaxSet:[bb20,bb41]

打开网易新闻 查看精彩图片

06

速度类指标:fps和FLOPs

不同的目标检测技术往往会有不同的mAP和检测速度,目标检测技术的很多实际应用在准确度和速度上都有很高的要求,如果不计速度性能指标,只注重准确度表现的突破,但其代价是更高的计算复杂度和更多内存需求,对于全面行业部署而言,可扩展性仍是一个悬而未决的问题。

fps:检测器每秒能处理图片的张数

打开网易新闻 查看精彩图片

评价模型性能:同时使用mAP指标和fps指标

FLOPs检测器处理每张图片所需要

的浮点操作数

FLOPs:floating point operations 指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。不同网络,处理每张图片所需的FLOPs(浮点操作数)是不同的,所以同一硬件处理相同图片所需的FLOPs越小,相同时间内,就能处理更多的图片,速度也就越快,处理每张图片所需的FLOPs与许多因素有关,比如你的网络层数,参数量,选用的激活函数等等,这里仅谈一下网络的参数量对其的影响,一般来说参数量越低的网络,FLOPs会越小,保存模型所需的内存小,对硬件内存要求比较低,因此比较对嵌入式端较友好。【计算方法:阿柴本柴:CNN 模型所需的计算力flops是什么?怎么计算?】

区别于FLOPS (floating point operations per second):意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。同一硬件,它的最大FLOPS(每秒运算浮点数代表着硬件性能)是相同的。

来源:知乎

作者:计算机小学生

深延科技|

打开网易新闻 查看精彩图片

深延科技成立于2018年1月,中关村高新技术企业,是拥有全球领先人工智能技术的企业AI服务专家。以计算机视觉、自然语言处理和数据挖掘核心技术为基础,公司推出四款平台产品——深延智能数据标注平台、深延AI开发平台、深延自动化机器学习平台、深延AI开放平台,为企业提供数据处理、模型构建和训练、隐私计算、行业算法和解决方案等一站式AI平台服务。