电脑基础 · 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}
SA∪B​=SA​+SB​−SA∩B​

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+11​i=0∑k​∑i=0k​pij​+∑i=0k​pji​−pii​pii​​

其中,
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+11​i=0∑k​FN+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 ]
[TP(真正)FP(假正)​FN(假负)TN(真负)​]

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+11​i=0∑k​第 i 行的值+第 i 列的值−第 i 个对角线上的值第 i 个对角线上的值​

计算 MIoU 例子源码

【参考】

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