分割算法总结

栏目: 数据库 · 发布时间: 6年前

内容简介:周末应该是一个好好休息的时间,但是一定会有在默默努力科研的你,由于最近是开学季,很多关注的朋友一直会问“计算机视觉战队平台有基础性的内容吗?”,今天我和大家说一次,我们平台之前有推送很多基础的知识,有兴趣的或者是刚刚接触CV&DL的你,可以去历史消息阅读,在这也感谢所有一直关注和支持我们的您!今天其实是一个重要的日子!不告诉大家什么事情,但是我会把自己喜悦的心情与大家分享,接下来就和大家说说目标分割的事吧~

周末应该是一个好好休息的时间,但是一定会有在默默努力科研的你,由于最近是开学季,很多关注的朋友一直会问“计算机视觉战队平台有基础性的内容吗?”,今天我和大家说一次,我们平台之前有推送很多基础的知识,有兴趣的或者是刚刚接触CV&DL的你,可以去历史消息阅读,在这也感谢所有一直关注和支持我们的您!

今天其实是一个重要的日子!不告诉大家什么事情,但是我会把自己喜悦的心情与大家分享,接下来就和大家说说目标分割的事吧~

分割算法总结

分割其实在很多领域是非常重要的研究对象,现在也有很多研究者在该领域大展身手,比如何大神,一直在该方面的做的最优秀之一,今天就基于他CVPR 2018的一篇优秀Paper说起。

01 概述

大多数目标实例分割的方法都要求所有的训练样本带有segmentation masks 。这种要求就使得注释新类别的开销很大,并且将实例分段模型限制为∼100注释良好的类。

本次技术目的是提出一种新的 部分监督的训练模式 ,该模式具有一种新的权重传递函数, 结合一种新的权重传递函数,可以在一大组类别上进行训练实例分割模型,所有这些类别都有框注释,但只有一小部分有 mask 注释。 这些设计允许我们训练MASK R-CNN,使用VisualGenome数据集的框注释和COCO数据集中80个类的 mask 注释来检测和分割3000种视觉概念。

最终,在COCO数据集的对照研究中评估了提出的方法。这项工作是迈向对视觉世界有广泛理解的实例分割模型的第一步。

在正式细说本次分割技术之前,还是简单说下分割的事,有一个简单的引言和大家分享下,没有兴趣的您可以直接跳过,阅读关键技术部分,谢谢!

目标检测器已经变得更加精确,并获得了重要的新功能。最令人兴奋的是能够预测每个检测到的目标前景分割mask,这是一个称为instance segmentation 的任务。在实践中,典型的 instance segmentation 系统仅限于仅包含大约100个目标类别的广阔视觉世界的一小部分。

  • 会有很多人问: 什么是语义分割?

语义分割其实就是对图片的每个像素都做分类。其中,较为重要的语义分割数据集有: VOC2012  以及  MSCOCO  。

  • 比较流行经典的几种方法

传统机器学习方法:如像素级的决策树分类,参考 TextonForest 以及 Random Forest based classifiers 。再有就是深度学习方法。

深度学习 最初流行的分割方法是,打补丁式的分类方法 (patch classification) 。逐像素地抽取周围像素对中心像素进行分类。由于当时的卷积网络末端都使用全连接层 (full connected layers) ,所以只能使用这种逐像素的分割方法。

但是到了2014年,来自伯克利的 Fully Convolutional Networks(FCN) 【点击蓝色,有链接直接可以阅读全卷积网络相关资料】 卷积网络,去掉了末端的全连接层。随后的语义分割模型基本上都采用了这种结构。除了全连接层,语义分割另一个重要的问题是池化层。池化层能进一步提取抽象特征增加感受域,但是丢弃了像素的位置信息。但是语义分割需要类别标签和原图像对齐,因此需要从新引入像素的位置信息。有两种不同的架构可以解决此像素定位问题。

  • 第一种是 编码-译码架构 。编码过程通过池化层逐渐减少位置信息、抽取抽象特征;译码过程逐渐恢复位置信息。一般译码与编码间有直接的连接。该类架构中U-net 是最流行的。

  • 第二种是 膨胀卷积 (dilated convolutions) 【这个核心技术值得去阅读学习】 ,抛弃了池化层。使用的卷积核如下图所示:

分割算法总结

居然都说到这里,那我继续来简单说一些相关的文献吧。

按时间顺序总结,大概我能总结9篇paper,看语义分割的结构是如何演变的。分别有 FCN  、 SegNet  U-Net Dilated Convolutions  、 DeepLab (v1 & v2)  、 RefineNet  PSPNet  、 Large Kernel Matters  、 DeepLab v3  。

