介绍

典型的语义分割网络结构组成如下:

  1. 一条下采样路径,提取粗略的分割特征。
  2. 一条上采样路径,恢复输入图像的分辨率。
  3. (可选)一个后处理模块,如条件随机场来对模型预测进行精修。

最近,DenseNet在图像分类任务上取得了成功。DenseNet是基于以下观察:如果每个层都与其它层以feed-forward的方式连接在一起,网络会更加精确且易于训练。在本论文中,我们扩展DenseNet以用于语义分割任务。我们在城市街景数据集(如CamVid、Gatech)上取得了state-of-the-art的结果,且不使用任何后处理或预训练手段。同时,模型的巧妙设计使得参数量相比其他网络大大降低。

主要贡献:

  1. 我们小心地将DenseNet扩展为用于语义分割的全卷积网络,同时缓解了特征图爆炸(feature map explosion)问题。
  2. 我们提出的使用dense blocks构建的上采样路径,性能比标准的上采样路径更好,例如U-Net。
  3. 该网络可以在城市街景数据集上取得state-of-the-art的结果,不需要任何预训练的参数或其他后处理步骤。

全卷积DenseNet

FCN由一条下采样路径,一条上采样路径,和skip connections组成。Skip connections通过重用特征图来帮助上采样路径恢复空间细节信息。我们的模型目标是通过扩展更加精妙的DenseNet结构来促进特征重用,同时避免上采样路径的特征爆炸。

DenseNet回顾

令 $x_{\ell}$ 表示第 $\ell$ 层的输出,在一个标准的CNN网络中,$x_{\ell}$ 是通过在前一层的输出 $x_{\ell-1}$ 上应用一个非线性变换 $H_{\ell}$ 得到的:

$$ x_{\ell}=H_{\ell}\left(x_{\ell-1}\right) $$

其中 $H$ 通常定义为一个卷积后面紧跟着非线性函数(ReLU),通常还有dropout。

为了使深层网络的训练更加容易,ResNet提出了残差块(residual block):

$$ x_{\ell}=H_{\ell}\left(x_{\ell-1}\right)+x_{\ell-1} $$

其中 $H$ 通常定义为重复2或3次的含有BN的块,并紧跟着ReLU和卷积。

更进一步地,DenseNet设计了一种更加精巧的连接方式,迭代地将所有的特征输出feed-forward地连接到一起:

$$ x_{\ell}=H_{\ell}\left(\left[x_{\ell-1}, x_{\ell-2}, \ldots, x_{0}\right]\right) $$

其中[...]表示连接操作,H定义为BN紧跟着ReLU,卷积,dropout。这种连接方式大大促进了特征的重用。每一层 $\ell$ 输出的特征图的数量(即信道数)为 $k$,$k$ 又称为增长率(growth rate),通常设为一个较小的值(如12)。因此DenseNet的特征图数量随着网络深度增加而线性增长。transition down被提出用于降低特征图的空间维度,它由一个1×1卷积(保持特征图数量)紧跟着2×2池化操作组成。

Dense block的结构如下图所示:

2.png

从DenseNet到FC-DenseNet

上一节中描述的DenseNet结构组成了我们的全卷积DenseNet(FC-DenseNet)的下采样路径。注意在下采样路径中,特征图数量的线性增长通过池化操作降低特征图空间分辨率来补偿。下采样路径的最后一层被称为瓶颈(bottleneck)。

为了恢复空间分辨率,FCN提出使用卷积和上采样操作(转置卷积或去池化操作),以及skip connections组成的上采样路径。在FC-DenseNet中,我们将卷积操作替换为一个dense block和一个称为transition up的上采样操作。Transition up模块包含一个转置卷积来上采样前面的特征图。上采样后的特征图与来自skip-connection的特征图连接,组成下一个dense block的输入。

由于上采样路径提高了特征图的空间分辨率,特征图数量的线性增长会造成巨大的内存开销。为了缓解这个问题,上采样路径中,一个dense block的输入和输出不会被连接到一起。也就是说,转置卷积只对最后一个dense block的输出特征图进行操作,而不是把之前的所有连接在一起的特征图。

FC-DenseNet的总体结构如图所示:

1.png

语义分割结构

本节陈述FC-DenseNet103的细节。

下表分别定义了dense block中的layer、transition down和transition up:

3.png

下表中总结了网络的103层:

4.png

第1层是输入,下采样路径共38层,瓶颈共15层,上采样路径共38层,5个transition down每个包含一个卷积,5个transitiona up每个包含一个转置卷积,最后1层是一个1×1卷积紧跟着softmax激活函数。

模型通过最小化像素级交叉熵损失进行训练。

实验

模型及训练细节:

使用HeUniform初始化模型参数,使用RMSprop进行训练,初始学习率 $1e-3$,每个epoch指数衰减(exponential decay)0.995。使用随机剪裁、垂直翻转进行数据增强。对于所有实验,使用完整大小的图像和学习率 $1e-4$ 进行fine-tuning。使用weight decay $1e-4$ 对模型进行正则化。

CamVid数据集测试结果:

5.png

Gatech数据集测试结果:

6.png

参考文献

[1] The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation

Last modification:August 11th, 2019 at 11:13 pm
如果觉得我的文章对你有用,请随意赞赏