[论文笔记](arxiv2017)Recurrent neural networks for semantic instance segmentation--RSIS

arxiv 2017
论文链接
目录
-
摘要
-
引言
-
方法
-
- 编码
- 解码
- 训练
-
实验
-
总结
摘要
提出recurrent 模型进行实例分割。输入图片,输出目标的mask 序列和每一个目标对应的类别概率图,该模型是一个端对端的模型。与依赖于目标proposal的方法相比,本文模型不需要对输出进行任何后处理。在Pascal VOC 2012, CVPPP Plant Leaf Segmentation和Cityscapes数据库上进行实验。本文进一步分析了本文目标排序模式,发现该模式是一致的,与编码阶段学习的激活有关。
引言
二阶段的语义分割:1. 检测目标;2. 根据BBX给出目标所属类别及mask. 由于候选目标位置往往多余实际目标位置,通常需要进行后处理,选择能覆盖所有目标的位置舍弃其他位置。尽管许多工作都可以实现两个阶段的联合优化,目标函数仍然不能直接对目标任务建模。
端对端:不需要中间表示,直接学习如何将输入映射到期望的输出。本文解决如何进行端对端的语义实例分割。
大多数计算机视觉系统都是直接一步完成图像分析,但是人对静态视觉输入的分析是一个顺序的过程,涉及到对构成场景的目标和目标之间的关系的推理。受此启发,本文设计一个顺序模型进行场景分析,解决复杂的目标分布问题,并做出目标相互关联的预测。利用RNN对单一输入得到一个序列输出,将语义实例分割问题转化为序列预测任务。该模型经过训练,可以自由选择图像上的扫描路径,从而最大化分割实例的质量,这使我们能够进行有关其如何学习探索图像的详细研究。我们发现目标的发现模式是一致的,与场景中目标的相对布局有关。
目前的一些方法产生一序列的mask与类无关,只能进行单目标任务,或者需要额外的方法对每一个预测的目标给出类别标签。本文提出一个完全端对端的recurrence模型,直接给出一个序列的语义实例作为输出(图像中所有目标的mask和对应目标的类别标签。)
主要贡献:
- 第一个用于语义实例分割的端对端recurrent模型;
- 在三个数据库上的实验结果与之前的序列方法的结果相当 ;
- 分析了其遵循的发现目标的模式。
方法
给一个输入图像x, 语义实例分割的目标是给出一组mask和其对应的类别标签 y=\lbrace y_1,y_2,...,y_n \rbrace。输出集合的基数取决于输入图像,因此模型需要具备解决不同长度输出的能力。这对于前向传播结构具有一定的挑战,因为前向传播结构期望输出的大小是固定的。
本文提出一个recurrent结构,输出一序列的mask和label,\hat{y}=\lbrace\hat{y_1},\hat{y_2},...,\hat{y_n}\rbrace。在任意给定time step t\in\lbrace1,...,\hat{n}\rbrace,对应的预测为\hat{y_t}=\lbrace\hat{y_m},\hat{y_b},\hat{y_c},\hat{y_s}\rbrace, 其中\hat{y_m}\in[0,1]^{H\times W} 为二值mask,\hat{y_b}\in[0,1]^{4} 为bbx的坐标(被图像dimension归一化后的),\hat{y_c}\in[0,1]^{C} 为C个不同类的概率,\hat{y_s}\in[0,1] 为objectness score,为测试阶段的停止标准。直接从分割mask得到BBX的标注,需要附加一个额外的训练signal,在本文实验中,这样做可以获得更优的模型。
本文设计一个encoder-decoder结构,该结构是语义分割的典型结构,encoder和decoder之间的skip connection可以恢复低级也在,有助于获得精确的分割输出。与该结构不同的是,本文的decoder是recurrent,允许预测一个实例而不是一个包含所有目标的单一的语义分割map,因此,本文可以处理不同长度的输出。

