- Abstract 摘要
- Introduction 介绍
- Method 方法
- Ancillary Segmentation Model 辅助分割模型
- Self-correction module自校正模块
- No self-correction module 无自校正模块
- Linear self-correction module 线性自校正模块
- Convolutional self-correction module 卷积自校正模块
- Experience 实验
今天和大家分享一篇CVPR2020的文章——Semi-Supervised Semantic Image Segmentation with Self-correcting Networks,CVPR2020放榜不久,有很多新鲜的内容引人关注,据说这篇论文在2018年就初具雏形,直到今年才正式发表,所以我们来一起来看一下这篇论文。
Abstract 摘要
使用高质量对象构建大型图像数据集语义分割的掩码昂贵且耗时。 在本文中,介绍了一种有原则的半监督框架,该框架仅使用一小组完全监督的图像(具有语义分割标签和检测框标签:Boundingbox+mask)和一组仅具有对象边界框标签的图像(具有检测框标签:Boundingbox)。 我们框架借助一个辅助模型(该模型为弱集生成初始分割标签)和一个自校正模块来训练主分割模型,该模块使用越来越精确的主模型在训练过程中改善了生成的标签。 我们使用线性或卷积函数介绍了自校正模块的两种变体。 在PASCAL VOC 2012和Cityscape数据集上进行的实验表明,我们训练的带有小型全监督集合的模型的性能类似于或优于训练有大型的完整监督集合的模型,而所需的标注工作却减少了约7倍。
一般认为,图像级的标注是弱标注(例如图像分类的类别标注),像素级的标注是强标注(例如分割标注的mask标注),对于普通的分割任务来说,数据是图像,标注是mask,这属于完全监督问题Supervised;如果标注是annotations或者图像级标注,这属于弱监督问题Weakly-supervised;如果标注只有少部分是mask,剩余是annotations或者图像级标注,这属于半监督问题Semi-supervised。
Introduction 介绍
当前最新的半监督方法通常依赖手工制作(hand-crafted) 的方法来推断边界框内的对象蒙版(object mask)。
- Weakly-and semi-supervised learning of a deep convolutional network for semantic image segmentation:在DeepLab_v1的基础上提出了一种基于期望最大化的(EM)算法,以估计弱图像集的分割标签(仅包含框信息)。在每个训练步骤中,都以EM方式根据网络输出估算细分标签。
- Simple does it: Weakly supervised instance and semantic segmentation:提出了一种迭代训练方法,该方法可以在生成区域建议(来自一组固定建议)和微调网络之间进行切换。
- Boxsup: Exploiting bounding boxes to supervise convolutional networks for se- mantic segmentation:使用迭代算法,但依赖GrabCut和手工提取规则来提取每次迭代中的分割蒙版。
本文中的框架称为自校正分割模型,因为它基于其当前的对象蒙版概率模型(probabilistic model of object masks)改善了弱监督标签。目前这些弱监督信息主要包括了bounding boxes,scribbles,points,image labels等,主要方式如下图:
本文中提供了两种自校正机制,一种是使用的函数将辅助预测和模型预测线性地组合在一起,简单有效的方法是最小化加权Kullback Leibler(KL)从分割标签到辅助模型和主模型的分布的自然结果,另一种是使用CNN来学习如何结合辅助模型和主要模型来预测弱图像集上的分割,这种方式可以消除对于权重加权的计划。
Method 方法
本篇论文的主要目的是:在半监督的设置下(小部分的全监督数据+大多部分将测框数据集),训练一个分割网络,主要结构如下图:
本篇论文的结构主要分为三个部分或者模块:
- Primary segmentation model:金字塔分割模型,生成语义分割结果,以Deeplabv3+为基础;
- Ancillary segmentation model:辅助分割模型,在给一张图像和bbox的前提下产生分割结果,以Deeplabv3+为基础;
- Self-correction module:自校正模块,优化了由辅助模型和当前主模型针对弱集产生的分割结果;
Ancillary Segmentation Model 辅助分割模型
在带有边界框注释的分段模型的半监督训练中,关键的挑战是推断对象在框内的分割。而目前以后的方法一般是基于手工提取(hand-crafted),例如Crubcut。这样的手工提取一般回带来如下的问题:1)边界框信息未直接用于提取分割mask,2)该过程可能是手工设计的,可能不是最佳选择,3)当多个框重叠时,分割过程变得模棱两可。
在这篇论文中,通过设计了辅助分割模型(ancillary segmentation model) 来避免上述问题,辅助分割模型在image+bounding box annotation的数据及标注条件下,可以形成像素级别的标签分布。此外,还利用了域训练模型和将bounding box嵌入到多尺度网络层级里面参加训练等方式来提高模型的准确率和迁移学习能力,结构如下图所示。
Bounding box Encoder:是一个基于3x3卷积和sigmoid激活函数的编码器;通过Encoder会生成tensor,看作是attention map以逐元素乘法(element-wise multiple)的方式加入到原图像的tensor中,上图是展示了在Deeplabv3+中两个尺度的添加方式。对于每个尺度,生成一个attention map,使用逐元素乘法将其与相应的特征图融合,然后馈送到解码器。因为有C类,所以生成C+1类的二值mask。辅助分割模型用交叉熵损失来约束。
Self-correction module自校正模块
No self-correction module 无自校正模块
通过结果观察到:辅助分割模型的性能优于没有框信息的分割模型。这主要是因为边界框信息指导辅助分割模型在推理时在bounding box内查找对象。最简单的训练初步模型的方法是:在全监督数据集F上使用真值标签来预测和在弱集W上通过辅助分割模型来生成标签。
Linear self-correction module 线性自校正模块
在无自校正模块的情景下,分割模型只作用在全监督数据集F上,并没有作用在弱集W上。Vahdat 引入了一种正则化的期望最大化算法,该算法使用KL散度的线性组合来推断一般分类问题中缺失标签的分布。线性自校正模型也运用了这个灵感,主要思想是所推断的标签分布和辅助模型的标签分布以及主模型的标签分布都是相近的。
当α趋近于无穷的时候,推断更符合辅助标签的分布。线性自校正模型,因为它使用KL散度的线性组合的解决方案来推断潜在分割标签的分布。由于在训练过程中优化了主要模型的参数,所以α将自校正机制偏向于主要模型。
Convolutional self-correction module 卷积自校正模块
在linear self-correction module里面有一个超参数α需要微调和设定,为了克服这一难题,我们将linear self-correction module换成了convolutional self-correction module卷积自校正模块。
卷积自校正子网络由两个卷积层组成。 这两层都使用3×3内核和ReLU激活。 第一层具有128个输出FM,第二层具有基于类别数量的FM。这里的挑战是训练该子网,使更准确地预测分段标签。 为此,我们在目标函数中引入了一个附加体系,即在整个数据集中对主要模型进行训练时,使用F中的训练示例来训练子网。
由于卷积子网络的训练是随机初始化的,因此无法在训练过程中及早准确预测W上的分段标签。 为了克服这个问题,我们提出以下预训练过程:
1.初始化辅助模型:与以前的自校正模型一样,我们需要训练辅助模型,完全监督集F的一半用于此目的。
2.初始化训练自校正网络:全监督数据F用于训练基本模型和卷积自校正网络。
3.主要训练:整个数据F和W用于使用目标函数i对以前的模型进行微调。
Experience 实验
文中的实验是在PASCAL VOC 2012和城市街景数据集上做的,所有的数据集都含有分割标签和标注框标注。把数据集模拟成一个少部分全监督和一个大部分是弱监督的数据集。训练:将Deeplabv3+做为主要的模型,在4卡上Tensorflow的框架上做的,使用了Xception-65的域训练模型,lr=0.007,batchsize=4。