参考文章:(“计算机视觉战队”微信公众平台推送)

1)FCN 2014年

分割算法总结

主要的贡献:

  • 为语义分割引入了 端到端 的 卷积网络,并流行开来

  • 重新利用 ImageNet 的预训练网络用于语义分割

  • 使用 反卷积层 进行上采样

  • 引入跳跃连接来改善上采样粗糙的像素定位

比较重要的发现是,分类网络中的全连接层可以看作对输入的全域卷积操作,这种转换能使计算更为高效,并且能重新利用ImageNet的预训练网络。经过多层卷积及池化操作后,需要进行上采样,FCN使用反卷积(可学习)取代简单的线性插值算法进行上采样。

2)SegNet 2015年

分割算法总结

编码-译码架构

主要贡献: 将池化层结果应用到译码过程。引入了更多的编码信息。使用的是pooling indices而不是直接复制特征,只是将编码过程中 pool 的位置记下来,在 uppooling 是使用该信息进行 pooling 。

3)U-Net  2015 

U-Net有更规整的网络结构,通过将编码器的每层结果拼接到译码器中得到更好的结果。

分割算法总结

4)Dilated Convolutions 2015年

通过膨胀卷积操作聚合多尺度的信息

分割算法总结

主要贡献:

  • 使用膨胀卷积

  • 提出 ’context module‘ ,用来聚合多尺度的信息

池化在分类网络中能够扩大感知域,同样降低了分辨率,所以提出了膨胀卷积层。

分割算法总结

5)DeepLab (v1 & v2)  2014 & 2016

“计算机视觉战队”微信公众平台推送过,可以查阅。

6)RefineNet 2016年

分割算法总结

分割算法总结

主要贡献:

  • 精心设计的译码模块

  • 所有模块遵循残余连接设计

膨胀卷积有几个缺点,如 计算量大、需要大量内存 。这篇文章采用编码-译码架构。编码部分是 ResNet-101 模块。译码采用RefineNet模块,该模块融合了编码模块的高分辨率特征和前一个RefineNet模块的抽象特征。每个RefineNet模块接收多个不同分辨率特征,并融合。

7)PSPNet 2016年

Pyramid Scene Parsing Network 金字塔场景解析网络

分割算法总结

主要贡献:

  • 提出了金字塔池化模块来聚合图片信息

  • 使用附加的损失函数

金字塔池化模块通过应用大核心池化层来提高感知域。使用膨胀卷积来修改ResNet网,并增加了金字塔池化模块。金字塔池化模块对ResNet输出的特征进行不同规模的池化操作,并作上采样后,拼接起来,最后得到结果。

本文提出的网络结构简单来说就是将DeepLab(不完全一样)aspp之前的feature map pooling了四种尺度之后将5种feature map concat到一起经过卷积最后进行prediction的过程。 

8)Large Kernel Matters 2017

分割算法总结

主要贡献:

  • 提出了使用大卷积核的编码-译码架构

理论上更深的ResNet能有很大的感知域,但研究表明实际上提取的信息来自很小的范围,因此使用大核来扩大感知域。但是核越大,计算量越大,因此将k x k的卷积近似转换为1 x k + k x 1和k x 1 + 1 x k卷积的和,称为 GCN

本文的架构是:使用ResNet作为编译器,而GCN和反卷积作为译码器。还使用了名为Boundary Refinement的残余模块。

9)DeepLab v3 2017

分割算法总结

主要贡献:

  • 改进 ASPP

  • 串行部署 ASPP 的模块

和DeepLab v2一样,将膨胀卷积应用于ResNet中。改进的ASPP指的是将不同膨胀率的膨胀卷积结果拼接起来,并使用了BN 。与 Dilated convolutions (2015) 不一样的是,v3直接对中间的特征图进行膨胀卷积,而不是在最后做。

小总结:

分割算法总结

现在把之前较为典型的简单介绍了一遍,现在接下来我们继续说今天这个分割技术。


02 学习分割Every Thing

——— ——— ———

C是一组目标类别,希望为其训练一个 instance segmentation 模型。大多数现有方法假设C中的所有训练样本都带有 instance mask

于是,本次放宽了这一要求,而是假设C=A∪B,其中来自A中类别的样本有mask,而B中的只有边界框。由于B类的样本是弱标记的w.r.t.目标任务(instance segmentation),将强标签和弱标签组合的训练作为一个部分监督的学习问题。注意到可以很容易地将instance mask转换为边界框,假设边界框注释也适用于A中的类。

