评价指标
本文最后更新于 2026年11月10日 晚上
评估指标总结导航
- 混淆矩阵
- precision(精确率)
- recall(召回率)
- IoU(交并比)
- MIoU(平均交并比)
- FWIoU(频率加权交并比)
- pixel acc(PA,像素精度)
- MPA(平均像素精度)
- F1-score
- Kappa 系数
- SeK(分离 Kappa 系数)
- Overall Acc(OA,总体精度)
- producer’s acc(生产者精度)
- user’s acc(UA,用户精度)
- Hedllen acc(HA)
- Short acc(SA)
- 漏分误差(omission error)
- 错分误差(commission error)
混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用 $n$ 行 $n$ 列的矩阵形式表示。每一列代表预测类别(列总和为预测为该类的样本数),每一行代表真实类别(行总和为该类的真实样本数)。对角线为预测正确的样本。以下表为例:
| 类1 | 类2 | 类3 | |
|---|---|---|---|
| 类1 | 43 | 5 | 2 |
| 类2 | 4 | 45 | 1 |
| 类3 | 0 | 1 | 49 |
| 列总和 | 47 | 51 | 52 |
直观展示了模型预测结果与真实标签之间的对应关系。通过它能一眼看出模型在哪里“混淆”了(即把哪个类错判成了哪个类)。主对角线(左上到右下)上的数值越大,说明模型分类越准确;非对角线上的数值越大,说明混淆越严重。
- 类1:$43/47=0.9149$
- 类2:$45/51=0.8824$
- 类3:$49/52=0.9423$
$$
\begin{aligned}
mean-precision
&= (0.9149+0.8824+0.9423)/3 \\
&= \textbf{0.9132}
\end{aligned}
$$
也叫查准率。表示模型预测为某一类别的所有样本中,真正属于该类别的比例。衡量的是模型预测得“准不准”(不冤枉好人)。在变化检测中,意味着模型标出的变化区域里,有多少是真正发生变化的(避免误检)。
- 类1:$43/50=0.86$
- 类2:$45/50=0.90$
- 类3:$49/50=0.98$
- mean-recall = $(0.86+0.90+0.98)/3 = \textbf{0.9133}$
也叫查全率。表示所有真实的某一类别样本中,被模型正确预测出来的比例。衡量的是模型找得“全不全”(不漏掉坏人)。在变化检测中,意味着实际发生变化的区域里,模型成功找出了多少,有没有漏检。
IoU(交并比):对角线 /(对角线+列总和-对角线+行总和-对角线),即 $TP/(TP+FP+FN)$
类1:$43/(43+4+7)=43/54=0.7963$
($FP=4+0=4$,$FN=5+2=7$)
类2:$45/(45+5+6)=45/56=0.8036$
($FP=5+1=6$,$FN=4+1=5$)
类3:$49/(49+3+1)=49/53=0.9245$
($FP=2+1=3$,$FN=0+1=1$)
语义分割中最核心的指标。计算的是预测区域与真实区域的交集除以它们的并集。IoU 越高,说明预测的掩码与真实情况的吻合度越好。$1$ 代表完美重合,$0$ 代表毫无重合。它同时兼顾了误检和漏检的情况。
$$
\begin{aligned}
MIoU &= (iou类1+iou类2+iou类3)/3 \\
&= (0.7963+0.8036+0.9245)/3 \\
&= \textbf{0.8415}
\end{aligned}
$$
计算所有类别 IoU 的平均值。它是多类别分割任务中最常用的标准指标,能综合反映模型在各类别上的平均表现,避免了单一类别极端值对整体评估的影响。
权重为各类真实样本频率(行总和/总数):
$$
\begin{aligned}
FWIoU &= (50/150)\times0.7963 \\
&+ (50/150)\times0.8036 \\
&+ (50/150)\times0.9245\\\\
&=\textbf{0.8415}
\end{aligned}
$$
(本例各类频率相等,故与 MIoU 相同;只有类别不平衡时二者才不同)
根据每个类别的真实像素频率(占比)对 IoU 进行加权平均。类别像素越多,权重越大。它更符合“按面积算正确率”的直觉,在类别严重不平衡(如背景极大)的情况下,比 MIoU 更能反映整体像素级的准确度。
$$
\begin{aligned}
PA &= (43+45+49)/150
\\&= 137/150
\\&= \textbf{0.9133}
\end{aligned}
$$
最简单的指标,即预测正确的像素总数占总像素数的比例。但在类别极度不平衡时(比如 $95%$ 都是未变化背景),即使模型把所有像素都预测为背景,PA 也会很高,因此存在“虚高”问题。
$$
\begin{aligned}
MPA &= (43/50+45/50+49/50)/3 \\&= \textbf{0.9133}
\end{aligned}
$$
各类别 Recall(召回率)的平均值。它平等对待每个类别,不管该类别的像素多还是少,能在一定程度上缓解类别不平衡带来的评估偏差。
F1-score(用 mean-P 与 mean-R 计算)
$$
\begin{aligned}
F1 &= 2\times precision\times recall/(precision+recall) \\
&= 2\times0.9132\times0.9133/(0.9132+0.9133) \\
&= \textbf{0.9132}
\end{aligned}
$$
Precision 和 Recall 的调和平均数。因为 Precision 和 Recall 经常是此消彼长的(提高查准率往往会降低查全率),F1-score 将两者综合起来,用以衡量模型的整体综合性能。F1 越高,说明模型的 P 和 R 达到了较好的平衡。
po = PA = $(43+45+49)/150 = 0.9133$
$$
\begin{aligned}
pe &= (47\times50+51\times50+52\times50)/(150\times150)\\
&= (2350+2550+2600)/22500 \\
&= \textbf{0.3333}
\end{aligned}
$$
$$
\begin{aligned}
kappa &= (po-pe)/(1-pe) \\
&= (0.9133-0.3333)/(1-0.3333) \\
&= 0.58/0.6667 \\
&= \textbf{0.8700}
\end{aligned}
$$
用于一致性检验。它不仅考虑了模型的预测准确率,还扣除了随机猜测带来的准确率(即“碰巧猜对”的概率)。Kappa 值在 $0 \sim 1$ 之间,通常 $>0.8$ 认为一致性极好,能有效避免类别不平衡时的精度虚高。
SeK(Separated Kappa coefficient,分离 Kappa 系数)
假设上表数据已剥离了“未变化”类(即纯变化区域的混淆矩阵):
$$
po = (43+45+49)/150 = \textbf{0.9133}
$$
$$
\begin{aligned}
pe &= (47\times50+51\times50+52\times50)/(150\times150) \\
&= 7500/22500 \\
&= \textbf{0.3333}
\end{aligned}
$$
$$
\begin{aligned}
SeK &= (po-pe)/(1-pe) \\
&= (0.9133-0.3333)/(1-0.3333) \\
&= 0.58/0.6667 \\
&= \textbf{0.8700}
\end{aligned}
$$
专门为语义变化检测(SCD)设计的改进型 Kappa 指标。在计算前,先将海量的“未变化(non-change)”像素从混淆矩阵中直接剥离(剔除),仅保留真正发生变化的像素来计算 Kappa。它解决了传统指标在 SCD 任务中因背景过大导致的“虚高”问题,专门衡量模型在变化区域内区分不同语义转换类别的能力。
- OA = po = 对角线总和/总数 = $\textbf{0.9133}$
同像素精度(PA),即所有对角线元素之和除以总样本数。表示模型对整体样本的预测准确率。同样在类别不平衡时存在虚高风险。
- PA = recall = $\textbf{0.9133}$ (从数据生产者角度:真实类别被正确分出的比例,$= 对角线/行总和$)
等同于该类的召回率(Recall)。从“数据生产者”或“地图制作者”的角度看,他们关心的是:我实际在图上画的这一类(如建筑物),模型在最终的图上有没有全标出来?漏画了多少?(反映漏检情况)
- UA = precision = $\textbf{0.9132}$
(从地图用户角度:被判为某类的样本中真正正确的比例,$= 对角线/列总和$)
等同于该类的精确率(Precision)。从“地图使用者”的角度看,他们关心的是:图上标为某一类(如建筑物)的地方,在真实世界里是不是真的是这一类?错标了多少?(反映误检情况)
- HA = F1-score = $\textbf{0.9132}$
等同于 F1-score(调和平均数),用于综合评价某一类别的预测质量,平衡了生产者精度(查全)和用户精度(查准)。
Short acc(SA)
$$
\begin{aligned}
SA &= PA\times UA/(PA+UA-PA\times UA) \\
&= 0.9133\times0.9132/(0.9133+0.9132-0.9133\times0.9132) \\
&= 0.8341/0.9925 \\
&\approx \textbf{0.8404}
\end{aligned}
$$
结合了 PA(召回率)和 UA(精确率)的一个综合指标,用来平衡两种误差,常用于遥感图像分类评估,是对模型局部表现的一种稳健评估。
- 漏分误差 $= 1 - 生产者精度 = 1 - 0.9133 = \textbf{0.0867}$ (该类真实样本被漏掉分错的比例)
表示真实存在的某类样本中,被模型遗漏(没有预测出来)的比例。代表 “漏检”(本应该圈出来的,但没圈出来)。
- 错分误差 $= 1 - 用户精度 = 1 - 0.9132 = \textbf{0.0868}$ (被判为该类的样本中分错的比例)
表示模型预测为某类的样本中,实际上是其他类别的比例。代表 “误检” 或“错报”(本来不是这个类,却被圈成了这个类)。