Few-shot Segmentation 论文阅读总结

 

目录

 

 

One-shot/Few-shot segmentation一般任务设置

paper 1:One-Shot Learning for Semantic Segmentation                     BMVC 2017

paper 2 : CONDITIONAL NETWORKS FOR FEW-SHOT SEMANTIC SEGMENTATION  ICLR 2018

paper 3:SG-One: Similarity Guidance Network for One-Shot Semantic Segmentation   

paper 4: PANet: Few-Shot Image Semantic Segmentation with Prototype Alignment       ICCV2019

相关论文


 

One-shot/Few-shot segmentation一般任务设置


  • 在测试任务上:通过利用很少的具有分割标签的support set 来获得query set上目标的分割结果;所以说对于query set 和 support set 两者的要求就是类别是相同的;
  • 训练任务的要求:训练任务的support set与query set都需要给出分割的mask, support  set 的mask是用于提供指导信息;query set mask用于计算预测损失,用于反向传播更新网络参数;
  • 训练任务与测试任务的要求:训练任务中的类别与测试任务中的类别需要是不同。

从问题设置角度来说,one-shot/few-shot segmentation 的终极目的是利用support 中的K个训练图像对来“学习”一个模型,使得该模型能对训练图像对中出现的类别的新样本能够实现分割。至于“学习”为什么加引号后面再说;首先乍一看,one-shot/few-shot 可真厉害,就用几个训练样本"学习"一下就可以对新样本进行分割;不过还是那句话 No free lunch ! 为了实现小样本的学习,前提是我们需要一个更大样本库;具体流程描述如下:

训练的时候,我们构建一系列训练任务,每个训练任务都包含K个图像对,每个图像对是指训练图像与其对应的mask,通过构建很多的训练任务来对模型进行训练;测试过程其实就是前面所说的one-shot/few-shot segmentation的终极目的。所以说,测试过程中support set 中图像的目的并不是为了学习,因为网络参数在训练过程结束的时候已经固定了,更准确来说它们应该是起到一种指导的作用;来指导网络利用已学得的知识进行"举一反三"。这就好比让你在做一种新类型的题目前先给你看一遍参考答案的解题过程;然后让你学会做这种类型的题目。这时候又突然想到这与迁移学习的区别,同样借这个比方来解释一下迁移学习,迁移学习就是在做题目前你已经刷题无数,但是恰好现在的题目没见过,咋办,重新找和现在已有题目相似的题目重刷一遍,更新知识库,再去做题。所以当前的深度学习大部分情况下只能从头开始训练。使用Fine-tune来学习新任务,而Meta Learning 就是研究如何让神经网络很好的利用以往的知识,使得能根据新任务的调整自己。


paper 1:One-Shot Learning for Semantic Segmentation                     BMVC 2017

问题设置:

 

Few-shot Segmentation 论文阅读总结_第1张图片

 

Few-shot Segmentation 论文阅读总结_第2张图片

 

网络结构

Few-shot Segmentation 论文阅读总结_第3张图片

本文首次提出双分支的网络用于few-shot segmentation,使用conditioning branch直接预测segmentation branch的权重参数,对segmentation branch提取到的特征进行加权融合,经过上采样后得到分割结果。每个网络分支的细节如下:

conditioning branch:

  • 输入将原始三通道彩色图像与其中目标对应的mask相乘得到,这样就保证了输入只包含目标的信息。

  • 输出的时候,为了是参数量与segmentation branch的特征图的通道数相对应,采用weight hashing的策略,将输出的1000维向量映射为4097维(w:4096, b:1),论文中是把这种映射机制建模成固定权重参数的全连接层来实现的。这种策略不太了解,论文的说法是这种映射机制是为了避免全连接层引入大量参数导致的过拟合问题。下图是weight hashing的操作示意图。

 

Few-shot Segmentation 论文阅读总结_第4张图片

segmentation branch:

  • 采用FCN-32s结构,对query image 进行特征提取,将其与 conditioning branch所得参数进行点乘得到分割结果。

 

实验设置与结果:

  • 为了测试 k-shot Image Segmentation的结果,论文构建了一个数据集PASCAL-5i,其是从PASCALVOC 2012数据集(共20类)随机采样得来的。训练任务从15个类中进行采样,测试任务从剩下的5中采样。

  • 论文采用4折交叉验证获得实验结果。具体实验类别设置与结果如下表所示:

 

Few-shot Segmentation 论文阅读总结_第5张图片


paper 2 : CONDITIONAL NETWORKS FOR FEW-SHOT SEMANTIC SEGMENTATION  ICLR 2018

 

文章的主要比较惊奇的一点是仅对原始图像做一些稀疏的标注(目标位置上点几个关键点,背景位置上点几个关键点)就却能够实现对目标的像素级的分割。文章比较简短,首先看网络结构图

