本文参考了:
https://blog.csdn.net/NCEPUDJ/article/details/105118699
https://blog.csdn.net/Cloris_Sue/article/details/105099992
有些翻译的部分直接照搬,在此表示感谢。
Abstract
建立一个大型的具有高质量的对象masks图像数据集来进行语义分割是非常昂贵和耗时的。
在本文中,介绍了一种有原则的半监督框架,该框架的训练数据是:一个小型的全监督数据集(具有语义分割标签和检测框标签:Boundingbox+mask)和一个仅具有对象边界框标签的图像集(具有检测框标签:Boundingbox,本文称之为weak set)。
框架通过辅助模型(为weak set生成初始分割标签)和自校正模块(使用日益精确的主模型改进训练过程中生成的标签)来训练主分割模型。并且介绍了两个变种的自校正模块,也就是线性自校正和卷积自校正。
在PASCAL VOC 2012和Cityscape数据集上进行的实验表明,我们训练的带有小型全监督集合的模型的性能类似于或优于训练有大型的完整监督集合的模型,而所需的标注工作却减少了约7倍。
1. Introduction
语义分割是数据标注中成本最高的任务之一,因此,大多数图像分割数据集都比图像分类数据集小几个数量级。
1)本文提出了一种利用廉价的对象边界盒标签进行训练的半监督方法来降低语义分割的数据需求。这种方法减少了数据标注需求,但代价是需要推断边界框内对象的遮罩标签。
2)文中的方法是,首先用全监督数据集来训练辅助模型,然后利用辅助模型预测weak set上的语义分割标签。利用这些扩充的数据,训练一个主分割模型。并且在训练期间将提供给主模型的标签从最初的辅助掩模标签细化为更精确的标签。因此,这个框架被称为自校正分割模型。
主分割模型是什么?全监督数据集多大合适?weak set有没有选取标准,还是随机选取?(看完实验已明白本文贡献倒推过来是为了后面构建image dataset提供服务的,提供了一种构建dataset相对简单的途径)
3)本文中提供了两种自校正机制,一种是使用函数将辅助预测和模型预测线性地组合在一起,简单有效的方法是最小化加权Kullback Leibler(KL)从分割标签到辅助模型和主模型的分布的自然结果,另一种是使用CNN来学习如何结合辅助模型和主要模型来预测弱图像集上的分割,这种方式可以消除对于权重加权的计划。
2. Related Work
语义分割:使用DeepLabv3+ 作为我们的分割模型,因为它比以前使用简单阶乘输出的基于CRF的DeepLab模型更好。
鲁棒训练:利用包围盒信息训练分割模型,可以归结为一个从带噪标记实例中鲁棒学习的问题。这些模型都局限于图像分类问题,尚未应用于图像分割。
半监督语义分割:本文的重点是利用CNN训练bounding box标注深度语义分割。
[41Year2015] 在DeepLab_v1的基础上提出了一种基于期望最大化的(EM)算法,以估计弱图像集的分割标签(仅包含框信息)。在每个训练步骤中,都以EM方式根据网络输出估算细分标签。
[12 Year2015] 提出了一种迭代训练方法,该方法可以在生成区域建议(来自一组固定建议)和微调网络之间进行切换。
[26 Year2017]使用迭代算法,但依赖GrabCut[47]和手工编制的规则在每次迭代中提取分割掩码。
我们的工作与之前的方法有两个显著的不同:
i)我们用辅助CNN替换手工规则,以提取弱集合中对象的概率分割标签。
ii)在训练过程中,我们使用自校正模型来校正辅助CNN的输出与主分割模型之间的不匹配。
除了框注释之外,分割模型还可以使用其他形式的弱注释,例如图像像素级[60、62、22、3、17、61、15]、图像标签级[68]、涂鸦[64、31]、点注释[5]或web视频[20]。最近,基于对抗性学习的方法[2351]也被提出来解决这个问题。我们的框架是对其他形式的监督或对抗性培训的补充,可以与它们一起使用。
3. Methods
本文的主要目的是:在半监督的设置下(小部分的全监督数据(image,segmentation ground-truth,object bounding boxes)+大多部分将测框数据集),训练一个语义分割网络。
结构主要分为三个模块:
- Primary segmentation model:主分割模型(金字塔分割模型)生成给定图像的对象的语义分割。这是受训练的主要模型,以Deeplabv3+为基础;
- Ancillary segmentation model:辅助分割模型,辅助分割模型给定图像和边界框的分割。该模型对弱集进行初始分割,有助于训练初始模型。
- Self-correction module:自校正模块对辅助模型和当前弱集的主模型产生的分割进行优化。使用交叉熵损失训练主模型,该交叉熵损失将其输出与完全监督示例的正确标注分割标签或弱集的自校正模块生成的软优化标签相匹配。
Notation:
x:image
b: object bounding boxes
3.1. Ancillary Segmentation Model
带边界盒标注的分割模型的半监督训练的关键是推断出盒内物体的分割。解决这一问题的现有方法主要依赖手工编制的基于规则的过程,如GrabCut[47]或迭代标签优化[41、12、26]机制。后一个过程通常在从图像中提取分割和使用边界框信息(例如,通过将框外的遮罩归零)进行标签迭代优化。
这类程序的主要问题是:
i)边界框信息没有直接用于提取分割掩码;
ii)由于是手工设计的,程序可能是次优的;
iii)当多个框重叠时,分割过程变得模棱两可。
本文设计了一个辅助的分割模型,在给定图像和边界框注释的情况下形成每像素的标签分布。该模型利用全监督集(F)易于训练,可作为W中图像的训练信号,在推理时,将图像及其边界盒都反馈到网络中,得到 ,分割标签分布。
我们在设计辅助模型时的关键观察是,基于编码器-解码器的分割网络通常依赖于图像分类模型(例如,ImageNet预训练模型)初始化的编码器。这通常通过从大型图像分类数据集中转移知识来提高分割性能。为了保持同样的优势,我们使用一个并行包围盒编码器网络来扩充基于编码器-解码器的分割模型,该网络以不同的尺度嵌入包围盒信息(见图2)。
element wise multiplication时“权重”向量W 如何得来?
边界框编码器的输入是表示边界框的二值化掩码的3D张量和表示编码器输出的目标尺寸的3D形状。将输入掩模张量调整到目标形状,然后通过一个带有sigmoid激活函数的3×3卷积层。
激活:由此产生的张量可以被解释为注意图,该注意图按元素乘以由分割编码器生成的特征图。图2示出了在两个不同尺度下的这种特征映射的两个路径,如在DeepLabv3+架构中。对于每个尺度,生成一个注意图,使用元素乘法将其与相应的特征图融合,并馈送给解码器。对于大小为W×H×3的图像,我们使用大小为W×H×(C+1)的二值掩码表示其对象边界框,该二值掩码对C+1二值掩码进行编码。如果像素处的cth二进制掩码位于cth类的一个边界框内,则其值为1。如果背景遮罩中的像素未被任何边界框覆盖,则其值为1。
利用完整数据集F上的交叉熵损失训练辅助模型:
3.2. No Self-Correction
我们通过实验观察到,我们的辅助模型的性能优于没有盒子信息的分割模型。这主要是因为边界框信息引导辅助模型在推理时查找框内的对象。
训练主模型的最简单方法是训练它使用完全监督集F上的正确标注标签和弱集W上的辅助模型生成的标签进行预测。对于此“无自校正”模型,图1中的自校正模块仅复制辅助分割模型所做的预测。训练以优化为指导:
其中第一项是以一个one-hot ground-truth标签为目标的交叉熵损失,第二项是以panc生成的软概率标签为目标的交叉熵损失。注意,由θ参数化的辅助模型是固定的。我们称这种方法为无自校正模型,因为它直接依赖于辅助模型来训练W中的主要模型。
soft probabilistic labels是什么鬼?
3.3. Linear Self-Correction
公式2依赖于辅助模型来预测弱集上的标签分布。然而,该模型仅使用F的实例进行训练,而不使用W中的数据。
Vahdat[56]引入了一个正则期望-最大化算法,使用线性组合的KL发散来推断一个分布在丢失的标签上的一般分类问题。
线性自校正模型收到此启发,主要思想是所推断的标签分布和辅助模型的标签分布以及主模型的标签分布都是相近的。由于主模型在训练初期不能准确预测分割掩模,因此加入了一个比例因子α 。因此使用线性自校正时,其推断的标签分布应该满足如下式子:
注意到当α 为正无穷的时候,推断的分布更接近辅助模型的标签分布,而当α 为0的时候分布更接近于主模型的标签分布,因此在训练主模型的过程中定义了α 的时间表,α 在训练的时候是从一个比较大的数字减小到比较小的数字的。
3.4. Convolutional Self-Correction
线性自校正的一个缺点是训练过程中超参数α 需要微调和设定。提出了卷积的自校正,将线性函数替换为学习自校正机制的卷积网络。
卷积自校正子网络由两个卷积层组成。 这两层都使用3×3内核和ReLU激活。 第一层具有128个输出feature maps,第二层具有基于类别数量的feature maps。这里的挑战是训练该子网,使更准确地预测分割标签。为此,我们在目标函数中引入了一个附加体系,即在整个数据集中对主要模型进行训练时,使用F中的训练示例来训练子网。
其中第一项和第二项训练F和W上的主模型(在第二项中我们不通过q反向传播),而最后一项训练卷积自校正网络。
由于卷积子网络的训练是随机初始化的,因此无法在训练过程中及早准确预测W上的分割标签。为了克服这个问题,提出以下预训练过程:
1)辅助模型的初始训练:与之前的自校正模型一样,我们需要训练辅助模型。这里,全监督集(F)的一半用于此目的。
2)转换自校正网络的初始训练:用全监督数据(F)训练主模型和卷积自校正网络。这是用公式6中的第一项和最后一项来完成的。
3)主要训练:利用全部数据(F和W)利用公式6中的目标函数对前一个模型进行微调。
在第一阶段使用一半F的原理是,如果我们使用所有F训练panc(y | x,b)模型,它将训练以几乎完美地预测该集合上的分割掩模,因此,卷积自校正网络的后续训练将只学习依赖panc(y | x,b)。为了克服这一训练问题,提出了F的后半部分来帮助自校正网络学习如何将panc(y | x,b)和p(y | x)结合起来。
4. Experiments
们将对PASCAL VOC 2012和城市景观数据集上的模型进行评估。两个数据集都包含对象分段和边界框批注。我们将完整的数据集注释分成两部分来模拟完全和半监督的设置。与[9,41]类似,性能是使用可用类的平均交超并(mIOU)来度量的。
图3:卷积自校正模型学习细化输入标签分布。子网从主模型和辅助模型接收登录,然后连接并将输出馈送到两层CNN。
训练:我们使用DeepLabv3+[9]的public Tensorflow[1]实现作为主要模型。我们使用0.007的初始学习率,从ImageNet预训练的Exception-65模型[9]训练模型30000步。对于所有其他参数,我们使用其他作者建议的标准设置。在评估时,我们对图像应用翻转和多尺度处理,如[9]。我们使用4个GPU,每个GPU有一批4个图像。
我们在所有实验中定义了以下基线:
- 辅助模型( Ancillary Model):这是辅助模型,在3.1节中介绍,预测给定图像及其对象边界框的语义分割标签。由于该模型使用了边界框信息,因此其性能有望优于其他模型。
- 无自校正( NoSelf-correction):这是使用3.2节中介绍的模型训练的主要模型。
- 线性自校正( Lin. Self-correction):这是用线性自校正训练的主要模型,如3.3节所示。
- 转换自校正(Conv. Self-correction):用3.4节中的卷积自校正训练的原始模型。
- EM固定基线(EM-fixed Baseline):由于我们的线性自校正模型来自于正则化EM模型[56],我们将我们的模型与Papandreou等人进行了比较。[41]这也是一个基于EM的模型。我们使用DeepLabv3+实现了它们的EM固定基线,以便进行公平比较。这一基线在[41]的半监督学习中取得了最好的结果。
线性自校正,α控制KL散度偏差的权重,大α有利于辅助模型,小α有利于主模型。我们探索了α的不同起始值和结束值,两者之间呈指数衰减。我们发现,对于这两个数据集,起始值α=30和最终值α=0.5表现良好。该参数设置是稳健的,因为这些值的适度变化几乎没有影响。
4.1. 帕斯卡VOC数据集
在本节中,我们将评估PASCALVOC 2012细分基准上的所有模型[16]。该数据集由1464个训练、1449个验证和1456个测试图像组成,包括20个前景对象类和一个背景类用于分割。[18]提供了9118幅训练图像的辅助数据集。然而,我们怀疑[18]的分割标签包含少量噪声。在本节中,我们将原始PASCAL VOC训练集和辅助集的并集称为训练集。我们主要在验证集上评估模型,而使用在线评估服务器只在测试集上评估一次最佳模型。
在表1中,我们展示了我们模型的不同变体在不同大小的完全监督集F中的性能。训练集中的其余示例用作W。我们从表1中观察到:
i)即使在以下情况下,预测给定图像的分割标签及其对象边界框的辅助模型也表现良好它是用一个小到200个图像的训练集训练的。这说明该模型也能为缺乏分割标签的弱集提供良好的训练信号。
ii)线性自校正模型通常比无自校正模型表现更好,支持我们的观点,即结合用于推断分割标签的主模型和辅助模型可以更好地训练主模型。
iii) 卷积自校正模型的性能相当于或优于线性自校正,同时消除了定义α调度的需要。图4示出了这些模型的输出。
表2:PASCAL VOC 2012验证和测试集的结果。最后三行报告具有相同注释的先前半监督模型的性能。
表2将我们的模型的性能与不同的基线和发布的结果进行了比较。在本实验中,我们使用1464幅图像作为F,使用9118幅来自辅助数据集的图像作为W,两种自校正模型都取得了相似的结果,并且优于其他模型。
令人惊讶的是:我们的半监督模型优于完全监督模型。我们假设这一观察有两种可能的解释。首先,这可能是由于9k辅助套件[18]中的标签噪音对Vanilla DeepLapv3+的性能产生负面影响。作为证据,图5将辅助模型的输出与ground-truth annotations进行比较,并且突出显示一些未正确标记的实例。其次,性能的提高也可能是由于标签不确定性的显式建模和自校正。为了验证这一假设,我们在最初的PASCAL VOC 2012训练集中仅对1.4K实例进行vanilla DeepLabv3+训练,并在验证集中获得68.8%的mAP。然而,如果我们在同一训练集上训练卷积自校正模型,并允许该模型使用自校正来细化地面真值标签,则得到的地图高达76.88%(包围盒顶部的卷积自校正得到75.97%的地图)。这表明,采用鲁棒损失函数和允许自校正的噪声模型可以显著提高分割模型的性能。这与自校正方法一致,自校正方法已被证明对边缘检测是有效的[66,2],并且与使用交叉熵和one-hot annotation掩模训练模型的常见分割目标相反。与我们的方法和推理非常相似,[67]使用logits来训练使用知识蒸馏技术的轻量级姿势估计模型。
不幸的是,最先进的模型仍然使用老版本的DeepLab。对于我们来说,要么使用DeepLabv3+重新实现这些方法中的大多数,要么使用旧版本重新实现我们的工作,都是不可行的。唯一的例外是EM固定基线[41]。我们使用DeepLabv3+的重新实现在验证集上达到79.25%,而最初的论文报告使用DeepLabv1的比例为64.6%。在表2的下半部分,我们记录了以前发布的结果(使用旧版本的DeepLab)。对结果的仔细检验表明,我们的工作优于以前的工作,因为我们的半监督模型优于完全监督模型,而以前的工作通常没有。
最后,比较表1和表2,我们发现,当F=200和W=10382时,我们的线性自校正模型的性能类似于使用整个数据集训练的DeepLabv3+。使用[5]中报告的标签成本,这在理论上转化为注释成本的7倍减少。
附录:相关概念
1、FCNs rely on atrous convolutions。
作者:朴素的贝叶斯
链接:https://www.zhihu.com/question/49630217/answer/269444489
来源:知乎
Atrous 卷积,就是带洞的卷积,卷积核是稀疏的,看图:
上边这个是正常卷积,尺寸=3,覆盖相邻的3个像素
上图(b)是带洞卷积,可以跳着选,隔一个加一个。
下图中第三个示例(c),就是带洞卷积。
带洞卷积减少了核的大小(减少了参数的数量,可以达到节省内存的作用。
而且带洞卷积的有效性基于一个假设:紧密相邻的像素几乎相同,全部纳入属于冗余,不如跳H(hole size)个取一个。
2、Encoder-Decoder模型?
Encoder-Decoder(编码-解码)是深度学习中非常常见的一个模型框架,比如无监督算法的auto-encoding就是用编码-解码的结构设计并训练的;比如这两年比较热的image caption的应用,就是CNN-RNN的编码-解码框架;再比如神经网络机器翻译NMT模型,往往就是LSTM-LSTM的编码-解码框架。因此,准确的说,Encoder-Decoder并不是一个具体的模型,而是一类框架。Encoder和Decoder部分可以是任意的文字,语音,图像,视频数据,模型可以采用CNN,RNN,BiRNN、LSTM、GRU等等。所以基于Encoder-Decoder,我们可以设计出各种各样的应用算法。
Encoder-Decoder框架有一个最显著的特征就是它是一个End-to-End学习的算法;本文将以文本-文本的例子作为介绍,这样的模型往往用在机器翻译中,比如将法语翻译成英语。这样的模型也被叫做 Sequence to Sequence learning[1]。所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。
参考文章:本段出自Bin的专栏blog.csdn.net/xbinworld。值得学习
现在的深度学习领域当中,通常的做法是将输入的源Sequence编码到一个中间的context当中,这个context是一个特定长度的编码(可以理解为一个向量),然后再通过这个context还原成一个输出的目标Sequence。
如果用人的思维来看,就是我们先看到源Sequence,将其读一遍,然后在我们大脑当中就记住了这个源Sequence,并且存在大脑的某一个位置上,形成我们自己的记忆(对应Context),然后我们再经过思考,将这个大脑里的东西转变成输出,然后写下来。
那么我们大脑读入的过程叫做Encoder,即将输入的东西变成我们自己的记忆,放在大脑当中,而这个记忆可以叫做Context,然后我们再根据这个Context,转化成答案写下来,这个写的过程叫做Decoder。其实就是编码-存储-解码的过程。
而对应的,大脑怎么读入(Encoder怎么工作)有一个特定的方式,怎么记忆(Context)有一种特定的形式,怎么转变成答案(Decoder怎么工作)又有一种特定的工作方式。
好了,现在我们大体了解了一个工作的流程Encoder-Decoder后,我们来介绍一个深度学习当中,最经典的Encoder-Decoder实现方式,即用RNN来实现。
在RNN Encoder-Decoder的工作当中,我们用一个RNN去模拟大脑的读入动作,用一个特定长度的特征向量去模拟我们的记忆,然后再用另外一个RNN去模拟大脑思考得到答案的动作,将三者组织起来利用就成了一个可以实现Sequence2Sequence工作的“模拟大脑”了。
而我们剩下的工作也就是如何正确的利用RNN去实现,以及如何正确且合理的组织这三个部分了。
参考:http://blog.csdn.net/mebiuw/article/details/53341404
3、EM算法——最大期望算法(Expectation-maximization algorithm)
最大期望算法(Expectation-maximization algorithm,又译期望最大化算法)在统计中被用于寻找,依赖于不可观察的隐性变量的概率模型中,参数的最大似然估计。
在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。
历史
最大期望值算法由 Arthur Dempster,Nan Laird和Donald Rubin在他们1977年发表的经典论文中提出。他们指出此方法之前其实已经被很多作者"在他们特定的研究领域中多次提出过"。
EM简单教程
EM是一个在已知部分相关变量的情况下,估计未知变量的迭代技术。EM的算法流程如下:
- 初始化分布参数
- 重复直到收敛:
- E步骤:估计未知参数的期望值,给出当前的参数估计。
- M步骤:重新估计分布参数,以使得数据的似然性最大,给出未知变量的期望估计。
应用于缺失值。
最大期望过程说明
我们用 表示能够观察到的不完整的变量值,用 表示无法观察到的变量值,这样 和 一起组成了完整的数据。 可能是实际测量丢失的数据,也可能是能够简化问题的隐藏变量,如果它的值能够知道的话。例如,在混合模型(MixtureModel)中,如果“产生”样本的混合元素成分已知的话最大似然公式将变得更加便利(参见下面的例子)。
估计无法观测的数据
让 代表矢量 : 定义的参数的全部数据的概率分布(连续情况下)或者概率聚类函数(离散情况下),那么从这个函数就可以得到全部数据的最大似然值,另外,在给定的观察到的数据条件下未知数据的条件分布可以表示为:
参考博文:如何感性地理解EM算法?https://www.jianshu.com/p/1121509ac1dc
4、常用数学符号读法大全
大写 | 小写 | 英文注音 | 国际音标注音 | 中文注音 |
Α | α | alpha | alfa | 阿耳法 |
Β | β | beta | beta | 贝塔 |
Γ | γ | gamma | gamma | 伽马 |
Δ | δ | deta | delta | 德耳塔 |
Ε | ε | epsilon | epsilon | 艾普西隆 |
Ζ | ζ | zeta | zeta | 截塔 |
Η | η | eta | eta | 艾塔 |
Θ | θ | theta | θita | 西塔 |
Ι | ι | iota | iota | 约塔 |
Κ | κ | kappa | kappa | 卡帕 |
∧ | λ | lambda | lambda | 兰姆达 |
Μ | μ | mu | miu | 缪 |
Ν | ν | nu | niu | 纽 |
Ξ | ξ | xi | ksi | 可塞 |
Ο | ο | omicron | omikron | 奥密可戎 |
∏ | π | pi | pai | 派 |
Ρ | ρ | rho | rou | 柔 |
∑ | σ | sigma | sigma | 西格马 |
Τ | τ | tau | tau | 套 |
Υ | υ | upsilon | jupsilon | 衣普西隆 |
Φ | φ | phi | fai | 斐 |
Χ | χ | chi | khai | 喜 |
Ψ | ψ | psi | psai | 普西 |
Ω | ω | omega | omiga | 欧米伽 |
5、element wise multiplication
例如表V⊙W=S 示对每一个输入向量V 乘以一个给定的“权重”W 向量。换句话说,就是通过一个乘子对数据集的每一列进行缩放。这个转换可以表示为如下的形式:
6、【计算机视觉】深入理解Attention机制
http://www.jobplus.com.cn/article/getArticleDetail/48492博文讲的很好。
7、KL-divergence
博文来源:https://blog.csdn.net/liudingbobo/article/details/84099785
KL-divergence又叫相对熵(relative entropy),衡量两个概率分布之间的不同程度。作用在于(不大清楚):
- Characterizing the relative (Shannon) entropy in information systems.
描述信息系统中的相对熵。 - Characterizing randomness in continuous time-series.
描述连续时间序列的随机性。 - Characterizing information gain when comparing statistical models of inference.
在比较推理的统计模型时,描述信息增益。
最简单的情况:当KL-divergence为0时,两个分布完全相同。各种情况都用得到,应用统计学、流体力学、神经科学、篮球分析和机器学习。
但是现在的问题是,我知道他能表示两个概率分布之间的距离(不同的程度),但是我不知道公式是怎么推导的,怎么就得到了这样的公式?(如果他们是不连续的,就可以得到下面的公式,如果是连续的,就可以把求和符号变成积分符号)
一些简单的例子