1. 评价指标
1.1 交并比(IoU)
IOU(交并比)表示候选框与原标记框之间的重叠率,即候选框与原标记框之间交集和并集的比值。最理想状态下,交并比为1,表示模型生成的候选框与原标记框完全重合M,用于评价两个框之间的相似性。IOU计算公式:
I
O
U
=
A
∩
B
A
∪
B
IOU = \frac{A \cap B}{A \cup B}
IOU=A∪BA∩B
IOU值越大,表示模型检测性能越好,实际检测结果中的预测框与物体的真实标记框越接近。
通常情况下,会设置一个阈值,用于对检测框的判定。一般设置当IOU值大于0.5时,表示可以检测到目标物体。
import numpy as np
def compute_iou(rec1, rec2):
"""
计算预测框和真实框之间的IoU
:param rec1:预测框
:param rec2: 真实框
:return: iou值
"""
# 计算每个检测框的面积
S_rec1 = (rec1[2] - rec1[0]) * (rec1[3] - rec1[1])
S_rec2 = (rec2[2] - rec2[0]) * (rec2[3] - rec2[1])
# 找出交集的检测框的坐标点
left_line = max(rec1[1], rec2[1])
right_line = min(rec1[3], rec2[3])
top_line = max(rec1[0], rec2[0])
bottom_line = min(rec1[2], rec2[2])
# 如果存在交集框
if left_line >= right_line or top_line >= bottom_line:
return 0
else:
intersect = (right_line - left_line) * (bottom_line - top_line) # 交集面积
# 两框的面积和
sum_area = S_rec1 + S_rec2
return (intersect / (sum_area - intersect)*1.0 # 返回IOU,双精度
1.2 准确率/精确度/召回率/F1指标
混淆矩阵:对于一个二分类任务来说,又如下的混淆矩阵:
TP(True Positive): 真实为1,预测也为1
FN(False Negative): 真实为1,预测为0
FP(False Positive): 真实为0,预测为1
TN(True Negative): 真实为0,预测也为0
准确率(Accuracy):分类模型总体判断的准确率,是指所有正确分类的样本(TP+TN)占总样本的比例,计算方式:
A
c
c
=
A
c
c
u
r
a
c
y
=
T
P
+
T
N
T
P
+
T
N
+
F
P
+
F
N
Acc = Accuracy = \frac{TP+TN}{TP+TN+FP+FN}
Acc=Accuracy=TP+TN+FP+FNTP+TN
精确度(Precison),又称查准率,是指模型判断为正类且真实类别也为正类的样本数量占模型判断为正类的样本数量的比例,衡量的是一个分类器分出来的正类的确是正类的概率,计算方式:
P
=
P
r
e
c
i
s
o
n
=
T
P
T
P
+
F
P
P = Precison = \frac{TP}{TP + FP}
P=Precison=TP+FPTP
召回率(Recall),又称查全率,是指模型判为正类且真实类别也是正类的图像数量占真实类别是正类的样本数量的比例,衡量的是一个分类器能把所有的正类都找出来的能力,计算方式:
R
=
R
e
c
a
l
l
=
T
P
T
P
+
F
N
R = Recall = \frac{TP}{TP + FN}
R=Recall=TP+FNTP
F1(F1-score),是精确度和召回率二者之间的加权平均,避免出现模型A的精确度比模型B高,但是A的召回率比模型B低的情况,计算方式:
F
1
=
2
∗
P
∗
R
P
+
R
F1 = \frac{2 * P * R }{P + R}
F1=P+R2∗P∗R
1.3 AP和mAP
mAP是用来度量模型预测框类别和位置是否准确的指标。
AP值得计算:
首先介绍PR曲线,PR曲线是精确度和召回率得曲线,以precision为纵坐标,recall为横坐标,
如果模型的精度越高,召回率越高,那么模型的性能越好。也就是说PR曲线下面的面积越大,模型的性能越好。绘制的时候也是设定不同的分类阈值来获得对应的坐标,从而画出曲线。
比如阈值0.9,只有第一个样本被我判断为正例,那么我的查准率precision就是100%,但是查全率Recall就是10%。阈值0.1,所有样本都被我判断为正例,查全率是100%,查准率就是50%。最后我能得到若干对precision,recall值(P,R) : (1, 0.1),… ,(0.5,1),将这若干对画在图上,再连接起来就是这个PR曲线了。
AP,即Average Precision,称为平均准确率,是对不同召回率点上的准确率进行平均,在PR曲线图上表现为PR曲线下面的面积。AP的值越大,则说明模型的平均准确率越高。
mAP,即mean average precision,意思是平均精度均值。然而,在目标检测中,一个模型通常会检测很多种物体,那么每一类都能绘制一个PR曲线,进而计算出一个AP值。那么多个类别的AP值的平均就是mAP。mAP衡量的是学出的模型在所有类别上的好坏,越大越好
一般来说mAP针对整个数据集而言的,AP针对数据集中某一个类别而言的,而percision和recall针对单张图片某一类别的。
1.4 模型检测速度(FPS)
PS就是目标网络每秒可以处理(检测)多少帧(多少张图片),简单来理解就是图像的刷新频率。假设目标检测网络处理1帧要0.02s,此时FPS就是1/0.02=50。