Few-shot Segmentation 论文阅读总结_第6张图片

网络结构和BMVC那篇paper设置类似,也是采用双分支结构,将标注信息与原始图像concate后输入conditioning branch得到输入图像的embedding。利用segmentation branch对qurey image进行特征提取,并将结果与conditioning branch得到的embedding进行concate,再进行像素级分割。官方解释如下:

 

Few-shot Segmentation 论文阅读总结_第7张图片

训练过程:

 

Few-shot Segmentation 论文阅读总结_第8张图片


paper 3:SG-One: Similarity Guidance Network for One-Shot Semantic Segmentation   

问题设置:

Few-shot Segmentation 论文阅读总结_第9张图片

Few-shot Segmentation 论文阅读总结_第10张图片

 

个人理解就是利用 L_train 数据训练模型(当然在训练的时候也会分support set 与query set),在测试的时候,利用 L_support 中含标签数据来预测 L_test 中同类别的无标签数据。所以对L_train数据与 L_support数据的要求是两者类别不可以有重合。

训练任务的流程:

Few-shot Segmentation 论文阅读总结_第11张图片

 

网络包含一个主干网络Stem(代表的是VGG-16的前3个Block)和两个分支:Guidance Branch 和 Segmentation Branch,需要注意的是两个分支共用了三个卷积块 ,个人的理解是,如果两个分支完全独立,那么Guidance Branch产生的指导就会一成不变;这就失去了意义,作者在论文最后的消融实验中做了相关的分析与实验;与Segmentation Branch 产生交互后就可以在优化分割损失的同时对引导的特征图进行优化,使之匹配相应的真实mask. 网络在训练的时候加载了在ILSVRC数据集上预训练的权重。

测试任务的流程:

 

Few-shot Segmentation 论文阅读总结_第12张图片

主要的创新点:

  1. 提出使用masked average pooling 来提取 support set 的中目标的表征向量;

  2. 采用余弦相似度来度量 query set 的表征向量与support set 的表征向量之间距离,用于指导query set的分割;

为什么masked average pooling会有用? :

 

Few-shot Segmentation 论文阅读总结_第13张图片

Few-shot Segmentation 论文阅读总结_第14张图片

解释如下:全卷积网络(FCN)能够保留输入图像的中每个像素相对位置;所以通过将二值mask与提取到的特征图相乘就可以完全保留目标的特征信息,排除掉背景等无关类别的特征。


paper 4: PANet: Few-Shot Image Semantic Segmentation with Prototype Alignment       ICCV2019

 

问题设置:

 

网络结构:

Few-shot Segmentation 论文阅读总结_第15张图片

 

训练方式:

Few-shot Segmentation 论文阅读总结_第16张图片

 

Support set :用于计算每个类别的原型;原型计算方式:mask average pooling,计算方法如下:

 

Few-shot Segmentation 论文阅读总结_第17张图片

 

Query set :用于测试分割模型;通过计算 Query set 的 feature map上每个像素位置与Support set上得到的原型的距离,距离最近的原型对应的类别作为feature map当前像素点位置的类别;计算方式如下:

Few-shot Segmentation 论文阅读总结_第18张图片

Few-shot Segmentation 论文阅读总结_第19张图片

根据Query set 的分割结果计算其与对应的ground-truth之间的损失,用于更新原型:

 

Few-shot Segmentation 论文阅读总结_第20张图片

 

训练任务测试任务的流程:

Few-shot Segmentation 论文阅读总结_第21张图片

对于测试任务,其仍然需要support set 具有少量标签,不过只需要进行前向传播即可,不需要对原型进行修改,然后利用Query set 进行预测。


先写到这里后面再看下面其他的相关文章。 

相关论文:

 
  1. One-shot learning for semantic segmentation, BMVC 2017
  2. Conditional networks for few-shot semantic segmentation,  ICLR 2018  Workshop
  3. Few-Shot Segmentation Propagation with Guided Networks, preprint
  4. Few-Shot Semantic Segmentation with Prototype Learning,  BMVC  2018
  5. One-Shot Segmentation in Clutter,  ICML 2018
  6. SG-One: Similarity Guidance Network for One-Shot Semantic Segmentation  preprint 2018
  7.  PANet: Few-Shot Image Semantic Segmentation with Prototype Alignment     ICCV 2019
  8. Attention-based Multi-Context Guiding for Few-Shot Semantic Segmentation, AAAI 2019
  9. CANet: Class-Agnostic Segmentation Networks with Iterative Refinement and Attentive Few-Shot Learning, CVPR 2019
  10. Prototype Mixture Models for Few-shot Semantic Segmentation,           ECCV2020
  11. Part-aware Prototype Network for Few-shot Semantic Segmentation,    ECCV2020
  12. Few-Shot Semantic Segmentation with Democratic Attention Networks,ECCV2020

 

你可能感兴趣的:(语义分割)