电脑基础 · 2023年4月3日

MIoU(均交并比)的计算

文章目录

  • 1 交并比(Intersection over Union,IoU)
    • 1.1 传统 IoU
    • 1.2 语义分割中的IoU
    • 1.3 语义分割中的MIoU
  • 2 MIoU 的计算
    • 2.1 MIoU 的计算
    • 2.2 MIoU 计算实例

1 交并比(Intersection over Union,IoU)

1.1 传统 IoU

MIoU(均交并比)的计算

公式:
S
A

B
=
S
A
+
S
B

S
A

B
\rm S_{A\cup B}=S_{A}+S_{B}-S_{A\cap B}
SAB=SA+SBSAB

1.2 语义分割中的IoU

MIoU(均交并比)的计算

  语义分割问题中的两个集合为:真实值(ground truth)和预测值(predicted segmentation)。这个比例可以变形为正真数(intersection)比上真正、假负、假正(并集)之和。在每个类上计算IoU,之后平均。

1.3 语义分割中的MIoU

  均交并比(Mean Intersection over Union,MIoU):语义分割的标准度量,计算所有类别交集和并集之比的平均值

2 MIoU 的计算

2.1 MIoU 的计算

  以pascal数据集为例,其包含 21个 类别, 分别对每个类别求
I
o
U
IoU
IoU
。令
k
k
k
表示类别
(
k
+
1
)
(k+1)
(k+1)
表示加上了背景类,
i
i
i
表示真实值,
j
j
j
表示预测值,
p
i
j
p_{ij}
pij
表示将
i
i
i
预测为
j
j
j
,则某一类别的
M
I
o
U
MIoU
MIoU
可按如下方式计算:

M
I
o
U
=
1
k
+
1

i
=
k
p
i
i

i
=
k
p
i
j
+

i
=
k
p
j
i

p
i
i
MIoU = \frac{1}{k+1}\sum_{i=0}^{k} \frac{p_{ii}}{\sum_{i=0}^{k}p_{ij}+\sum_{i=0}^{k}p_{ji}-p_{ii}}
MIoU=k+11i=0ki=0kpij+i=0kpjipiipii

其中,
p
i
j
p_{ij}
pij

i
i
i
预测为
j
j
j
,为假负(FN);
p
j
i
p_{ji}
pji

j
j
j
预测为
i
i
i
,为假正(FP);
p
i
i
p_{ii}
pii

i
i
i
预测为
i
i
i
,为真正(TP)。因此,可等价于

MIoU(均交并比)的计算

(正类:类别
i
i
i
, 负类:非类别
i
i
i

TP(真正): 预测正确, 预测结果 = 真实 = 正类 ;
FP(假正): 预测错误, 预测结果 = 正类

\ne
=
真实 = 负类;
FN(假负): 预测错误, 预测结果 = 负类

\ne
=
真实 = 正类;
TN(真负): 预测正确, 预测结果 = 负类 = 真实 = 负类;


M
I
o
U
=
1
k
+
1

i
=
k
T
P
F
N
+
F
P
+
T
P
MIoU = \frac{1}{k+1}\sum_{i=0}^{k} \frac{TP}{FN+FP+TP}
MIoU=k+11i=0kFN+FP+TPTP


M
I
o
U
MIoU
MIoU
:计算两圆交集(橙色部分)与两圆并集(红色+橙色+黄色)之间的比例,理想情况下两圆重合,比例为 1。

2.2 MIoU 计算实例

步骤 1:求混淆矩阵

混淆矩阵:表示预测值和真实值之间的差距的矩阵,形式如下

[
T
P




F
N




F
P




T
N




]
\left[ \begin{array} l TP(真正)& FN(假负) \\ FP(假正) & TN(真负) \end{array} \right ]
[TPFPFNTN]

MIoU(均交并比)的计算

步骤 2:计算 MIoU

混淆矩阵的每一行(FN+TP)再加上每一列(FP+TP),最后减去对角线上(TP)的值:

M
I
o
U
=
1
k
+
1

i
=
k

 
i
 



线




 
i
 



+

 
i
 





 
i
 



线



MIoU = \frac{1}{k+1}\sum_{i=0}^{k} \frac{第~i~个对角线上的值}{第~i~行的值+第~i~列的值-第~i~个对角线上的值}
MIoU=k+11i=0k i + i  i 线 i 线

计算 MIoU 例子源码

参考

  1. 语义分割代码阅读—评价指标mIoU的计算;
  2. 语义分割指标计算之miou(交并比);
  3. 混淆矩阵是什么意思?