编码
将在image net上预训练的用于图像分类的resnet101作为encoder。在最后一个卷积层进行截断,去除最后一个池化层和最终的分类层。编码阶段的输入为RGB图像x\in R^{h\times w\times 3},并且从不同的卷积块中得到特征F=encoder(x). F包含各个block的输出特征F=[f_0,f_1,f_2,f_3,f_4],其中f_0对应最深的卷积块的输出特征,f_4对应输入为输入RGB图像的block的输出特征,(在resnet101中,f_{4...0}分别对应于ResBlock_{1...5}的输出)。
解码
解码以特征F为输入,输出一组\hat n预测,其中\hat n是随输入图像变化的。本文将convolutional LSTMs作为decoder的基础模块,设计一个分级的recurrent结构,利用encoder不同抽象级别上的特征。设计一个由一连串ConvLSTM层组成的上采样网络,该网络的输出为encoder侧输出的顺次组合。该组合模式可是看作是通过前一recurrent的skip-connection。该结构可以使decoder再次利用encoder的低级特征以优化最终的结果。此外,由于利用了recurrent decoder, 特征的reliance可以随time steps变化。
时间t的第i^{th}个ConvLSTM层 h_{i,t}取决于以下两项:1)encoder和前一ConvLSTM层的两个输出作为其输入;2)上一time steps的隐藏状态的表示h_{i,t-1}:
h_{i,t}=ConvLSTM_i([B_2(h_{i-1,t})|S_i],h_{i,t-1}) (1)
其中,B_2为factor为2的双线性上采样,h_{i-1,t}表示上一ConvLSTM层的隐藏状态,S_i表示利用卷积层将f_i降维的结果。
公式(1)以一种链的方式进行应用,在应用中i\in\lbrace1,...,n_b \rbrace, 其中n_b表示encoder中的卷积块数目,在resnet中,n_b=5。h_{0,t}是将S_0作为ConvLSTM的输入得到的(无skip-connection):
h_{0,t}=ConvLSTM_0(S_0,h_{0,t-1}) (2)
前两个ConvLSTM层的dimension设为D,剩余的dimension为对应的前一层的一半,所有ConvLSTM的核大小为3\times3,感受野更大,可以对距离较远的实例更好地建模。最后用一个1\times1的卷积层核sigmoid激活得到与输入图像同分辨率的二值mask。
bbx,class,和stop prediction分支包含三个独立的全连接层以预测4个box坐标,分割目标的类别和time step t时的类别分数。这三个层的输入都是h_t,时用过concatenate 最大池化所有ConvLSTM的隐藏层得到的。Fig.1展示的是a single time step的recurrent decoder的细节。
训练
本文可以说是一个multi-task任务:
分割loss( L_m): soft intersection over union loss(sIoU):
sIoU(\hat{y},y)=1-{{<\hat{y},y>} \over {||\hat{y}||_1}+||y||_1-<\hat{y},y>}, y,\hat{y}分别代表预测和GT。本文不设置任何特定的实例顺序以匹配预测和GT的目标。本文是让模型决定最佳的排序,然后基于此对GT进行排序。用Hungarian algorithm【匈牙利算法】对预测和GT进行匹配,利用sIoU作为cost function。给定一序列预测mask \hat{y}_m=(\hat{y}_{m,1},...,\hat{y}_{m,\hat{n}}), 一组GT mask y_m=\lbrace y_{m,1},...,y_{m,n}\rbrace, 分割loss L_m:
L_m(\hat{y}_m,y_m,\delta)=\sum\limits_{t=1..\hat{n}}\sum\limits_{t=1..n}sIoU(\hat{y}_{m,t},y_{m,t'})\delta_{t,t'} (3)
\delta为匹配矩阵,当预测\hat{y}_{m,t}和GTy_{m,t'}匹配时,其值为1,反之为0。当\hat{n}>n时,忽略t>n的预测。
分类loss( L_c): 本文网络输出每个预测mask的类别概率。给定一序列类别概率\hat{y}_c=(\hat{y}_{c,1},...\hat{y}_{c,\hat{n}}),一组GT one-hot类别向量y_c=\lbrace y_{c,1},...,y_{c,n}\rbrace,分类loss为通过\delta匹配的对的类别交叉熵。
检测loss( L_b): 给定一序列预测的BBX坐标\hat{y}_b=(\hat{y}_{b,1},...\hat{y}_{b,\hat{n}}),GT y_b=\lbrace y_{b,1},...,y_{b,n}\rbrace,bbx回归的L_b为通过\delta匹配的匹配对的bbx坐标之间的mean squared error。
stop loss( L_s): 本文模型在每个time step \hat{y}_{s,t}计算objectness score。该值通过\hat{y}_{s,t}和l_{t<=n}之间的二值交叉熵定义的loss优化,其中n表示图像中实例的个数。
总的loss: L_m+\alpha L_b+\lambda L_c+\gamma L_s
当每个图像中目标数目比较大时,利用curriculum learning指导优化过程,从两个目标起开始优化模型,当验证loss达到稳定,则将目标数目增加一倍。
实验
数据集
Pascal VOC 2012:包含20个不同类别的目标,每个图像平均包含2.3个目标;图像resize到256\times256
CVPPP Plant Leaf Segmentation:每个图像目标数目在11-20之间,平均有16.2个目标;图像resize到500\times500
Cityscapes:包含8个类别的目标,训练集中目标数目0-120,平均每个图像包含17.5个目标;图像resize到256\times512
This diversity in datasets will allow assessing our model based on the length of the sequence to be generated.
评价指标
CVPPP :symmetric best dice(SBD), difference in count (DiC)
Cityscapes/Pascal VOC:the average precision AP at different IoU thresholds.
Comparison with sequential methods –实例分割
Pascal VOC数据集上:

[16-recurrent model]只在person类别上train/evaluate模型,本文实在20个类别上进行训练和evaluate的,这里仅报道person上的结果


(b)是与non-sequential方法对比的结果,本文方法优于proposal-based方法[1,18],与最近的方法[3,36,37,20]相比,本文在lower threshold效果不好,在higher threshold比较competitive。
其他两个数据集上结果分析详见论文。
消融实验
不同encoder backbone,不同的skip-connection方式(concatenate,summation,multiplication)或不适用skip-connection,减少decoder中ConvLSTM层数;
结果:encoder的深度越深,效果越好;sum的skip-connection效果较好,加入skip-connection效果好于不加;减小ConvLSTM层数,效果变差。
ConvLSTM层数为1,层数为5,但是不进行skip-connection的效果差别不大—说明:只有将encoder侧输出作为decoder额外的输入,加深recurrent module的深度才可以提高性能。
Object Sorting Patterns
分析网络学习的排序模式和三个预先定义的排序策略,即 right to left (r2l), bottom to top (b2t) and large to small (l2s)。利用每个目标的中心代表其位置,面积代替大小。
将预测的mask根据以上三个策略中的一个进行排序,然后用Kendall tau correlation metric \tau={ {P-Q}\over{N(N-1)/2}}计算模型和利用strategy排列的结果的关联。
给定一序列的mask x\in(x_1,..,x_N)和其排序y\in(y_1,...,y_N),P为排序一致的对的数目(如,两个列表中出现在相同顺序的pairs的数目),Q为不配对的数目。\tau \in [-1,1],1表示完全相关,-1表示负相关,0表示不相关。




总结
- 端对端的实例分割,不需要region-proposal,不需要后处理;可以解决图像目标数目不同问题;目标排序方式取决于图像(在实验部分有论证)
- 缺点:难以准确分割小目标;difficulties handling long sequences.
