【语义分割】综述——一文搞定语义分割

版权声明:如需转载请联系博主获取权限并标明出处 https://blog.csdn.net/ShuqiaoS/article/details/87360693

本文记录了博主阅读的关于语义分割(Semantic Segmentation)的综述类文章的笔记,更新于2019.02.19。

参考文献网址

  1. An overview of semantic image segmentation
  2. Qure.ai Blog: A 2017 Guide to Semantic Segmentation with Deep Learning —— 注: Qure.ai是一家用人工智能做医疗的公司,其中涉及到医疗领域的图像处理,这里给出主页网址博客网址。其中,主页上有该公司的发表物,博客网址中有该公司的大量博客。
  3. 《A Review on Deep Learning Techniques Applied to Semantic Segmentation》(博主的笔记可以看这里

An overview of semantic image segmentation.

这一部分记录了第一个参考文献(An overview of semantic image segmentation.)的阅读笔记。作者介绍了如何用卷积神经网络完成图像语义分割任务。图像分割是计算机视觉中的一项任务,其目的是对显示出来的图像依照不同目标存在的区域进行划分和标注。概括来讲,图像分割回答了如下问题:

“图像中有什么?他们(它们)在什么位置?”
“What’s in this image, and where in the image is it located?”

具体而言,语义图像分割就是将每个像素都标注上其对应的类别。由于所有的像素都要考虑到,因此语义图像分割任务也被视为是稠密预测(dense prediction)的一种。

在这里插入图片描述
上图是语义分割的实例。图片来源

需要注意的是,这里不会区分属于同一类别的不同个体,而仅关心该像素属于哪个类别。换句话说,如果输入图像中有两个属于同一类别的目标,分割图是没有办法区分这两个目标的。而还有另一类称为实例分割(isntance segmentation)的分割模型,这些模型是可以区分相同类别的不同目标的。

分割模型对于多种任务都非常有用,比如:

  • 自动驾驶汽车(Autonomous vehicles)
    为了使自动驾驶汽车能够适应现存道路,其需要具有对周围环境的感知能力。
    在这里插入图片描述
    上图是用于自动驾驶的实时道路场景分割。图片来源

  • 医疗图像诊断(Medical image diagnostics)
    可以通过机器辅助放射治疗师的分析,从而加速放射检查。
    在这里插入图片描述
    上图是一个胸腔x-射线片,包括分割出的心脏(hear,红色),肺(lungs,绿色)和锁骨(clavicles,蓝色)。图片来源

任务描述(Representing the task)

简而言之,我们的目标是给定一幅RGB彩色图像(高x宽x3)或一幅灰度图像(高x宽x1),输出一个分割图谱,其中包括每个像素的类别标注(高x宽x1)。具体如下图所示:

在这里插入图片描述
注意:为了视觉上清晰,上面的预测图是一个低分辨率的图。在实际应用中,分割标注的分辨率需要与原始图像的分辨率相同。

与标准分类值(standard categorical values)的做法相似,这里也是创建一个one-hot编码的目标类别标注——本质上即为每个类别创建一个输出通道。

在这里插入图片描述
如上图所示,预测的结果可以通过对每个像素在深度上求argmax的方式被整合到一张分割图中。进而,我们可以轻松地通过重叠的方式观察到每个目标。

在这里插入图片描述
当只有一层通道被重叠至原始图像时,我们称之为mask,即只指示某一特定类别所存在的区域。

构建一个结构(Constructin an architecture)

一个比较初级的方式构造神经网络模型就是单纯堆叠数个卷积层(利用相同的padding以保证维度不变)再输出一个最终的分割图。这种模型通过一系列特征映射的变换直接学习得到一个从输入图像到输出分割结果的映射。然而,整个网络都在全分辨率下计算所带来的计算量是非常巨大的。
在这里插入图片描述
图片来源

回顾在深卷积网络模型中,前面的层学习得到low-level概念,而后面的层则学到high-level(专门的)特征映射。为了保证表现,在加深网络的同时,通常需要增加特征图(通道数)的个数。

与图像分类单纯地需要目标类别不同,图像分割需要每个像素的位置信息,因此不能像分类任务中那样放心地使用pooling或大步长卷积来降低计算量,图像分割需要一个全分辨率的语义估计。

一种比较流行的图像分割模型是编码器-解码器结构。编码器部分通过下采样降低输入的空间分辨率,从而生成一个低分辨率的特征映射(计算高效且能够有效区分不同类别);解码器则对这些特征描述进行上采样,将其恢复成全分辨率的分割图。

在这里插入图片描述
图片来源

上采样方法

有几种不同的上采样方法。pooling可以通过整合一个局部区域的信息为一个值的方式进行下采样(如average or max pooling),unpooling则通过将一个值分布在更高的分辨率下实现上采样。

在这里插入图片描述
图片来源

目前最流行的方式是transpose convolution,因为其允许习得上采样。

在这里插入图片描述
图片来源

反卷积(transpose convolution)本质上与正向卷积的操作相反。后者求取每个滤波器覆盖位置上的值与对应滤波器权重的点积,而反卷积则是从低分辨率特征图中提取一个值,之后乘以每个权重,再映射到输出特征图的不同位置上。下图是一个简单的通过反卷积操作进行的1D上采样示例。图片来源

在这里插入图片描述
对于在输出特征图上会造成重叠的操作(比如下图所示的3x3的窗口,步长为2的操作),重叠部分的值会被单纯地求和。这种操作会导致输出中产生人为的棋盘现象,而这种现象是我们所不希望看到的。所以,建议保证滤波器的尺寸不会导致重叠。

在这里插入图片描述
图片来源

全卷积网络(Fully convolutional networks)

这个网络结构再下文中也有介绍,这里做一个补充。这个网络结构利用iamge classification networks(如AlexNet)作为编码器,利用反卷积层实现上采样恢复分辨率作为解码器,实现端到端训练的全卷积网络。

在这里插入图片描述
图片来源(下文也有这个图片)

下图是完整的网络结构,可以看出网络是基于像素级别的交叉熵损失训练的。

在这里插入图片描述
图片来源

然而,由于编码器模块产生的分辨率是原始输入的1/32,解码器模块必须非常努力去恢复原始分辨率。如下图所示。

在这里插入图片描述
在这里插入图片描述

引入skip connections

通过在早期的层上增加skip conncetions来实现缓慢(分步)上采样在对两个特征图求和的方式,上述问题得到了缓解。

在这里插入图片描述
图片来源

这些skip connections保留了一些必要的细节,从而使得分割的边界更准确。

在这里插入图片描述
随后,Ronneberger等人通过扩张解码器模块的容量的方式改进了上述的全卷积结构(fully convolutional architecture)。具体来讲,这种N-Net结构“consists of a contracting path to capture context and a symmetric expanding path that enables precise localization”。这种结构目前非常流行,已经被拓展至了多种分割问题上。(下文中也有介绍,图片来源

在这里插入图片描述
注意:The original architecture introduces a decrease in resolution due to the use of valid padding. However, some practitioners opt to use same padding where the padding values are obtained by image reflection at the border.

Whereas Long et al. (FCN paper) reported that data augmentation (“randomly mirroring and “jittering” the images by translating them up to 32 pixels”) did not result in a noticeable improvement in performance, Ronneberger et al. (U-Net paper) credit data augmentations (“random elastic deformations of the training samples”) as a key concept for learning. It appears as if the usefulness (and type) of data augmentation depends on the problem domain.

改进的U-Net变体

Drozdzal等人用残差模块替换了基础卷积模块用于堆叠。这种残差模块在模块内部含有skip conncetions,同时保留了与U-Net相同的在编码器与译码器对应特征图之间的skip connections。他们称这种方式能够使得网络更快收敛,也能够适用于更深的网络结构。

基于此,Jegou等人提出了使用dense blocks,也是遵从于U-Net结构,称dense blocks的属性使得它们能够更好地适应语义分割任务,因为其天然携带skip connections和多尺度监督。这些dense blocks之所以好用是因为它们携带了从前序层中得到的low-level特征,也包含了从后续层中得到的higher level特征,从而实现更高效的特征复用。

在这里插入图片描述
图片来源

关于这个结构非常重要的一点是,其上采样通路不包含一个dense block从输入到输出的连接。论文作者称这是因为上采样通路增加了特征图的空间分辨率,使得特征的线性增长将消耗大量的内存。因此,只有dense block的输出在译码器内传递。(One very important aspect of this architecture is the fact that the upsampling path does not have a skip connection between the input and output of a dense block. The authors note that because the “upsampling path increases the feature maps spatial resolution, the linear growth in the number of features would be too memory demanding.” Thus, only the output of a dense block is passed along in the decoder module.)

在这里插入图片描述
FC-DenseNet103模型在CamVid数据集上得到了state of the art的结果。(2017年10月)

扩张卷积(Dilated/atrous convolutions)

对特征图进行下采样的一个好处是,给定相同的滤波器尺寸,其拓展了网络在输入上的感受野。考虑到这种方式比单纯增加滤波器尺寸更高效(参考这篇文章)。然而,这种做法会导致空间分辨率的降低。

扩张卷积提供了一种增加感受野但是又能保持空间分辨率的方法。具体如下图所示,其扩张的尺寸称为dilation rate。(the values used for a dilated convolution are spaced apart according to some specified dilation rate)

在这里插入图片描述
图片来源

部分结构将最后几层pooling层替换成了dilation rates逐渐升高的扩张卷积层来实现尽量减少空间细节丢失的基础上增加感受野。然而,用扩张卷积替换所有的pooling层的做法通常计算量很大

定义损失函数

对于图像分割任务,最常用的损失就是像素级交叉熵损失(pixel-wise cross entropy loss)。这个损失通过比较类别估计class predictions(深度上的像素向量 depth-wise pixel vector)与真值(one-hot encoded target vector),从而检测每个像素。

在这里插入图片描述
由于交叉熵损失单独评估每个像素再对所有像素的损失求平均值,我们本质上实现的是每个像素都有等同的待遇。然而,当训练过程中有一部分类别占据主导作用的时候,这种图像中表述的不平和可能由于上述原因出现问题。Long等人在FCN中讨论了对每个输出通道赋予权重以应对数据集中的类别不均衡问题。

同时,Ronneberger等人U-Net讨论了一种对每个像素的加权方法,即赋予在分割目标边界的像素赋予更高的权重。这种加权损失思想帮助U-Net模型在应对生物学图像的细胞时能够提供边界分明(discontinuous fashion)的分割图,从而使得每个细胞个体间的区分更加容易。

在这里插入图片描述
图片来源


另一个在图像分割任务中比较流行的损失基于的是Dice coefficient,其本质是衡量两个样本的重叠部分。该度量的范围从0到1,其中Dice coefficient为1时代表全部完美重叠。Dice coefficient最开始是为二元数据定义的,公式如下:

D i c e = 2 A B A + B Dice=\frac{2\vert A\cap B\vert}{\vert A \vert + \vert B \vert}

其中, A B \vert A\cap B\vert 代表集合 A A B B 之间的共同元素; A \vert A\vert 代表集合 A A 中的元素(集合 B B 同理)。

为了在分割任务中利用Dice coefficient,我们可以近似地将 A B \vert A \cap B \vert 理解为prediction和target mask之间求像素级乘法,随后再对结果矩阵求和。

在这里插入图片描述
由于target mask是二进制的,上述操作能够很轻松地将那些在target mask中“不活跃”的位置所对应的prediction去除。对于剩下的像素,本质上乘法的是低置信率的估计。这个表达式的值越高(由分子决定),Dice coefficient的结果越好。

为了定量表示 A A B B 一些学者单纯利用求和的方式,而另一些学者则倾向于用平方和来处理。作者无从知道对于各种应用场景哪个方法会更好,因此建议试一试,根据实验的结果决定。

在这里插入图片描述
注意公式中分子(numerator)上有一个2,这个原因是分母对“同一个内容”数了两次。为了构建一个可以最小化的损失函数,我们这里单纯利用 1 D i c e 1-Dice 。这个损失称为soft Dice loss,因为我们直接利用了predicted probabilities,而没有对其进行thresholding,从而将它们变成binary mask。

至于神经网络的输出,分子关心的是prediction和target mask之间共同的activations,而分母则关心的是每个mask下单独的activations的数量。这种做法使得损失是根据target mask的尺寸进行了归一化的,从而soft Dice loss不会受到图像中某一类别在空间上的描述更少而引发的问题。

在这里插入图片描述
我们会对每个类别单独计算soft Dice loss,随后再求取平均得到一个最终的数值。

常用数据集和分割比赛

下面列出了一些用于训练新模型的常用数据集,以及包含state of the art的benchmark。你也可以探索之前的Kaggle competitions,学习获奖的算法是如何在给定任务中应用分割模型的。

数据集

Kaggle Competitions

推荐阅读

论文

课程

博客

图像标注工具

Github目录

A 2017 Guide to Semantic Segmentation with Deep Learning

这一部分记录了第二个参考文献(Qure.ai Blog: A 2017 Guide to Semantic Segmentation with Deep Learning)的阅读笔记。

什么是语义分割(Semantic Segmentation)

语义分割旨在像素级理解图像,如我们期望对图像中的所有像素标注以目标类别。具体可以参见下图(图片来源于Pascal):
在这里插入图片描述
除了识别出摩托车和骑手外,算法还需要识别出每种目标的便捷。因此,与分类任务不同,语义分割任务下要求算法可以进行稠密的像素级估计。

VOC2012MSCOCO是语义分割下最重要的两个数据库。(关于COCO数据库,博主写过一篇文章介绍,感兴趣可以看这里。)

常用方法

在深度学习占领计算机视觉领域之前,人们曾用诸如TextonForestRandom Forest based classifiers等方法实现语义分割。正如在图像识别领域,卷积神经网络在分割问题上也取得了很好的效果。

一种比较流行的传统深度学习方法是patch classification,其做法是依据每个像素周围的图块对该像素进行区别标注。应用图块最主要的原因是分类网络(classification networks)通常应用全连接层,因此要求一个固定的图像尺寸。

2014年,Long等人提出了全卷积网络(Fully Convolutional Networks (FCN)),使得CNN结构在不需要全连接层的稠密估计任务中开始流行。相比较基于图块的分类方法,FCN可以实现任意尺寸图片的分割,且速度快很多。基本上所有随后出现的当前流行语义分割方法都基于这种范式。

除了全连接层,应用CNNs进行语义分割的一个主要问题是pooling层。Pooling层增加了感受野并且能够在整合内容信息的同时忽略“位置”信息。然而,语义分割需要类别映射之间的准确联结,因此“位置”信息需要被保留。下文陈述了两种结构用于解决这个问题。

第一种结构是编码器-解码器结构(encoder-decoder architecture)。解码器利用pooling层减小空间尺寸,而解码器逐渐恢复目标细节和空间维度。从解码器到编码器通常有shortcut conncetions,从而辅助解码器恢复目标细节。U-Net是一种流行的编码器-解码器结构。

在这里插入图片描述
第二种结构称为dilated/atrous convolutions(加宽/黑色卷积),这种结构直接去除pooling层。

在这里插入图片描述
条件随机场(Conditional Random Field (CRF))后处理通常用于提高分割的效果。CRFs是指那些能够基于隐含的图像强度平滑分割结果的几何模型,其基于经观察得到的结论:具有相似强度的像素点通常属于同一类别。CRFs能够将正确率提升约1-2%。(图片来源

在这里插入图片描述
接下来本文将介绍一些在VOC2012上有评估的几篇分割结构的论文。

汇总

这一部分总结了下面几篇论文(按时间排序):

  1. FCN
  2. SegNet
  3. Dilated convolutions
  4. DeepLab (v1 & v2)
  5. RefineNet
  6. PSPNet
  7. Large Kernel Matters
  8. DeepLab v3

下文给出了每篇论文的主要贡献,简介,以及在VOC2012测试集上的表现(平均IOU)。

FCN

Fully Convolutional Networks for Semantic Segmentation
Submitted on 14 Nov 2014
Arxiv Link

主要贡献:

  • 使得端到端卷及网络在语义分割领域开始流行;
  • 将iamgenet预训练的网络用于分割;
  • 用反卷积(deconvolutional)层实现上采样;
  • 通过skip connections提升上采样的粒度(coarseness)。

解释:

一个比较关键的观察结果是:分类网络中的全连接层可以视作是用一个与整个输入区域大小相同的核进行卷积运算。这与传统的用重叠的输入图块进行分类的网络等同,但是由于计算量被分配至各个区域,因此更高效。(这段话博主的理解可能有偏差,附上原文:Key observation is that fully connected layers in classification networks can be viewed as convolutions with kernels that cover their entire input regions. This is equivalent to evaluating the original classification network on overlapping input patches but is much more efficient because computation is shared over the overlapping regions of patches. )尽管这个观察结果并不专属于这片文章(如overfeat这张海报),其很大程度上提高了state of the art在VOC2012上的表现。

图片来源
在这里插入图片描述
一个imagenet预训练网络(如VGG)经过卷积化的全连接层(convolutionalizing fully connected layers)之后,特征图由于CNNs中的pooling操作仍需要上采样。不同于直接利用双线性插值(bilinear interpolation),反卷积层(deconvolutional layers)也可以习得插值。这个反卷积层也可以称为upconvolution, full convolution, transposed convolution或者fractionally-strided convolution。

然而,尽管有反卷积层,上采样这个过程仍然会由于在pooling过程中丢失信息而使得分割图变得粗糙。因此,shortcut/skip connections被引入到高分辨率的特征图中。

Benchmarks (VOC2012)

Score Comment Source
62.2 - leaderboard
67.2 More momentum(文中未介绍) leaderboard

作者评论

这种方法贡献很大,但是目前的算法在精度上已经远远高于这种方法。

SegNet

SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
Submitted on 2 Nov 2015
Arxiv Link

主要贡献

传递maxpooling indices至解码器,从而提高了分割的分辨率。

解释

尽管FCN包含反卷积层和一些shortcut connections,其生成的分割图仍然比较粗糙。因此,SegNet引入了更多的shortcut connections。与FCN直接复制编码器特征的方式不同,SegNet复制的是maxpooling层生成的indices。这使得SegNet相比于FCN而言在存储上更高效(more memory efficient)。

在这里插入图片描述
benchmars(VOC2012)

Score Comment Source
59.9 - leaderboard

作者评论

  • FCN和SegNet是最早的编码器-解码器结构(encoder-decoder architectures)。
  • SegNet的benchmark排名当今也不够好了。

Dilated Convolutions

Multi-Scale Context Aggregation by Dilated Convolutions
Submitted on 23 Nov 2015
Arxiv Link

主要贡献

  • 应用扩张卷积(dilated convolutions)——一种用于稠密估计的卷积层;
  • 提出应用扩张卷积实现多尺度整合的“context module”。

解释

pooling之所以能帮助分类网络结构是因为其增加了感受野。但是这对于分割任务而言并不好,因为其降低了分辨率。因此,作者应用了如下的扩张卷积层:

在这里插入图片描述
动图请查看图片来源

扩张卷积层(在DeepLab中也被称为atrous convolution)允许感受野的指数增长且不会降低空间分辨率。

来自于预训练的分类网络(此处是VGG)的最后两层pooling层被移除了,且后续的卷积层被替代成了扩张卷积。特别地,pool-3与pool-4之间的卷积的扩张为2,pool-4之后的卷积扩张为4。这个模型(文中称为前端模型(frontend module))在不增加参数个数的基础上实现了稠密估计。

另一个模型(文中称为context module)以前段模型的输出为输入被进行了单独训练。这个模型是一系列不同扩张(dilation)的扩张卷积层的串联,从而整合了不同尺度下的上下文,进而提升了前端模型的估计。

benchmarks(VOC2012)

Score Comment Source
71.3 frontend reported in the paper
73.5 frontend+context reported in the paper
74.7 frontend+context+crf reported in the paper
75.3 frontend+context+crf-rnn reported in the paper

作者评论

注意,估计得到的分割图尺寸是原始图像尺寸的1/8。这也是几乎所有方法的共同点。为了得到最终的分割图,需要进行插值操作。

DeepLab(v1 & v2)

v1 : Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
Submitted on 22 Dec 2014
Arxiv Link

v2 : DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
Submitted on 2 Jun 2016
Arxiv Link

主要贡献

  • 使用扩张卷积(atrous/dilated convolutions)
  • 提出ztrous spatial pyramid pooling (ASPP)
  • 应用全连接CRF

解释

Atrous/Dilated卷积在不增加参数个数的基础上实现了感受野的增加。网络用与这篇论文(dilated convolutions paper)相同的方式进行了修改。

多尺度处理既可以通过同时传递原始图像的不同尺度进入平行CNN分支(图像金字塔)实现,也可以通过(或同时使用)多个不同采样率的平行atrous convolutional layers实现(ASPP)。

结构预测(Structured prediction)通过全连接CRF实现。CRF作为一个独立的后处理步骤单独训练。

在这里插入图片描述
图片来源

benchmarks(VOC2012)

Score Comment Source
79.7 ResNet-101 + atrous Convolutions + ASPP + CRF leaderboard

RefineNet

RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation
Submitted on 20 Nov 2016
Arxiv Link

主要贡献

  • 包含谨慎设计的解码模块的编码器-解码器结构
  • 所有部件(components)都包含残差连接设计

解释

应用dilated/atrous卷积设计的方法的局限在于,扩张卷积的计算量巨大,且需要占用大量内存用于处理大量高分辨率的特征图。这一点输入了高分辨率下的预测计算。比如DeepLab’s预测就是原始输入的1/8尺寸。

因此,RefineNet论文中建议使用编码器-解码器结构。编码部分是ResNet-101模块,解码器包括RefineNet模块,将编码器下的高分辨率特征与前序RefineNet模块的低分辨率特征级联/融合。

在这里插入图片描述

图片来源

每个RefineNet模块都包括通过对低分辨率特征上采样融合多分辨率特征的部件和基于5x5步长为1的pool层进行内容捕获的部件。上述的两个部件每个都应用了基于恒等映射思想(identity map mindset)的残差连接设计。

在这里插入图片描述

图片来源

Benchmarks(VOC2012)

Score Comment Source
84.2 Uses CRF, Multiscale inputs, COCO pretraining leaderboard

PSPNet

Pyramid Scene Parsing Network
Submitted on 4 Dec 2016
Arxiv Link

主要贡献

  • 提出金字塔pooling结构以整合内容
  • 引入辅助损失(auxiliary loss)

解释

全局场景类别的意义在于其提供了分割类别的分布线索。金字塔pooling模型通过应用大尺寸核的pooling层以捕获这些信息。

这篇论文,扩张卷积被应用于修改Resnet,同时增加了金字塔pooling模型。这个模型将ResNet的特征图经过上采样后整合。

除主分支上的损失外,辅助损失被应用于ResNet的第4个阶段。这个概念在其他地方也被称作intermediate supervision。

在这里插入图片描述

图片来源

Benchmarks(VOC2012)

Score Comment Source
85.4 MSCOCO pretraining, multi scale input, no CRF leaderboard
82.6 no MSCOCO pretraining, multi scale input, no CRF reported in the paper

Large Kernel Matters

Large Kernel Matters – Improve Semantic Segmentation by Global Convolutional Network
Submitted on 8 Mar 2017
Arxiv Link

主要贡献

提出了含有非常大核的编码器-解码器结构

解释

语义分割需要同时对分割对象进行分割和分类。考虑到全连接层不能实现分割任务,论文用大尺寸核的卷积运算替代全连接层。

另一个应用大尺寸核的愿意是,尽管类似于ResNet这样更深的网络结构能够拥有比较大的感受野,任由研究显示,网络其实从一个小很多的区域(有效感受野,valid receptive field)收集信息。

大尺寸核计算成本高且参数众多,因此一个kxk的卷积可以用1xk+kx1和kx1和1xk卷积(Therefore, k x k convolution is approximated with sum of 1 x k + k x 1 and k x 1 and 1 x k convolutions.)。这个模型在论文中被称为Global Convolutional Network (GCN)。

回到结构本身,ResNet(不含有任何扩张卷积)组成了编码层,GCNs和反卷积组成了解码层。算法还使用了一个简单的残差模块Boundary Refinement (BR)。

在这里插入图片描述

图片来源

Benchmarks(VOC2012)

Score Comment Source
82.2 - reported in the paper
83.6 Improved training, not described in the paper leaderboard

DeepLab v3

Rethinking Atrous Convolution for Semantic Image Segmentation
Submitted on 17 Jun 2017
Arxiv Link

主要贡献

  • 改进的atrous spatial pyramid pooling (ASPP)
  • 级联应用atrous convolutions的模块

解释

ResNet model is modified to use dilated/atrous convolutions as in DeepLabv2 and dilated convolutions. Improved ASPP involves concatenation of image-level features, a 1x1 convolution and three 3x3 atrous convolutions with different rates. Batch normalization is used after each of the parallel convolutional layers.

Cascaded module is a resnet block except that component convolution layers are made atrous with different rates. This module is similar to context module used in dilated convolutions paper but this is applied directly on intermediate feature maps instead of belief maps (belief maps are final CNN feature maps with channels equal to number of classes).

Both the proposed models are evaluated independently and attempt to combine the both did not improve the performance. Both of them performed very similarly on val set with ASPP performing slightly better. CRF is not used.

Both these models outperform the best model from DeepLabv2. Authors note that the improvement comes from the batch normalization and better way to encode multi scale context.

在这里插入图片描述

图片来源

Benchmarks(VOC2012)

Score Comment Source
85.7 used ASPP (no cascaded modules) leaderboard

猜你喜欢

转载自blog.csdn.net/ShuqiaoS/article/details/87360693
今日推荐