给出了一个包含边界框检测组件和mask预测组件的MASK R-CNN  instance segmentation 模型,提出了MaskX R-CNN方法,该方法将特定类别的信息从模型的边界框检测器转移到其 instance mask 预测器。

  • 权重传递来Mask预测

本方法是建立在Mask R-CNN,因为它是一个简单的 instance segmentation 模型,也取得了最先进的结果。简单地说,MASK R-CNN可以被看作是一个更快的R-CNN边界框检测模型,它有一个附加的mask分支,即一个小的全卷积网络(FCN)。

在推理时,将mask分支应用于每个检测到的对象,以预测 instance-level的前景分割mask。在训练过程中,mask分支与Faster R-CNN中的标准边界框head并行训练。在Mask R-CNN中,边界框分支中的最后一层和mask分支中的最后一层都包含特定类别的参数,这些参数分别用于对每个类别执行边界框分类和 instance mask 预测。与独立学习类别特定的包围框参数和mask参数不同,我们建议使用一个通用的、与类别无关的权重传递函数来预测一个类别的mask参数,该函数可以作为整个模型的一部分进行联合训练。

具体如下如所示:

分割算法总结

  • Training

在训练期间,假设对于A和B两组类, instance mask 注释仅适用于A中的类,而不适用于B中的类,而A和B中的所有类都有可用的边界框注释。如上图所示,我们使用A∪B中所有类的标准框检测损失来训练边界框head,但只训练mask head和权重传递函数T(·),在A类中使用mask loss,考虑到这些损失,我们探索了两种不同的训练过程: 分阶段训练 端到端训练

分阶段训练

由于Mask R-CNN可以被看作是用mask head增强Faster R-CNN,一种可能的训练策略是将训练过程分为检测训练(第一阶段)和分割训练(第二阶段)。

在第一阶段,只使用A∪B中类的边界框注释来训练一个Faster R-cnn,然后在第二阶段训练附加的 mask head ,同时保持卷积特征和边界框head的固定。这样,每个c类的类特定检测权重wc可以被看作是在训练第二阶段时不需要更新的固定类emdet层叠向量。

该方法具有很好的实用价值,使我们可以对边界框检测模型进行一次训练,然后对权重传递函数的设计方案进行快速评估。它也有缺点,这是我们接下来要讨论的。

端到端联合训练

结果表明,对于MASK R-CNN来说,多任务训练比单独训练更能提高训练效果。上述分阶段训练机制将检测训练和分割训练分开,可能导致性能低下。

因此,我们也希望以一种端到端的方式,联合训练边界框head和mask head。原则上,可以直接使用A∪B中类的box损失和A中类的mask loss来进行反向传播训练,但是,这可能导致A组和B组之间的类特定检测权重Wc的差异,因为只有c∈A的Wc会通过权重传递函数T(·)从mask loss得到梯度。

我们希望Wc在A和B之间是均匀的,这样在A上训练的预测Wc=T(Wc;θ)可以更好地推广到B。

03 实验

——

表1 Ablation on input to T

分割算法总结

表2  Ablation on the structure of  T

分割算法总结

表3 Impact of the MLP mask branch

分割算法总结

表4 Ablation on the training strategy

分割算法总结

分割算法总结

Each point corresponds to our method on a random  A / B split of COCO classes.

效果图

分割算法总结

Mask predictions from the class-agnostic baseline (top row) vs. our MaskX R-CNN approach (bottom row). Green boxes are classes in set A while the red boxes are classes in set B. The left 2 columns are A = {voc} and the right 2 columns are A = {non-voc}.

分割算法总结

分割算法总结

Example mask predictions from our MaskX R-CNN on 3000 classes in Visual Genome. The green boxes are the 80 classes that overlap with COCO (set A with mask training data) while the red boxes are the remaining 2920 classes not in COCO (set B without mask training data). It can be seen that our model generates reasonable mask predictions on many classes in set B. See §5 for details.

如果想加入我们“ 计算机视觉战队 ”,请扫二维码加入学习群,我们一起学习进步,探索领域中更深奥更有趣的知识!

分割算法总结


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从Python开始学编程

从Python开始学编程

Vamei / 电子工业出版社 / 2016-11-24 / CNY 49.00

改编自Vamei博客的《Python快速教程》。本书以Python为样本,不仅介绍了编程的基本概念,还着重讲解编程语言的主流范式:面向过程、面向对象、面向函数。读者不仅可以轻松学会Python,以后再学习其他编程语言时也会更加容易。一起来看看 《从Python开始学编程》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码