STC
paper: STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation
STC的意思是simple to complex,很好的解释了本文提出的思路。
考虑到W3S中对于不同的图像
I
I
I,其对应的image-level的监督信息
z
z
z往往可能是多个类别,即一张图像中存在多个类别,这给神经网络训练初期造成困扰,所以作者的思路是先使用仅存在一个类别的图像训练网络,之后在逐渐过渡到多个类别的图像训练。同时,在只有一个类别的图像中,往往背景单一,前景突出,可以通过saliency来得到较棒的监督信息。
所以具体流程如下:
- 筛选出前景突出,只有一个类别的图像数据集(取自 Flickr.com)共40K张,使用显著性检测算法DRFI制成这40K图像的pixel-level监督信息。
- 第一个网络:Initial-DCNN,使用1中的40K图像数据和其saliency mask监督训练,至收敛。
- 在次将40K图像输入Initial-DCNN,得到预测的semantic mask,但是由于DCNN的局限性,所以可能有些图像识别出了多个类别,这显然错了(40K图像每张只含一个类),所以结合image-level label进行优化,得到refined semantic mask。
- 用这40K张simple/one-category图像和其refined semantic mask监督训练第二个网络:Enhanced-DCNN,至收敛。虽然Enhanced-DCNN训练使用的是one-category的数据,但是每个物体的appearence/scale等在one-category和multi-category中分布相同,所以Enhanced-DCNN训练好后也能对复杂的图像进行预测。
- 将complex/multi-category的10K数据(取自 VOC12)输入Enhanced-DCNN,得到预测的semantic mask,与3中同样的操作,结合image-level label优化,得到refined semantic mask。
- 用这10K张comlex/multi-category图像和其refined semantic mask训练第三个网络:Powerful-DCNN,至收敛,这样Powerful-DCNN就具备了很好的预测semantic segmentation的能力了。
I-DCNN
设图像
I
I
I经过图像显著性检测后得到的结果为
p
^
\hat{p}
p^,
p
^
i
j
\hat{p}_{i j}
p^ij表示图像在
(
i
,
j
)
(i,j)
(i,j)处的显著性值(值越大越显著)。I-DCNN的输出为
p
p
p,
p
^
i
j
\hat{p}_{i j}
p^ij表示图像在
(
i
,
j
)
(i,j)
(i,j)处的预测概率(值越大则预测属于该类的概率越大)。
由于这40K张图像都是one-category,设类别为
c
c
c,则损失函数如下:
−
1
h
×
w
∑
i
=
1
h
∑
j
=
1
w
(
p
^
i
j
c
log
(
p
i
j
c
)
+
p
^
i
j
0
log
(
p
i
j
0
)
)
-\frac{1}{h \times w} \sum_{i=1}^{h} \sum_{j=1}^{w}\left(\hat{p}_{i j}^{c} \log \left(p_{i j}^{c}\right)+\hat{p}_{i j}^{0} \log \left(p_{i j}^{0}\right)\right)
−h×w1i=1∑hj=1∑w(p^ijclog(pijc)+p^ij0log(pij0))
就是计算类别在类别
c
c
c和背景各自对应的feature map上,预测值与label(saliency)的交叉熵。(
p
^
i
j
0
=
1
−
p
^
i
j
c
\hat{p}_{i j}^{0}=1-\hat{p}_{i j}^{c}
p^ij0=1−p^ijc)
E-DCNN
训练好后的I-DCNN,再次传入40K张数据集。对于图像 I I I,I-DCNN输出了各个类别的feature map/score map/heat map,只需要考虑存在的类别 c c c和背景的map。通过 arg max \arg \max argmax得到了最终的语义分割图,用于训练E-DCNN,损失函数同样用交叉熵。 g i , j = arg max k ∈ { 0 , c } p i , j k g_{i,j}=\arg \max_{k\in \{0,c\}}p_{i,j}^k gi,j=argk∈{0,c}maxpi,jk
P-DCNN
训练好后的E-DCNN,传入complex的数据集(10K,取自VOC12)。对于图像
I
I
I,E-DCNN输出了各个类别的feature map/score map/heat map,同样的,通过
arg
max
\arg\max
argmax得到最终的语义分割图,用于训练E-DCNN,损失函数同样用交叉熵。和E-DCNN的差别就在图像是multi-category了,所以需要考虑多个前景类
Ω
\Omega
Ω:
g
i
j
=
arg
max
k
∈
Ω
p
i
j
k
g_{i j}=\arg \max _{k \in \Omega} p_{i j}^{k}
gij=argk∈Ωmaxpijk
addition
- 最后的识别结果P-DCNN的输出也经过CRF后场处理。
- 上述DCNN采用了Deeplab。
performance
Train Set | VOC12 val | VOC12 test | |
---|---|---|---|
I-DCNN | Flickr-Clean | 44.9 | - |
E-DCNN | Flickr-Clean | 46.3 | - |
P-DCNN | Flickr-Clean+VOC | 49.8 | 51.2 |
疑问
I-DCNN和E-DCNN都是使用的one-category的数据进行训练,E-DCNN使用的训练数据是由I-DCNN生成的。
从这个角度理解,E-DCNN训练收敛的上限应该只能达到I-DCNN的水平,因为E-DCNN训练标签都是由I-DCNN生成的。但是VOC上的实验准确率E-DCNN是比I-DCNN要高的,所以这说明:神经网络有一定的纠错能力?比如一个用较一般的训练数据X训练网络,网络收敛后的反而能得到refined X,拿refined X重新训练网络能够在得到renfined refined X?