从Learning to Segment Every Thing说起

原文地址:https://arxiv.org/pdf/1711.10370.pdf

这是何恺明老师发表于CVPR2018的一篇优秀paper。

先简单回顾一下语义分割领域之前的工作

那么什么是语义分割?

语义分割其实就是对图片的每个像素都做分类。其中,较为重要的语义分割数据集有: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使用反卷积(可学习)取代简单的线性插值算法进行上采样。

那么什么是反卷积呢?

https://blog.csdn.net/itleaks/article/details/80336825 这篇博客及其附带链接会详细告诉你。

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

谷歌——DeepLab v1

Semantic image segmentation with deep convolutional nets and fully connected CRFs

DeepLab是结合了深度卷积神经网络(DCNNs)和概率图模型(DenseCRFs)的方法。在实验中发现DCNNs做语义分割时精准度不够的问题,根本原因是DCNNs的高级特征的平移不变性(即高层次特征映射)。DeepLab解决这一问题的方法是通过将DCNNs层的响应和完全连接的条件随机场(CRF)结合。同时模型创新性的将Hole(即空洞卷积)算法应用到DCNNs模型上,在现代GPU上运行速度达到了8FPS。

相比于传统的视觉算法(SIFT或HOG),DCNN以其end-to-end(端到端)方式获得了很好的效果。这样的成功部分可以归功于DCNN对图像转换的平移不变性,这根本是源于重复的池化和下采样组合层。平移不变性增强了对数据分层抽象的能力,但同时可能会阻碍低级视觉任务,例如姿态估计、语义分割等,在这些任务中我们倾向于精确的定位而不是抽象的空间关系。

DCNN在图像标记任务中存在两个技术障碍:

  • 信号下采样;

  • 空间不敏感。

第一个问题涉及到:在DCNN中重复最大池化和下采样带来的分辨率下降问题,分辨率的下降会丢失细节。DeepLab是采用的atrous(带孔)算法扩展感受野,获取更多的上下文信息。

第二个问题涉及到:分类器获取以对象中心的决策是需要空间变换的不变性,这天然的限制了DCNN的定位精度,DeepLab采用完全连接的条件随机场(DenseCRF)提高模型捕获细节的能力。

主要贡献:

  • 速度:带atrous算法的DCNN可以保持8FPS的速度,全连接CRF平均推断需要0.5s;

  • 准确:在PASCAL语义分割挑战中获得了第二的成绩;

  • 简单:DeepLab是由两个非常成熟的模块(DCNN和CRFs)级联而成。

相关工作:

DeepLab系统应用在语义分割任务上,目的是做逐像素分类的,这与使用两阶段的DCNN方法形成鲜明对比(指R-CNN等系列的目标检测工作),R-CNN系列的做法是原先图片上获取候选区域,再送到DCNN中获取分割建议,重新排列取结果。虽然这种方法明确地尝试处理前段分割算法的本质,但在仍没有明确的利用DCNN的预测图。

我们的系统与其他先进模型的主要区别在于DenseCRFs和DCNN的结合。是将每个像素视为CRF节点,利用远程依赖关系,并使用CRF推理直接优化DCNN的损失函数。Koltun(2011)的工作表明完全连接的CRF在语义分割下非常有效。

也有其他组采取非常相似的方向,将DCNN和密集的CRF结合起来,我们已经更新提出了DeepLab系统(指的是DeepLabV2)。

密集分类下的卷积神经网络

这里先描述一下DCNN如何设计,调整VGG16模型,转为一个可以有效提取特征的语义分割系统。具体来说,先将VGG16的FC层转为卷积层,模型变为全卷积的方式,在图像的原始分辨率上产生非常稀疏的计算检测分数(步幅32,步幅=输入尺寸/输出特征尺寸步幅),为了以更密集(步幅8)的计算得分,我们在最后的两个最大池化层不下采样(padding到原大小),再通过2或4的采样率的空洞卷积对特征图做采样扩大感受野,缩小步幅。

空洞卷积的使用

简单介绍下空洞卷积在卷积神经网络的使用(在DeepLabv3中有更详细的讨论)。在1-D的情况下,我们扩大输入核元素之间的步长,如下图Inputstride:

如果不是很直观,看下面的在二维图像上应用空洞卷积:

蓝色部分是输入:7×77×7的图像;

青色部分是输出:3×33×3的图像;

空洞卷积核:3×33×3 采样率(扩展率)为2 无padding。

Deeplab v2 安装及调试全过程

1、概述

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

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

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

猜你喜欢

转载自www.cnblogs.com/ariel-dreamland/p/10569968.html
今日推荐