目标检测是计算机视觉中的重要任务,主要目的是在图像中识别并定位特定的物体。YOLO(You Only Look Once)系列模型作为目标检测领域的代表性方法之一,凭借其高效和准确的特点,广泛应用于实际场景中。本文通过详细介绍目标检测的性能指标及其计算方法,帮助读者更好地理解和评估YOLO系列模型的表现。
一、目标检测性能指标介绍
在 目标检测
任务中,常用的性能指标主要包括 检测精度指标
和 检测速度指标
。
1. 检测精度指标
检测精度指标
主要有以下几种:
中文名称 | 英文名称 | 简称 | 意义 |
---|---|---|---|
精确率 (查准率) | Precision | Precision | 评估模型预测的准不准,在所有被预测为正样本的数据中,实际为正样本的比例。 |
召回率(查全率) | Recall | Recall | 评估模型找的全不全,在所有实际为正样本的数据中,被正确预测为正样本的比例。 |
F1 score | F1 score | F1 score | 精确率和召回率的调和平均数,用于综合评估模型的精确性和召回能力。 |
交并比 | Intersection over Union | IOU | 衡量预测框和真实框重叠程度,交集面积与并集面积的比值。 |
精确率-召回率曲线 | Precision-Recall curve | P-R curve | 通过不同阈值下的精确率和召回率来评估模型性能的曲线。 |
平均精度 | Average Precision | AP | 精确率-召回率曲线下的面积,用于衡量模型在不同阈值下的整体表现。 |
平均精度均值 | mean Average Precision | mAP | 所有类别的AP取平均值,用于衡量多类别检测模型的整体性能。 |
2. 检测速度指标
检测速度指标
主要有以下几种:
中文名称 | 英文名称 | 简称 | 意义 |
---|---|---|---|
前传耗时 | Forward Pass Time | Forward Pass Time | 模型从输入图像到输出预测结果所需的时间。 |
每秒帧数 | Frames Per Second | FPS | 模型每秒处理的图像帧数,FPS越高,表示模型速度越快。 |
浮点运算量 | Floating Point Operations | FLOPS | 模型在推理过程中所需的浮点运算次数,FLOPS越低,表示模型计算量越小,速度越快。 |
二、各性能指标的计算方法
为了说明这些指标的计算方法,我们将举一个形象的例子:
草原上有100头牛,其中60头是公牛,40头是母牛,我们要通过模型识别出所有公牛。
最终模型预测结果如下:
- 实际为公牛且被预测为公牛(TP):50头
- 实际为公牛但被预测为母牛(FN):10头
- 实际为母牛但被预测为公牛(FP):5头
- 实际为母牛且被预测为母牛(TN):35头
在这个例子的基础上,我们来讲解和计算下面的指标数据。
1. 基础数据与混淆矩阵
根据上面的实验结果数据,我们将数据转成如下表格:
实际/预测 | 公牛 (Positive) | 母牛 (Negative) |
---|---|---|
公牛(True) | TP = 50 | FN = 10 |
母牛(False) | FP = 5 | TN = 35 |
其中行为牛的实际性别,列为预测出来的结果。
不看横竖标题,只看中间的两行两列:
[ T P F N F P T N ] = [ 50 10 5 35 ] \begin{bmatrix} TP&FN\\FP&TN\end{bmatrix}=\begin{bmatrix} 50&10\\5&35\end{bmatrix} [TPFPFNTN]=[5051035]
两行两列的数据组成了一个2x2的矩阵,
[
T
P
F
N
F
P
T
N
]
\begin{bmatrix} TP&FN\\FP&TN\end{bmatrix}
[TPFPFNTN]这个矩阵就叫做 混淆矩阵
。
我们提炼出行和列的首字母缩写,可以得到四个标签,TP
、TN
、FP
、FN
,这是目标检测里最基础的概念:
TP
:被模型预测为正类的正样本TN
:被模型预测为负类的负样本FP
:被模型预测为正类的负样本FN
:被模型预测为负类的正样本
通过这四个样本数据,我们可以计算出下面各种性能指标。
2. 精确率与召回率
① 精确率 (Precision)
精确率
,又叫 查准率
,评估的是模型预测的准不准,在所有被预测为正样本(公牛)的数据中,实际为正样本的比例。
公式如下:
P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
代入数据计算:
P r e c i s i o n = 50 50 + 5 = 50 55 ≈ 0.909 Precision=\frac{50}{50+5}=\frac{50}{55}≈0.909 Precision=50+550=5550≈0.909
即 精确率
约为0.909。
② 召回率 (Recall)
召回率
,又叫 查全率
,评估的是模型找的全不全,在所有实际为正样本(公牛)的数据中,被正确预测为正样本的比例。
公式如下:
R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
代入数据计算:
R e c a l l = 50 50 + 10 = 50 60 ≈ 0.833 Recall=\frac{50}{50+10}=\frac{50}{60}≈0.833 Recall=50+1050=6050≈0.833
即 召回率
约为0.833。
3. F1 score
通常我们使用 Precision
和 Recall
两个指标来衡量模型的好坏,为了同时权衡这两个量,我们选用 F1 score
来将这两个量组合,也就是 F1 score
。
F1 score
(又称 F score
, F measure
) 是精确率和召回率的调和平均数,用于综合评估模型的精确性和召回能力。
F1 score
的计算公式如下:
F1 s c o r e = 2 1 P r e c i s i o n + 1 R e c a l l = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l score=\frac{2}{\frac{1}{Precision}+\frac{1}{Recall}}=2×\frac{Precision×Recall}{Precision+Recall} score=Precision1+Recall12=2×Precision+RecallPrecision×Recall
代入数据计算:
F1 s c o r e = 2 × 0.909 × 0.833 0.909 + 0.833 score=2×\frac{0.909×0.833}{0.909+0.833} score=2×0.909+0.8330.909×0.833 ≈ s c o r e = 2 × 0.758 1.742 score=2×\frac{0.758}{1.742} score=2×1.7420.758 ≈ 0.870
即 F1 score
为0.870。
4. IOU交并比
IOU (Intersection over Union)
是衡量预测框和真实框重叠程度的指标。
数学公式表达为: I o U ( A , B ) = A ∩ B A ∪ B IoU(A, B) =\frac{A ∩ B}{A ∪ B} IoU(A,B)=A∪BA∩B
在目标检测里,我们可以数形结合,表示为:
I O U = 预测框与真实框的交集面积 预测框与真实框的并集面积 IOU=\frac{预测框与真实框的交集面积}{预测框与真实框的并集面积} IOU=预测框与真实框的并集面积预测框与真实框的交集面积
假设某次目标检测结果如图所示:
原目标(真实框)为 Object
范围,检测到的结果(预测框)为 Result
范围,其中 Object
与 Result
重合面积为40,二者有累计10的未重合面积。由图易得,本次检测中预测框和真实框的交集面积为40,预测框和真实框的并集面积为50,
代入数据计算:
I O U = 40 50 = 0.8 IOU=\frac{40}{50}=0.8 IOU=5040=0.8
即 IOU
为0.8。
IOU
的值位于0-1之间,IOU
为1意味着预测边界框和地面真实边界框完全重叠。
通常,我们需要为 IOU
设置阈值,以确定对象检测是否有效。
假设我们将 IOU
阈值设置为 0.5,在这种情况下:
如果 IOU
>= 0.5,则将目标检测归类为 True Positive (TP)
;
如果 IOU
< 0.5,则为错误检测,并将其归类为 False Negative (FP)
;
5. P-R曲线
假设在不同阈值下得到以下 精确率
和 召回率
:
阈值 | 精确率 | 召回率 |
---|---|---|
0.5 | 0.909 | 0.833 |
0.6 | 0.920 | 0.800 |
0.7 | 0.930 | 0.750 |
0.8 | 0.940 | 0.700 |
0.9 | 0.950 | 0.650 |
1.0 | 0.960 | 0.600 |
我们根据这组数据绘制横坐标为 Recall
、纵坐标为 Precision
的折线图。
这个折线图就叫做 P-R曲线 (Precision-Recall Curve)
。
P-R曲线
是通过不同 阈值
下的 精确率
和 召回率
来评估模型性能的曲线,展示了不同 阈值
下 精确率
和 召回率
的关系。
6. AP和mAP
① AP (Average Precision)
AP
是P-R曲线下的面积,用于衡量模型在不同阈值下的整体表现。
常用的计算方式包括:
- 11点计算法 (
11-point Interpolation
):在Recall
的每个固定点(0.0, 0.1, 0.2, …, 1.0)上最大精度的平均值。 - 所有点的平均值:对所有数据点的精度进行平均。
11点计算法
已经逐步不用了,我们优先使用 所有点平均值
的计算方法。
计算方法为:
A P = ∫ 0 1 P r e c i s i o n ( R e c a l l ) d R e c a l l ≈ ∑ n ( R e c a l l n − R e c a l l n − 1 ) P r e c i s i o n n AP=\int_0^1Precision(Recall)dRecall≈\sum_n(Recall _n-Recall _{n-1})Precision_n AP=∫01Precision(Recall)dRecall≈∑n(Recalln−Recalln−1)Precisionn
代入数据计算:
A P = ( 0.833 − 0.800 ) × 0.909 + ( 0.800 − 0.750 ) × 0.920 + ( 0.750 − 0.700 ) × 0.930 + ( 0.700 − 0.650 ) × 0.940 + ( 0.650 − 0.600 ) × 0.950 + ( 0.600 − 0 ) × 0.960 AP = (0.833−0.800)×0.909+(0.800−0.750)×0.920+(0.750−0.700)×0.930+(0.700−0.650)×0.940+(0.650−0.600)×0.950+(0.600−0)×0.960 AP=(0.833−0.800)×0.909+(0.800−0.750)×0.920+(0.750−0.700)×0.930+(0.700−0.650)×0.940+(0.650−0.600)×0.950+(0.600−0)×0.960 ≈ 0.0300 + 0.0460 + 0.0465 + 0.0470 + 0.0475 + 0.5760 = 0.793 0.0300+0.0460+0.0465+0.0470+0.0475+0.5760=0.793 0.0300+0.0460+0.0465+0.0470+0.0475+0.5760=0.793
即 AP
为0.793。
② mAP (mean Average Precision)
在实际操作中,我们的目标检测效果往往会受到检测目标种类不同的影响,导致精确度有上下浮动,比如我们对牛的性别识别,受牛种类影响,同种牛之间特征相似,异种特征差异明显,故不同种类间检测精确度会有差异。
用下面三组不同种类的牛的目标检测实验数据作为示例:
类别 | AP |
---|---|
奶牛 | 0.774 |
肉牛 | 0.793 |
耗牛 | 0.758 |
水牛 | 0.808 |
这时,我们需要一个涵盖各个种类牛的整体的平均精度,这个平均精度就是 mAP
。
mAP
是对所有类别的 AP
取平均值,用于衡量多类别检测模型的整体性能。
计算公式为:
m A P = 1 n ∑ i = 1 n A P i mAP=\frac{1}{n}\sum_{i=1}^{n} AP_i mAP=n1∑i=1nAPi
代入数据计算:
m A P = 1 4 ( 0.774 + 0.793 + 0.758 + 0.808 ) mAP=\frac{1}{4}(0.774+0.793+0.758+0.808) mAP=41(0.774+0.793+0.758+0.808) ≈ 1 4 \frac{1}{4} 41 × 3.133 = 0.78325
即 mAP
约为0.783。
③ AP 和 mAP 的比较
AP
和 mAP
区别如下:
指标 | 意义 |
---|---|
AP | 衡量的是学习出来的模型在每个类别上的好坏; |
mAP | 衡量的是学出的模型在所有类别上的好坏; |
7. 检测速度指标
检测速度指标
是评估模型的重要性能指标之一,影响在实时场景中的 可用性
和 效率
。
检测速度指标
通常包含以下几种:
指标 | 详细介绍 |
---|---|
前传耗时 (Forward Pass Time) | 前传耗时 (Forward Pass Time) 是指模型从接收到输入图像到输出预测结果所需的时间。它是衡量模型处理单张图像效率的重要指标。前传耗时 越短,意味着模型在实际应用中能更快地做出预测。假设某模型处理一张图像的 前传耗时 为50毫秒,这表明模型在50毫秒内可以完成一次前向传播并输出结果。在实际应用中,较低的 前传耗时 可以确保更高的响应速度,尤其在需要实时反馈的场景中,例如自动驾驶和视频监控。 |
每秒帧数 (FPS) | 每秒帧数 (FPS) 是指模型每秒钟能够处理的图像帧数。FPS 是评估模型实时处理能力的重要指标。假设某模型的 FPS 为20帧每秒,这意味着该模型每秒钟可以处理20张图像。在实际应用中,较高的 FPS 可以确保视频流或连续图像处理的流畅性,避免延迟和卡顿现象。对于需要实时处理的任务,如监控视频分析和实时对象检测,高 FPS 至关重要。 |
浮点运算量 (FLOPS) | 浮点运算量 (FLOPS) 是指模型在推理过程中所需的浮点运算次数。FLOPS 是评估模型计算复杂度的指标之一。假设某模型的 FLOPS 为 1.5 GFLOPS(即15亿次浮点运算) ,这表示模型在每次推理过程中需要执行15亿次浮点运算。较低的FLOPS通常意味着模型更高效,适合在资源受限的设备上运行,如移动设备或嵌入式系统。在选择模型时,FLOPS 是权衡模型性能与计算资源的重要参考因素。 |
前传耗时
、每秒帧数
和 浮点运算量
是衡量检测速度的重要指标。高效的模型应在保证精度的同时,具备较低的前传耗时和 FLOPS
,以及较高的 FPS
,从而在各种实际应用场景中表现出色。
三、目标检测性能指标总结
在目标检测领域,精确率
、召回率
、F1 Score
和 交并比 (IoU)
是最常用的性能评估指标。这些指标帮助我们全面理解模型的检测能力。精确率
衡量模型预测的准确性,召回率
则评估其覆盖所有正样本的能力,F1 Score
在二者之间找到平衡,而 交并比
则具体反映预测框与真实框的重合程度。通过这些指标,我们不仅能够确定模型是否能够准确识别目标,还能评估其在不同场景下的实际应用效果。高精确率
、高召回率
和 高IoU值
的模型在实际应用中往往表现更加出色。
综合各项性能指标,目标检测模型的优劣不仅仅体现在精度和速度上,更重要的是其在实际应用中的 适用性
和 鲁棒性
。一个优秀的目标检测模型应在保证 高精确率
和 高召回率
的同时,具备较低的前传耗时和FLOPS,以及较高的FPS,从而在各种实时和复杂环境中表现优异。随着深度学习技术的不断进步,未来的目标检测模型将会更加高效和智能,不仅能够处理更大规模的数据,还能适应更多元化的应用场景,从而为智能视觉系统的发展带来更广阔的前景。