论文链接:http://www.cs.utoronto.ca/~fidler/papers/sgn_iccv17.pdf
一、简介
该文章提出了SGN以完成实例分割任务,为了从像素中逐步组成目标,SGN使用了一系列的神经网络,每个神经网络都用来解决一个增加语义复杂度的子类问题。文章通过实验证明SGN有效超越了目前在Cityscapes和PASCAL VOC数据集上表现最好的方法。
二、背景
实例分割是一个同时考虑物体检测和语义分割的任务,他为图片中的每个物体生成像素级掩模。因此实例分割综合了以上两个任务的问题,要求我们把一系列像素集群成连续的组件。跨场景的遮挡和大量不同的对象进一步增加了任务的复杂性。比如说关于Cityscapes数据集的AP只有20%[1,7],这远不够。
三、相关工作
大部分的实例分割方法将该任务分为两步,先进行目标检测的到目标框和对应的类别,再在该基础上对目标框内的像素进行前景和背景的标注[2,3,4,5,6;15,16,1,29,30]。除此之外还有一些方法是使用RNN预测目标实例的多边形轮廓。在[7,8;41,40]中,他们从一张图片全面的取出大的图像片,并且训练一个CNN,使其在片内预测实例标签,随后使用一个密集条件随机场去获得全图上连贯的标签。在[9,10;33,31]中,他们使用了一个RNN来在每个时间步长上产生一个object mask,然而,由于当时间步数较大时RNN通常表现不佳,因此这些方法难以扩展到具有挑战性的多目标街道场景。最近,[11;3]通过学习一个卷及网络来预测分水岭变换的能量,它的复杂度不会受到场景中物体数量的影响。
四、论文思路
在这篇论文中,作者将实例分割任务分成许多个更易处理的小步骤,论文使用一系列神经网络通过集群方法一步步的将简单的部件组合成物体。特别的,第一个网络通过预测水平和垂直的物体断点来沿着图像的行和列聚集像素,接下来这些断点被用来创造线分割;通过发掘两个方向的信息,第二个网络将水平和垂直的线聚集到联通的部件上;最终,第三个网络将这些部件聚集成实例,从而解决了由于遮挡引起的物体分裂问题。因为这种序列结构,该网络被命名为SGN(Sequential Grouping Net-
works)。
网络结构
文章借鉴了[11,12;3,18]的方法,使用了语义分割去辨别前景像素。论文将实例分割看做是由断点构成分割线,然后进一步被组合成部件,进一步生成完整实例的一个过程。网络结构如下图1所示:
论文接下来介绍了Predicting Breakpoints、Grouping Breakpoints into Line Segments、Grouping Lines into Connected Components、Merging Fragmented Instances四个步骤。
4.1预测断点
(1)断点预测算法
文章最基本的基本单元定义为断点像素位置,在一个固定的方向上,这些断点代表了每个物体的起点或者终点。文章在横纵向上预测断点。对于横向,从左到右,一次一行地扫描图片,当一个新的实例出现时,记录这个变化点,作为起点,计算起点的数量。纵向也自上而下的进行着相同的操作。因此,当扫描到实例间的边界时,这个点会被当做起点;当扫描到某个实例与背景间的边界时,这个点会被当做终点。注意:这里与标准的边界检测不同的是,它还能够编码由前景(实例)到背景的变化方向信息。论文还经验性的引入了两个标签:实例内部标签和背景标签,使用着两个标签可以使end-point点预测更加的锋利(sharper)。因此,如上图一所示,图片上的每一个像素点都被打上了四个要素分别是:起点、终点、实例内部点、背景点。
(2)断点预测网络结构
文章开发了一个CNN进行这个像素级标注任务,如下图2(a)所示:
由上图可知,当原图输入网络后,经过一系列的特征提取后得到两个分别对应水平和垂直方向上的与原图尺寸一致的像素标注特征图。该网络是基于DeepLab-LargeFOV[13;5]网络的,并且使用了一个改进的VGG16[14;35],并且将其改成像FCN[15;27]那样的全卷积网络。细节上,为了保证精确的位置信息,去除了pool4和pool5层;为了扩大感受野,在conv5-6层使用了带孔卷积;与此同时,文章还通过将低级的一些层次连接到高级的层次上去扩张网络,从而捕获更多更好的细节。
(3)学习机制
因为断点分布的稀疏性使得预测断点很难,使得标签的分布也很不平衡并由背景和内部像素支配。为了减轻这个现象,参考HED[16;38],文章依据mini-batch中每个类别出现的频率的倒数来重新加权交叉熵损失。
4.2将断点集群成分割线
由于卷积网输出跨越多个连续像素的断点,文章使用形态运算符来创建具有一个像素宽度的边界,文章进一步使用语义分割预测图中的边界来扩张断点集合,这样能保证不忽略任何边界。接下来就是生成分割线,为了生成水平分割线,文章沿着每一行从左向右的遍历,每当遇到一个起点像素,就开始生一个新的线段;每当遇到一个新的起点像素或者遇到一个终点像素,就停止正在延续的这个线段,前者是遇到两个实例的边界的情况。该过程如下图3(a)所示:
当生成竖直方向上的分割线时,自上而下使用相同的步骤。如上图3(a),也可以看到,若在某个实例内部存在错误的终点像素,则使用这种方法会不可避免产生错误。为了解决这个问题,文章进一步在反方向上扩展了已有的分割线,如上图3(b)所示。具体的,文章通过计算起点像素的连续数目来辨别存在于实例之间的起点像素,然后,文章翻转了那些除了双起点像素之外的起终点像素属性(起点像素->终点像素;终点像素->起点像素;双起点像素:不变)并且在反方向上生成分割线。这个简单的过程生成了构造完整实例必不可少的补充线段(如图3(b)橙色线段所示)。
4.3将线段集群成内部联连通的实例部件
(1)集群部件算法
文章使用水平线作为基本元素,并且递归地去决定是否要将下一个线段合并到一个已存的部件中。因为线段的数量远小于图片中像素的数目,所以这是一个高效的过程。这个合并过程是由一个无记忆的循环网络完成的,文章称该网络为LineNet。LineNet自上而下的扫描图片并且序列化地决定是否要将一个新的线段合并到一个已存的附近实例中去。下图4(a)给出了一个示例:
图4 集成部件示例
上图4(a)中Ok代表一个已存实例,Sk代表一个分割线。
(2)集群部件网络结构
以图4(a)中情况为例,LineNet使用一小部分线段作为上下文环境信息,其中一部分是Si之上的h行,它们代表了已合并的实例的历史,另一部分是Si之下的f行,它们代表了未来可能被合并的部分。文章限制水平上线文信息为包含着候选实例Ok和线段Si的最小间隔,如图4(a)中的红色虚线框所示。文章还pad补零使红色虚线窗口以si为水平中心,并且resize红框以在水平方向上具有固定尺寸。
LineNet的输入包含9个通道,第一个是布尔映射,其中像素属于si或Ok;第二个通道也包含着Ok中的一些像素,这些像素与Si中主要的像素的语义类别相同;第三个通道是一个布尔映射,显示Ok中的像素与si共享相同的垂直线段。这三种线段如上图4(c-f)所示。除此之外,另外6各通道是在水平和垂直方向上,内部像素和起终点像素的概率图。LineNet是一个非常小的网络,由两个共享的全连接层和具有sigmoid功能的分类器组成。每个语义类的输出是将该行与候选实例合并的概率。(什么意思?具体操作是什么?难道它的输出对应是n个语义类的channel?)
(3)学习机制
使用标准交叉熵损失训练LineNet,如果一条线上的大部分像素都与这个实例属于同一个ground-truth实例,则这条线会被合并到这个已存的实例中去。
4.4合并碎片实例
(1)合并算法
很多实例是由不止一个部件组成的,比如下图5(a)中的车被一个杆子分成了两部分。这种问题在街景中常见。
为了应对上述碎片化实例问题,文章设计了一个MergerNet,它能够将这些碎片式的实例部件集群成最终的目标实例集。很多实例分割算法不能解决这种碎片化问题[11,17;ok,26],文章的方法可以用来解决这些算法中的问题。
文章选择包含了接近100个像素点的碎片实例作为合并候选碎片实例,然后对这些候选实例按照尺寸排序,然后使用一个无记忆的循环网络去决定是否要合并。如果发生合并,将重新计算邻居集并重复上述过程。
(2)合并碎片实例网络结构
MergerNet的输入包含10个通道,首先是前五个通道,如上图5(b)中蓝色方框所示,文章为候选区域匹配了一个紧邻的方框并且在该方框内生成表示:第一个通道是一个布尔映射,其中包含属于任一实例的像素; 第二个通道也是一个布尔映射,其中包含位于框中的其他实例的像素。这提供了有关其他可能合并的信息,上图5?展示了这两个通道,剩余的三个通道是该框内的图像RGB值。文章将所有通道尺寸统一成128x128。剩余的五个通道以相似的方式生成,不同的是,他们来自于两倍于初始方框的方框,如图5(b)中的紫色方框所示,第6和7层如上图5(d)所示。
MergerNet网络结构也很小,包括三个卷积层,一个共享全连接层,一个用于生成最终合并概率的Sigmoid分类器。
(3)学习机制
文章通过对训练图像进行推断来生成MergerNet的训练样本,并使用ground-truch实例来推断是否应该合并不同的组件。(什么意思?)如果两个碎片实例的大部分像素都是同一个ground-truth实例的一部分,就讲二者合并。文章使用标准交叉熵作为每一个类别的loss。这个合并过程的结果便是最终的实例分割结果。文章将某个实例中大部分像素所属的语义类别作为该实例的语义类别。
五、实验评估
文章在Cityscapes和PASCAL VOC数据集上做了实验,主要关注难度较大的Cityscapes的实验结果。
Cityscapes数据集介绍
其内包含高分辨率的城市图像(1024*2048),包含5000张精细标注的图片,其中2975train,500val,1525test。针对实例分割,数据集中有8个实例类,包括不同的人和交通工具。然而运动模糊、截断、极度规模变化和不平衡的类别分布使得该数据集极具挑战性。
评估机制
AP和MWCov,后者是与groundtruth实例匹配的预测的平均IoU,其由地面实例的面积大小加权。
实施细节
对于断点预测网络,文章用VGG16在ImageNet上预训练的模型去初始化conv1-conv5参数,对其他的层采用随机初始化。训练断点预测网络、LineNet、MergerNet的lr分别为10-5(使用了预训练模型)、10-2、10-3。使用带动量的随机梯度下降训练。使用‘poly’策略调整学习率。训练断点预测网络40Kitrations,其他训练20K iteration。为了减轻类别分布不均衡对LineNet和MergerNet的影响,文章通过保持相同数量的正面和负面来对mini-batch训练样本进行抽样(这块的具体操作没明白),文章删除了小实例,并使用语义分割中的语义分数来对{train,bus,car,truck}进行排名预测。其他的类别,得分置为1。对于Cityscapes的实验,文章使用来自PSPNet的语义分割预测,对于PASCAL VOC使用来自LRR的语义分割图。文章还针对语义分割的质量对结果的影响进行了消融实验。
与最佳网络对比
如下表1所示,文章的方法在所有类别上都显著超越了目前最好的网络。在论文投稿时期,作者与Cityscapes官网上的最佳网络对比,实现了5%的性能绝对增长和25%的性能相对增长。下表2是在val上的结果,进步更为明显。
语义分割的影响
文章调查了语义分割对于文章实例分割方法的影响,文章比较了使用基于Resnet-101的PSPNet和使用基于VGG-16的LRR两种方法的性能,如下表3所示:
可以看到使用LRR可以得到合理的结果,然而使用PSP会得到更好的结果,使用上MergerNet后,结果会变的更好,注意,LineNet和MergerNet未针对LRR预测进行微调。
尺寸的影响
小物体相对大物体来讲更难检测,如下图7所示:
LineNet参数的影响
传递给LineNet的context信息是由历史行数h和将来行数f决定的,如下表4所示:
可以看到,对LineNet来说,f参数更为重要。在接下来的实验中,考虑到AP和MWCov,文章选择了‘h1f5’选项。
启发式方法 vs LineNet
文章将LineNet与两种基于启发式的方法进行了对比,第一个是从PSP获取垂直和水平断点以及类边界的并集,文章将他们细化到了单像素宽度以形成实例边界图。在PSP语义分割图上显示的前景区域中,文章将实例边界设置为0,然后将相连的组件作为推断出的实例。如移除小物体和分数分配等后处理步骤都和原先方法一样,文章称这种方法为‘con-com’。
第二种方法叫做‘启发式’,他不使用LineNet,文章简单计算两个相邻的分割线之间的关系来做决断,计算的值包括IoU、与其他线段重叠的比率以及在重叠区域中连接它们的垂直线段的比率(不明白)。如果这几个值加和大于阈值,则将该线段与相邻线段合并。这个策略是基于当下的分割线对的关系进行决断的,不需要训练。如下表6所示:
由上表可以看出,平均来讲,‘启发式‘方法优于‘con-com’方法,这说明了使用分割线的好处;而LineNet超越了上述两种方法,证明了执行集群时使用网络的好处;‘con-com’方法在car和truck上表现很好,在motorcycle和person上表现不好,这说明了相比那些轮廓较为复杂的实例,引入边界信息对拥有紧实小巧形状的实例更有益。然而文章的方法对以上两种实例表现都很好,并且使得网络能够纠正存在于断点图中的错误(如反向扩展分割线)。
MergerNet参数的影响
MergerNet的一个参数是候选的合并前景区域对之间的最大距离,要设置该值,文章首先在训练子集上预测LineNet的实例并计算统计数据。下图8(a)展示了需要合并的区域对的召回率随最大距离的变化,下图8(b)展示了距离小于最大距离这个阈值的前景区域对的数量随最大距离的变化,下图8?和(d)展示了根据不同的最大距离阈值进行合并操作的性能变化。距离为0代表MergerNet没有被使用,可以看到,虽然随着最大距离的上升,MergerNet的recall性能在上升,但是最终的AP和MWCov却在100像素作为最大距离时效果更好,文章假设最大距离继续上升会导致MergerNet在推断阶段受到更多false positive的干扰,而导致效果下降。
视觉结果
文章在下图6中显示了文章方法在Cityscapes val上所有中间步骤的定性结果。
可以看到,文章的方法对于不同尺寸、类别和截断程度的物体都产生了高质量的断点、实例内部区域、分割线和最终的结果。MergerNet在上图6和下图9(b)在训练集上的结果都很好。请注意,IoU高于0.5的预测会被分配到与其对应的真实标签相同的颜色。
失败的情况
文章的方法在语义分割图存在错误时容易可能失误,如上图9(b)所示,火车的一部分被PSP错误分类,所以火车被错误分割成两部分。文章的方法还有可能会遗漏小的物体,比如上图9(e)和(f)中的一些人。除此之外,当很多复杂的实例彼此接近时,文章对他们的最终集群结果可能会如上图9(g)和(h)所示。MergerNet有时候也会聚集不同的实例,如上图9(a)所示的两个亮绿色的车。
在Pascal Voc上的结果
文章也在PASCAL VOC2012上进行了实验,这个数据集包含20类,文章在验证集上与最佳网络进行了对比,文章用的LRR模型是在MS COCO数据集上预训练过的。如下表5所示,文章方法在APtavg上超越了DIN1.1个百分点,并且在IoU大于0.6时,文章方法性能更优,这个结果证明了文章方法产生的mask的质量。
六、总结
文章提出了用于对象实例分割的顺序分组网络(SGN)。 文章方法采用一系列简单的网络,每个网络解决了更复杂的分组问题。 组成对象断点以创建线段,然后将线段分组为连接的组件。 最后,连接的组件被分组为完整对象。 文章的实验表明,文章方法在具有挑战性的Cityscapes数据集方面明显优于现有方法,并且在PASCAL VOC方面表现良好。 在未来的工作中,作者计划使文章的框架实现端到端可训练。