图像分割分类
语义分割
把每个像素都打上标签(这个像素点是人,树,背景等)
(语义分割只区分类别,不区分类别中具体单位)
实例分割
实例分割不光要区别类别,还要区分类别中每一个个体。
怎么做
损失函数
逐像素做二分类或者多分类,这就涉及到逐像素的交叉熵(神经网络的分类任务其实就是一个交叉熵的问题)。还经常需要考虑样本均衡问题。
交叉熵损失函数公式如下:
l
o
s
s
=
−
p
o
s
_
w
e
i
g
h
∗
y
t
r
u
e
l
o
g
(
y
p
r
e
d
)
−
(
1
−
y
t
r
u
e
)
l
o
g
(
1
−
y
p
r
e
d
)
loss = -pos\_weigh * y_{true}log(y_{pred})- (1 - y_{true})log(1 - y_{pred})
loss=−pos_weigh∗ytruelog(ypred)−(1−ytrue)log(1−ypred)
其中:
p
o
s
_
w
e
i
g
h
t
=
n
u
m
_
n
e
g
n
u
m
_
p
o
s
pos\_weight= \frac{num\_neg}{num\_pos}
pos_weight=num_posnum_neg
根据前景和背景的比例,设置的一个权重值。
公式改进
在这个公式的基础上。稍微做一些改进,这部分改进并不是针对语义分割来做的,很多地方都能看到。
样本也由难易之分,就跟玩游戏一样,难度越高的BOSS奖励越高。
什么是难易之分,每个像素点都要做交叉熵,都会有一个预测结果,都会带来一个损失值,那么要不要把每一个点都相同对待呢?
不能,因为有的像素点好做,一看就是大背景,一看就是大前景,哪些点难做,轮廓比较难做,例如一个人,边里面好做,边外边好做,就边上难做。所以这些像素点也是有难易之分的,那么这里就类似于加上一个注意力机制一样,加上一个权值,将这些比较难做的像素点在损失函数中体现出来。
l o s s = − ( 1 − y t r u e ) γ ∗ y t r u e l o g ( y p r e d ) − y t r u e γ ( 1 − y t r u e ) l o g ( 1 − y p r e d ) loss = - (1 - y_{true})^{γ} * y_{true}log(y_{pred})- y_{true}^{γ} (1 - y_{true})log(1 - y_{pred}) loss=−(1−ytrue)γ∗ytruelog(ypred)−ytrueγ(1−ytrue)log(1−ypred)
通俗理解
Gamma通常设置为2,例如预测正样本概率0.95,也就是说预测正样本这件事情比较简单。
(
1
−
0.95
)
2
=
0.0025
(1 - 0.95)^2 = 0.0025
(1−0.95)2=0.0025
如果预测正样本概率0.5,
(
1
−
0.5
)
2
=
0.25
(1 - 0.5)^2 = 0.25
(1−0.5)2=0.25 (相当于样本的难易权值,也可以理解为哪一个像素点对损失的贡献大,哪一个像素点对损失的贡献小)
整合上述内容
−
α
(
1
−
y
t
r
u
e
)
γ
∗
y
t
r
u
e
l
o
g
(
y
p
r
e
d
)
−
(
1
−
α
)
y
t
r
u
e
γ
(
1
−
y
t
r
u
e
)
l
o
g
(
1
−
y
p
r
e
d
)
-α (1 - y_{true})^{γ} * y_{true}log(y_{pred})- (1-α) y_{true}^{γ} (1 - y_{true})log(1 - y_{pred})
−α(1−ytrue)γ∗ytruelog(ypred)−(1−α)ytrueγ(1−ytrue)log(1−ypred)
(再结合样本数量的权值就是Focal Loss)
α正负样本(即前景和背景)的比例,γ难易程度设置的权重
评价指标
IOU
(Intersection over Union),又称重叠度/交并比。
IoU = gt bbox、pred bbox交集的面积 / 二者并集的面积
MIOU
MIOU就是计算所有类别的平均值,一般当作分割任务评估指标。
Mean Intersection over Union(MIoU, 均交并比),为语义分割的标准度量。其计算两个几个的交集和并集之比,在语义分割问题中,这两个集合为真实值(ground truth)和预测值(predicted segmentation)。这个比例可以变形为TP(交集)比上TP、FP、FN之和(交集)。在每个类上计算IoU,然后取平均。