本文出自微软研究院,由清华教授代季峰、何凯明、旷视孙剑三位前辈合力完成。收录于CVPR2016
.
论文地址:MNC:Instance-aware Semantic Segmentation via Multi-task Network Cascades
背景
自从FCN
提出后综合深度学习特征、大规模注解以及基于图像模型的高级推理,语义分割任务发展迅速。尽管如此,精确快速的实例级语义分割任务仍然是一个巨大的挑战。2014年MSRA
发布COCO
数据集以促进实例级语义分割热播我也的发展。
有一些方法利用卷积神经网络处理实例级语义分割任务,但这些方法都要求掩码建议mask proposak
,而此方法推理速度慢。并且并不能利用大规模的训练数据提取深度特征。
本文基于CNN处理实例级的语义分割任务。作者将其分为三个部分:
1)区分实例:实例由不区分类的边界框表示。
2)掩码估计:对每一个实例预测像素级的掩码。
3)对象分类:为每一个掩码级别的实例预测类别标签。
传统的多任务方法中,在共享特征的基础上,每个任务同时进行,各任务间互不干扰,独立完成。而在作者提出的多任务级联网络
中上一个任务的输出将作为下一个任务的输入,在共享特征的前提下构成上图所示的级联网络
。
模型结构
共享的特征图由VGG-16
的前13层习得,上图中的每一横行代表一个任务,每个任务都包含一个损失,下一任务的损失也会受此影响。MNC
训练过程是一个One-stage
也即可以利用反向传播算法完成整个模型的训练。但是模型每一阶段的损失受到上一阶段的损失影响,并且在ROI
过程有空间转化,作者设计了一个空间坐标可微的网络层
,使得梯度可计算。
Regressing Boxlevel Instances
第一阶段,网络提出无类别的实例边框。RPN
通过全卷积预测边界框的位置以及对象分数。利用3x3的卷积降维,使用两个1x1做分类和回归。这一阶段的损失如下:
L
1
=
L
1
(
B
(
Θ
)
)
L_{1}=L_{1}(B(\Theta))
L1=L1(B(Θ))
其中,
θ
\theta
θ代表网络中需要被优化的参数,
B
B
B代表第一阶段的输出。其中
B
=
{
B
i
}
,
B
i
=
{
x
i
,
y
i
,
w
i
,
h
i
,
p
i
}
B=\left\{B_{i}\right\},B_{i}=\left\{x_{i}, y_{i}, w_{i}, h_{i}, p_{i}\right\}
B={Bi},Bi={xi,yi,wi,hi,pi},
x
i
,
y
i
x_i,y_i
xi,yi代表边界框中心,宽为
w
i
w_i
wi,高为
h
i
h_i
hi,得分用
p
i
p_i
pi表示。
Regressing Mask-level Instances
对每一个边界框的proposal
进行像素级的掩码mask分割
。对第一阶段产生的box
,利用ROI pooling
提取特征。其中ROI pooling
对任意大小的特征输入能产生固定长度的特征。在每一个边界框之后增加两个全连接层,第一个FC将维度降至256,第二个产生像素级的mask回归。这一阶段的损失如下:
L
2
=
L
2
(
M
(
Θ
)
∣
B
(
Θ
)
)
L_{2}=L_{2}(M(\Theta) | B(\Theta))
L2=L2(M(Θ)∣B(Θ))
M
M
M是这一阶段的输出,代表一系列的masks,
M
=
{
M
i
}
M=\left\{M_{i}\right\}
M={Mi},而
M
i
M_i
Mi是m*m维的logistic回归的输出。前面说过,这一阶段受到第一阶段的影响。
Categorizing Instances
对第一阶段生成的边界框提取特征。利用第二阶段的mask进行二值化估计。第三阶段的损失为: L 3 = L 3 ( C ( Θ ) ∣ B ( Θ ) , M ( Θ ) ) L_{3}=L_{3}(C(\Theta) | B(\Theta), M(\Theta)) L3=L3(C(Θ)∣B(Θ),M(Θ))
最后的到整个模型的损失为: L ( Θ ) = L 1 ( B ( Θ ) ) + L 2 ( M ( Θ ) ∣ B ( Θ ) ) + L 3 ( C ( Θ ) ∣ B ( Θ ) , M ( Θ ) ) \begin{aligned} L(\Theta)=& L_{1}(B(\Theta))+L_{2}(M(\Theta) | B(\Theta)) \\ &+L_{3}(C(\Theta) | B(\Theta), M(\Theta)) \end{aligned} L(Θ)=L1(B(Θ))+L2(M(Θ)∣B(Θ))+L3(C(Θ)∣B(Θ),M(Θ))