MIL+seg
paper: From Image-level to Pixel-level Labeling with Convolutional Networks
这是15年CVPR的文章,个人感觉架构和CAM有异曲同工之处。
与EM-adapt一样都是基于DCNN解决W3S问题。同样输入图像经过DCNN得到了
L
L
L张(原图12倍下采样)的特征图。由于我们的label
z
z
z是image-level,可以视作一个向量,对应存在
x
x
x的类别,其值为1,不存在的类别,其值为
0
0
0。
From freature maps to vector
由于DCNN输出的是特征图,所以要想办法将一张图映射到一个点,以方便与 z z z向量计算loss。常用的将feature map映射为点的做法可以是全局平均池化或者全局极大池化。但是都存在问题:
- 平均池化对于feature map各个位置的值都赋予相同的权重,即也考虑了那些不属于该类别的点,这将引入噪声。
- 极大池化只取feature map最大值的点作为输出,这将导致feature map倾向于在该类别最具辨识度处的点输出较大值。(实验表明极大池化不好训练,因为一开始各个点的值都很接近)
为了解决平衡极大池化的过分局部考虑以及平均池化的过多噪声,作者提出了LSE(Log-Sum-Exp)算法以参数化这一映射。对于第
k
k
k张
h
∗
w
h*w
h∗w大小的feature map,我们将其映射至点
s
k
s^k
sk,参数
r
r
r,
s
i
,
j
k
s_{i,j}^k
si,jk表示该feature map在位置
(
i
,
j
)
(i,j)
(i,j)上的值。
s
k
=
1
r
log
[
1
h
∗
w
∑
i
,
j
e
x
p
(
r
s
i
,
j
k
)
]
s^k=\frac{1}{r}\log[\frac {1}{h*w}\sum_{i,j}exp(rs_{i,j}^k)]
sk=r1log[h∗w1i,j∑exp(rsi,jk)]
{
r
→
0
+
s
k
→
1
r
log
[
1
h
∗
w
∑
i
,
j
e
r
s
i
,
j
k
]
r
→
∞
s
k
→
1
r
log
[
1
h
∗
w
e
r
max
i
,
j
(
s
i
,
j
k
)
]
\begin{cases}r\to 0^+ & s^k\to \frac{1}{r}\log [\frac{1}{h*w}\sum_{i,j}e^rs_{i,j}^k ]\\ r\to \infty & s^k\to \frac{1}{r}\log[\frac{1}{h*w}e^r\max_{i,j}(s_{i,j}^k)]\end{cases}
{r→0+r→∞sk→r1log[h∗w1∑i,jersi,jk]sk→r1log[h∗w1ermaxi,j(si,jk)]
所以可以通过调整
r
r
r的大小以调整映射考虑局部和整体之间平衡。之后就是和分类模型一样的训练了。
ILP(Image-Level Prior)
训练好后得到了
L
L
L张feature maps以及分别LSE后得到的一个
L
L
L维向量。对于这个向量,我们可以理解为是对输入图像
x
x
x是否存在类别的概率。比如如果LSE后的
v
e
c
t
o
r
[
1
]
=
0.7
vector[1]=0.7
vector[1]=0.7,而
c
l
a
s
s
[
1
]
class[1]
class[1]对应的是猫,则意味着原图中存在猫的概率为
0.7
0.7
0.7。
那么这个判定结果(image-level)是有助于我们将
L
L
L张feature maps合成最终输出的。常见的合成方法是直接argmax,即对应各个位置
(
i
,
j
)
(i,j)
(i,j),将最大值所在的feature map对应的类别作为该点的判定结果。有了ILP,我们就可以先将每张feature map上每个点
p
i
,
j
(
k
∣
I
)
p_{i,j(k|I)}
pi,j(k∣I)乘上该类别的判别概率
p
(
k
∣
I
)
p(k|I)
p(k∣I),得到优化后的feature map,之后在argmax操作得到输出。
baseline w/o ILP | baseline w/ ILP |
---|---|
y ^ i , j ( k ) = p i , j ( k ∣ I ) \hat y _{i,j}(k)=p_{i,j}(k\vert I) y^i,j(k)=pi,j(k∣I) | y ^ i , j ( k ) = p i , j ( k ∣ I ) ∗ p ( k ∣ I ) \hat y _{i,j}(k)=p_{i,j}(k\vert I)*p(k\vert I) y^i,j(k)=pi,j(k∣I)∗p(k∣I) |
之后如果 y ^ i , j = arg max y ^ i , j ( k ) > δ k \hat y _{i,j}=\arg \max \hat y _{i,j}(k)>\delta_k y^i,j=argmaxy^i,j(k)>δk则将 ( i , j ) (i,j) (i,j)判定为类别 k k k,否则判定为背景。
segmentation
ILP之后得到的图已经能够较好的包裹住物体,但是有false postive的情况,即包裹的区域大于实际物体的区域,所以需要进一步优化结果。思路是使用传统算法。作者实验发现基于MCG的建议区域效果最好。
performance
VOC12 val | VOC12 test | |
---|---|---|
baseline | 17.8 | - |
baseline+ILP | 32.6 | - |
baseline+ILP+MCG | 42.0 | 40.6 |