按时间顺序总结paper,看语义分割的结构是如何演变的。分别有FCN 、SegNet 、Dilated Convolutions 、DeepLab (v1 & v2) 、RefineNet 、PSPNet 、Large Kernel Matters 、DeepLab v3、DeepLab v3+ …
一、大礼包
语义分割:对图片的每个像素都做分类。
较为重要的语义分割数据集有:VOC2012 以及 MSCOCO 。
语意分割基本去除末端的全连接层。
池化层问题:池化层能进一步提取抽象特征增加感受域,但是丢弃了像素的位置信息。语意分割需要从新引入像素的位置信息,2个解决方案:
- 编码-译码架构:编码过程通过池化层逐渐减少位置信息、抽取抽象特征;译码过程逐渐恢复位置信息。一般译码与编码间有直接的连接。该类架构中U-net (2015.05)是最流行的。
- 膨胀卷积 ( dilated convolutions ) :抛弃了池化层。使用的卷积核如下图。
(2012.10)条件随机场-CRF:Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials
定义:CRF即条件随机场(Conditional Random Fields),是在给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,它是一种判别式的概率无向图模型,既然是判别式,那就是对条件概率分布建模。
用来后处理(不参与训练): 经常用来提高分割的精确度。后处理利用图像的光感强度(可理解为亮度),将周围强度相近的像素分为同一类。测试时对特征提取后得到的feature map进行双线性插值,恢复到原图尺寸,然后再进行CRF处理。
?contributions:
- 在为一张照片分类时,我们必须将与它相邻的照片的标签信息考虑进来。
●(2014.11)FCN:Fully Convolutional Networks for Semantic Segmentation
?contributions:
- 为语义分割引入了 端到端 的全卷积网络,并流行开来,去掉了末端的全连接层
- 重新利用 ImageNet 的预训练网络用于语义分割
- 使用 反卷积层 进行上采样
- 引入跳跃连接来改善上采样粗糙的像素定位(下图所示)
优点:
- 可以接受任意大小的输入图像,而不用要求所有的训练图像和测试图像具有同样的尺寸
- 更加高效,因为避免了由于使用像素块而带来的重复存储和计算卷积的问题。
缺点:
- 结果还是不够精细。对图像中的细节不敏感。
- 训练比较麻烦,需要训练三次才能够得到FCN-8s,
- 没有充分考虑像素与像素之间的关系。
●(2015.05)U-Net: Convolutional Networks for Biomedical Image Segmentation
?contributions:
- U-Net 有更规整的网络结构,通过将编码器的每层卷积结果拼接到译码器中得到更好的结果。
- 可以对任意形状大小的图片进行卷积操作
优点:
- Unet只需要一次训练(和FCN相比)
●(2015.11)SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
?contributions:
- 将池化层结果应用到译码过程。引入了更多的编码信息。使用的是pooling indices而不是直接复制特征,只是将编码过程中 pool 的位置记下来,在 uppooling 是使用该信息进行 pooling 。改善了分割分辨率。
优点:
- 仅在训练好的模型上进行前向计算便可得到平滑的像素级预测;
- 网络层数的加深有助于利用更大的context来进行预测;
- 可以方便的查看任意层特征激活的影响。
- FCN网络仅仅复制了编码器特征,而Segnet网络复制了最大池化指数。这使得在内存使用上,SegNet比FCN更为高效。
缺点:
- 基准分值还不能满足可实际使用的需求。
●(2015)DeconvNet:Learning Deconvolution Network for Semantic Segmentation
?contributions:
- 和SegNet的encoder部分是一样的,只不过DeconvNet后面添加了两个全连接层。
- 和SegNetupsampling基本上一致,就是需要根据之前pooling时的位置把feature map的值映射到新的feature map上,unpooling 之后需要接一个反卷积层。
FCN、U-Net、SegNet、DeconvNet的相同点与不同点总结:
可以看出,这些网络的结构都是非常相似的,都是基于encoder-decoder结构的,只不过说法不同,前面是一些卷积层,加上池化层,后面的decoder其实就是进行upsampling,这些网络的最主要区别就是upsampling的不同.
- FCN进行upsampling的方法就是对feature map进行反卷积,然后和高分辨率层的feature map相加.
- Unet进行upsampling的方法和FCN一样,只需要训练一次。
- DeconvNet进行upsampling的方法就是进行unpooling,就是需要根据之前pooling时的位置把feature
map的值映射到新的feature map上,unpooling 之后需要接一个反卷积层.
- SegNet进行upsampling的方法和DeconvNet一样,少了两个全连接层。
●(2015.11)Dilated Convolutions:Multi-Scale Context Aggregation by Dilated Convolutions
空洞卷积(atrous convolutions)又名扩张卷积(dilated convolutions)
?contributions:
- 通过膨胀卷积操作聚合多尺度的信息
- 提出 ’context module‘ ,用来聚合多尺度的信息
- 不通过pooling也能有较大的感受野看到更多的信息
优点:
- 池化在分类网络中能够扩大感知域,同样降低了分辨率。
- 能够极大的扩大感知域同时不减小空间维度。
- 在相同的计算条件下,空洞卷积提供了更大的感受野。
缺点:
(a)原始的 3×3卷积,1-dilated,感受野为 3×3;
(b)在(a)的基础上进行 3×3卷积,2-dilated,感受野为 7×7;
(c)在(b)的基础上进行 3×3卷积,4-dilated,感受野为 15×15;
由于padding和卷积的stride=1,卷积前后feature map大小可以保持不变,但每个元素的感受野指数增大。
●(2014.12)DeepLab v1
动机:在实验中发现DCNNs做语义分割时精准度不够的问题,根本原因是DCNNs的高级特征的平移不变性(即高层次特征映射)(在最后一层局部信息不足)
?contributions:
- 结合了深度卷积神经网络(DCNNs)和概率图模型(DenseCRFs)
- 引入空洞卷积,后续卷积层的卷积核改为了空洞卷积(扩大感受野,缩小步幅)
- VGG16的全连接层(FC层)转为卷积层(步幅32,步幅=输入尺寸/输出特征尺寸)
- 最后的两个池化层去掉了下采样(目标步幅8)
- 在ImageNet上预训练的VGG16权重上做fine-tune(迁移学习)
优点:
- 相对于传统,实现端到端
- 使用(Atrous convolution),解决了由于下采样导致的分辨率下降
- 使用(CRFs),解决了对空间不敏感导致部分细节不太好的问题
缺点:
- 虽然采用了空洞卷积在DCNN里,但是论文主要的侧重点是后面定位所采用的全连接CRFs
●(2016.06)DeepLab v2
动机:第一个是多尺度上存在的目标;第二个是由于DCNN内在的不变性造成的局部精度的下降。所谓的多尺度问题指的是同一尺度下不同的目标的响应不同,较小的目标在大的尺度下才方便提取特征,而较大的目标在较小的尺度下才能提取全局信息,这就是一个多尺度的矛盾。
?contributions:
- 着重强调Atrous的重要性
- 设计ASPP利用多尺度进行分类
优点:
- 在v1的基础上增加了一个多视野域。
- 引入基于洞的空间金字塔ASPP(atrous spatial pyramid pooling)
- 基础层由VGG16转为ResNet
缺点:
- 针对多尺度下目标的分割问题,同时重新思考了空洞卷积(相对于V3)???这是什么缺点???
●(2016.11)RefineNet
?contributions:
- 精心设计的译码模块(RefineNet),这种网络可以使用各个层级的features,使得语义分割更为精准。(第一张图)
- RefineNet中所有部分都利用residual connections(identity mappings),使得梯度更容易短向或者长向前传,使段端对端的训练变得更加容易和高效。
- 所有模块遵循残余连接设计,提出了一种叫做chained residual pooling的模块,它可以从一个大的图像区域捕捉背景上下文信息。(第二张图)
优点:
- 提出了相应的编码器-解码器结构,其中编码器是ResNet-101模块,解码器为:能融合编码器高分辨率特征和先前RefineNet模块低分辨率特征的RefineNet模块。
- 每个 RefineNet 模块接收多个不同分辨率特征,并融合。
- high-level feature map语义信息较强,但更粗糙。而low-level feature map则具有更好的fine-grained特征。 于是利用金字塔不断的融合这两种特征。
缺点:
- ?
●(2016.12)PSPNet
动机:先进的场景解析框架大多数基于FCN,但FCN存在的几个问题(总之就是感受野不合适):
- Mismatched Relationship:FCN缺乏依据上下文推断的能力。
- Confusion Categories:许多标签之间存在关联,可以通过标签之间的关系弥补。
- Inconspicuous Classes:模型可能会忽略小的东西,而大的东西可能会超过FCN接收范围,从而导致不连续的预测。
设计来源:网络结构简单来说就是将DeepLab(不完全一样)aspp之前的feature map pooling了四种尺度之后,将5种feature map concat到一起经过卷积最后进行prediction的过程。
?contributions:
- 提出了金字塔池化模块来聚合不同区域的上下文信息
- 使用附加的损失函数
优点:
- 在一定程度上解决了分割任务中的多尺度问题。
- 训练基础网络过程中使用了辅助loss,来将复杂的优化问题分阶段解决,降低了优化与训练的难度。
缺点:
- ??
●(2017.03)Large Kernel Matters-(GCN,Global Convolutional Network)
动机:理论上更深的 ResNet 能有很大的感知域,但研究表明实际上提取的信息来自很小的范围,因此使用大核来扩大感知域。但是核越大,计算量越大,因此将 k x k 的卷积近似转换为 1 x k + k x 1 和 k x 1 + 1 x k 卷积的和。Large Kernel Matters被称为GCN。
GCN的两个原则:
- 从局部的角度来看,模型结构应该是完全卷积的,以保留局部的性能,并且不应该使用完全连接的或全局的池层,因为这些层将丢弃局部信息;
- 从分类的角度来看,在网络架构中应该采用大的内核大小,以便在feature map和每个像素级的分类器之间建立紧密的连接,从而提高处理不同转换的能力。
架构:使用 ResNet 作为编译器,而 GCN 和反卷积作为译码器。还使用了名为 Boundary Refinement 的残余模块。
?contributions:
优点:
缺点:
●(2017.06)DeepLab v3
?contributions:
- 改进 ASPP,将不同膨胀率的膨胀卷积结果拼接起来(级联了多个空洞卷积结构)。并使用了 BN 。与Dilated convolutions (2015) 不一样的是,v3 直接对中间的特征图进行膨胀卷积,而不是在最后做。加入的两个1*1的卷积操作都具有256个过滤器和batch normalization。
- 串行部署 ASPP 的模块
优点:
缺点:
- 输出图放大的效果不好,信息太少(相对于V3+)
●(2018.02)DeepLab v3+
?contributions:
- 基于v3的decode module,进一步保护物体的边缘细节信息
- 用modify xception(xception介绍)作为backbone,提高分割算法的精度和速度
- 在 ASPP 和解码模块使用 depthwise separable convolution,
优点:
缺点:
-可能超级慢?
●(2018.03)Context Encoding for Semantic Segmentation
?contributions:
●(2018.03)Path Aggregation Network for Instance Segmentation
?contributions:
●(2018.03)Dynamic-structured semantic propagation network
?contributions:
●(2018.03)Adaptive Affinity Field for Semantic Segmentation
?contributions:
●(2018.04) Learning a Discriminative Feature Network for Semantic Segmentation
?contributions:
●(2018-ECCV) PSANet: Point-wise Spatial Attention Network for Scene Parsing
?contributions:
●(2018-ECCV) ICNet for Real-Time Semantic Segmentation on High-Resolution Images
?contributions:
?(2018.07-DLMIA)UNet++: A Nested U-Net Architecture for Medical Image Segmentation【论文原文】【参考文章】
动机:
- 认为unet中encoder的浅层特征与decoder的深层特征结合是不妥当的,会产生semantic gap。
?contributions:
- 对Unet改进的点主要是skip connection;(可以抓取不同层次的特征,将它们通过特征叠加的方式整合)
- 引入DSN(deep supervision net)(能够让中间部分收到传递过来的梯度),通过model pruning,能够实现模型的两种模式:高精度模式和高速模式。
黑色部分代表的就是原始Unet结构,绿色代表添加的卷积层,蓝色代表改进的skip connection。
●(2018.08) BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
?contributions:
●(2018.09)OCNet: Object Context Network for Scene Parsing
?contributions:
●(2018.09)Dual Attention Network for Scene Segmentation
?contributions:
●(2018.11)ShelfNet for Real-time Semantic Segmentation
?contributions:
●(2018.11)CCNet: Criss-Cross Attention for Semantic Segmentation
?contributions:
●(2019.02)Fast-SCNN Fast Semantic Segmentation Network
?contributions:
●(2019.02)An efficient solution for semantic segmentation ShuffleNet V2 with atrous separable convolutions
?contributions:
●(2019.03)Structured Knowledge Distillation for Semantic Segmentation
?contributions:
●(2019.03)FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation
?contributions:
●(2019.03)Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregation
?contributions:
●(2019.03)In Defense of Pre-trained ImageNet Architectures for Real-time Semantic Segmentation of Road-driving Images
?contributions:
●(2019.04)DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation
?contributions:
●(2019.04)ACE: Adapting to Changing Environments for Semantic Segmentation
?contributions:
- 将历史风格信息存储在紧凑轻量级内存中,可以有效的重建
- 提供了一个轻量级框架
使用元学习策略加速适应新领域的速度 ( We also study how metalearning strategies can be used to accelerate the speed of adaptation.)
1、minimizing a notion of distance between source and target domains。
▲(2016.08)Domain Separation Networks
- 提出了一种新颖的架构: Domain Separation Networks (DSN)来学习域不变特性(domain-invariance feature)。
▲(2015.02)Learning Transferable Features with Deep Adaptation Networks
▲(2016.07)Deep CORAL: Correlation Alignment for Deep Domain Adaptation
- 引进了一个叫做CORAL的方法,通过对source domain和target domain进行线性变换来将他们各自的的二阶统计量对齐(对齐均值与协方差矩阵)
2、implicitly estimated to make features domain-invariant using adversarial loss functions such as reversed gradient
▲(2014.09)Unsupervised domain adaptation by backpropagation
- 可以对来自源域的大量标记数据和来自目标域的大量未标记数据进行训练(不需要标记的目标域数据)
▲(2014.09)Domain-Adversarial Training of Neural Networks
3、 domain confusion
▲(2015.10,ICCV)Simultaneous Deep Transfer Across Domains and Tasks
- 提出了一种新的CNN架构来利用未标记和稀疏标记的目标域数据。 同时优化域不变性以促进域转移,并使用软标签分布匹配丢失来在任务之间传输信息。
4、Generative Adversarial Network (部分参考)
▲(2016.12,corr)Fcns in the wild: Pixel-level adversarial and constraint-based adaptation
▲(2018.CVPR)Conditional generative adversarial network for structured domain adaptation
- 将条件GAN集成到FCN网络中,将特征图用GAN来生成。
▲(2018.ECCV)Domain transfer through deep activation matching
- 使用GAN来调整中间层的激活分布
▲(2017.12.CVPR)Maximum classifier discrepancy for unsupervised domain adaptation
- 利用GAN通过特定任务的决策边界来调整源域和目标域的分布;
- 最大化两个分类器输出的差异,以便于检测出远离于源的目标样本;然后用GAN生成满足最小化差异的目标特征。
▲(2017.02.CVPR) ADDA:Adversarial discriminative domain adaptation
- 结合了判别模型,不进行权重共享和GAN损失
- 提出了一个通用的对抗自适应(adversarial adaptation)框架。将base model, weights constraint, adversarial objective等因素纳入这一框架
●(2019.05)FastDraw: Addressing the Long Tail of Lane Detection by Adapting a Sequential Prediction Network
?contributions:
●(2019.05)Collaborative Global-Local Networks for Memory-Efficient Segmentation of Ultra-High Resolution Images
?contributions:
?(2019.08-ECCV)语义分割算法【论文原文】【参考文章】
?contributions:
待续。。。
参考:http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review#deeplabv3