一:准确率(Accuracy)、错误率 (Error rate)
准确率 = 正确分类的样本数 / 总样本数
错误率 = 错误分类的样本数 / 总样本数 = 1 - 准确率
Top-1准确率:预测类别按置信度从高到低排序,取排名第一的类别作为预测结果,计算准确率
Top-5准确率:取排名前五的类别作为预测结果(只要包含真实类别,就算分类正确),计算准确率
二:混淆矩阵(Confusion Matrix)
混淆矩阵又称错误矩阵,把预测结果与真实标签按类别对应,在一个矩阵中显示出来,方便直观地评估结果。
横轴是模型预测的类别数量统计,纵轴是数据真实标签的数量统计。
对角线表示模型预测和数据标签一致的数目,所以对角线之和除以测试集总数就是准确率。对角线上数字越大越好,在可视化结果中颜色越深,说明模型在该类的预测准确率越高。
三:精确率、召回率、F指标
- 精确率(Precision)与召回率(Recall):
对于二类分类问题常用的评价指标是精确率与召回率(在信息检索领域又叫查准率与查全率)。通常以关注的类为正类,其他类为负类。二分类的混淆矩阵为:
| 预测为正类 | 预测为负类 |
正类 | TP | FN |
负类 | FP | TP |
Precision = TP/(TP+FP)
Recall = TP/(TP+FN)
在实际使用中我们的模型通常不是直接预测出类别,而是预测出属于各类别的概率(或置信度),然后通过与阈值比较来划分正负预测结果的;阈值不同,结果就不同。这时我们可以画P-R曲线。
- F指标(F-Measure, F-score):
精确率和召回率反映了分类器性能的两个方面,单一依靠某个指标并不能较为全面地评价一个分类器的性能。一般情况下,精确率越高,召回率越低;反之,召回率越高,精确率越低。为了综合考虑精确率和召回率,引入了F-score这个综合指标:
是关于召回的权重,大于1说明更看重召回的影响,小于1则更看重精度,等于1相当于两者的调和平均,通常取1。
- F1指标(F1-Measure, F1-score):
四:P-R曲线、AP、mAP
- P-R曲线:选取不同阈值时对应的精度和召回画出来
- AP(Average-Precision,平均精度):P-R曲线围起来的面积,通常来说一个越好的分类器,AP值越高。
- mAP(Mean Average Precision,平均精度均值):
所有类的AP值平均值就是mAP:
五:ROC曲线、AUC、EER
- ROC(Receiver Operating Characteristic,受试者工作特征):
指的是TPR和FPR间的关系,纵坐标为TPR, 横坐标为FPR。
1)真正例率:True Positive Rate ( TPR ) = TP / [ TP + FN] = TP/T,代表将正例分对的概率,即查全率;
2)假正例率:False Positive Rate( FPR ) = FP / [ FP + TN] = FP/F,代表将负例错分为正例的概率。
直线左下至右上代表一个完全没有效果的分类器,如果曲线在对角线左上,说明分类器有效果,在右下说明是负效果。
越靠近左上效果越好,理想的分类器对应的ROC曲线和(0,0)、(0,1)、(1,1)所在折线重合。
- AUC(Area Under Curve):
ROC曲线下的面积,越大,分类器效果越好。
- EER(Equal Error Rate):
指的是FNR=FPR的情况,因为FNR=1-TPR,所以在ROC曲线中就是曲线和(0,1)、(1,0)对角线(左上到右下)的交点。从漏检和误检的角度,FNR理解为对正样本的漏检率,FPR则是预测为正样本的误检率。EER是均衡考虑这两者时的阈值选定标准。
六:IOU、目标检测中如何判断TP,FP,FN
- IOU(Intersection Over Union):
IOU用来衡量预测框和真实框的重合程度,即两个框的交并比:
- 判断TP,FP,FN
以单张图某类别为例:
- 遍历图片中ground truth对象,提取该类别的gt objects;
- 读取我们对该类别的预测框,过滤掉置信度分数低于置信度阈值的框;
- 将剩下的预测框按置信度分数从高到低排序;
- 按置信度分数从高到低,依次把预测框与gt bbox比较,若iou大于设定的iou阈值计入TP,将此gt_bbox标记为已检测(后续的同一个GT的多余预测框都视为FP,这就是为什么要先按置信度排序),iou小于阈值的,计入FP。
FN通过该类GT数量减去TP即得。
有了TP,FP,FN,就可以计算目标检测中的AP,mAP。
- AP值计算有3种方式:
- 在VOC2010以前,只需要选取当Recall >= 0, 0.1, 0.2, ..., 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值。
- 在VOC2010及以后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值。
- COCO数据集,设定多个IOU阈值(0.5-0.95,0.05为步长),在每一个IOU阈值下都有某一类别的AP值,然后求不同IOU阈值下的AP平均,就是所求的最终的某类别的AP值。
七:速度、内存指标
- FPS(Frame Per Second,每秒帧率):
即每秒能处理图片的张数。
另外也可以使用处理一张图片所需时间来评估检测速度,时间越短,速度越快。
比较FPS或时间需要在同一硬件上进行,同一硬件的最大FLOPS(Floating Point operations per second,指每秒浮点运算的次数,可衡量硬件性能,此处区分FLOPs)相同。
- FLOPs(Floating Point Operations,浮点运算数) :
指浮点运算数,理解为计算量,可以用来衡量算法/模型的复杂度。在论文中常用GFLOPs(1 GFLOPs = 10^9 FLOPs)
FLOPs越小,表示模型所需计算量越小,运行起来时速度更快。
FLOPs计算(以下不考虑激活函数、池化的运算):
- 卷积
不考虑bias:
考虑bias:
其中,Cin为输入特征图通道数,k为过滤器尺寸,H,W,Cout为输出特征图的高,宽和通道数。
解释:输出特征图有Cout张,每张特征图上有H*W个像素点,每个像素点的值都是由过滤器与输入特征图卷积得到的。即,过滤器中Cin*k*k个点,每个点都要和输入特征图对应点作一次相乘操作(浮点操作数为Cin*k*k),然后加起来(浮点操作数为Cin*k*k-1),再加上bias,得到输出特征图上一个像素点的值。
2. 全连接
不考虑bias:
考虑bias:
其中,Nin为输入神经元个数,Nout为输出神经元个数。
解释:输出的每个神经元都是由输入的每个神经元乘以权重(浮点操作数为Nin),然后把所得的积相加(浮点操作数为Nin-1),加上一个偏差(浮点操作数为1)得到。
另外,MAC(memory access cost, 内存访问成本)也会被用来衡量模型的运行速度,一般MAC=2*FLOPs (一次加法运算和一次乘法算法)。
- 模型参数大小
常用模型的参数所占大小来衡量模型所需内存大小,一般可分为Vgg, GoogleNet, Resnet等参数量大的模型,和squeezeNet,mobilerNet,shuffleNet等参数量小的轻量级模型。
参考资料:
https://zhuanlan.zhihu.com/p/33273532