论文阅读 || 语义分割系列 —— deeplabv3详解

论文链接:https://arxiv.org/abs/1706.05587

1 deeplabv3的主要贡献

我们知道:

  • 连续的池化和下采样,使特征分辨率下降,不利于定位
  • 全局特征或上下文之间的互相作用有利于语义分割的效果

deeplabv3的主要贡献

  • 提出了更通用的框架,适用于更多网络
  • 改进了ASPP:由不同采样率的空洞卷、BN层组成,尝试以级联并行的方式设计模块
  • 大采样的空洞卷积:使用大采样率的3x3 的空洞卷积,此时由于图像边界响应无法捕捉远距离信号,就会退化成1x1的卷积

2 语义分割的结构类型

全局特征或上下文之间的互相作用有助于做语义分割。下图是四种不同类型的做语义分割的全卷积神经网络:
论文阅读 || 语义分割系列 —— deeplabv3详解_第1张图片

图像金字塔(image pyramid)
  • 将输入图片放缩成不同的比例,分别应用在DCNN上。
    使用共享权重模型,小尺寸的输入响应控制语义、大尺度的输入响应控制细节。
    将预测结果融合得到最终输出
  • 缺点:因为GPU存储器的限制,对于更大更深的模型不方便扩展,通常应用于推断阶段
编码-解码(encoder-decoder)
  • 【编码器】将信息编码为压缩向量来代表输入;【解码器】:将这个信号重建为期望的输出
  • 好处:编码器的高层次的特征容易捕获更长的距离信息,在解码器阶段使用编码器阶段的信息 帮助恢复目标的细节和空间维度
  • 例子:SegNet 利用下采样的池化索引作为上采样的指导;U-Net 增加了编码器部分的特征跳跃 连接到解码器;RefineNet 等证明了Encoder-Decoder 结构的有效性
上下文模块(Context module):
  • 在原始模型的顶端增加额外的模块(例如 DenseCRF),来捕捉像素间长距离信息
空间金字塔池化(Spatial pyramid pooling)
  • 采用空间金字塔池化,可以捕捉多个层次的上下文
  • 在 ParseNet 中,从不同图像等级的特征中捕获上下文信息;deeplabv2 提出了ASPP,以不同采样率的并行空洞卷积来捕获多尺度信息。PSPNet 在不同网络尺度上执行空间池化,并在多个数据集上具有优异的表现

3 deeplabv3的结构

deeplab提出了一种新颖的语义分割方法:控制特征的抽取、学习多尺度特征的网络结构。

  • deeplabv3 的特征提取模块:在ImageNet 上预训练的 ResNet
  • 注意最后一个 ResNet Block:
    • 使用了空洞卷积。这个残差块内的卷积都是使用了不同的rate 来捕获多尺度信息
    • 顶部使用了空洞空间金字塔池化(ASPP)

论文阅读 || 语义分割系列 —— deeplabv3详解_第2张图片

3.1 空洞卷积

在另外一篇博客中记录了空洞卷积

3.2 model1:使用更深层的空洞卷积

论文阅读 || 语义分割系列 —— deeplabv3详解_第3张图片
上图中采用串行的ResNet。后面的 block5、block6、block7 均为 block4的复制。

  • 图(a):在没有使用空洞卷积时输出步长为256
  • 图(b):使用空洞卷积时输出步长为16

图(b)中使用了【Multi-grid Method】。

  • 定义Multi-grid=(r1, r2, r3)为block4~block7 的三个 卷积层的 unit rate
  • 卷积层最终的 atrous rate = unit rate * “pooling size”
  • 例子:当 输出步长=16,Multi_Grid=(1, 2, 4)时,那么三层卷积的空洞率为 (2, 4, 8).

3.2 model2:ASPP

ASPP 中不同的空洞率可以有效的捕获不同尺度的信息。但是当空洞率非常大时,有效的卷积权重变得很小。
如下图,将不同rate的3x3卷积应用在65x65大小的特征图。在极端的情况下,rate value 接近特征图大小,那么3x3卷积不再获取整张图像信息,而是退化到1x1卷积,只有中心的权重是有效的
论文阅读 || 语义分割系列 —— deeplabv3详解_第4张图片
deeplabv3 中的 ASPP :

  • 将 BN 添加到了 ASPP 模块中
  • 一个 1x1卷积、三个3x3卷积组成。当 输出步长=16时,三个3x3的卷积的rate=(6,12,18)
  • 添加了 image pooling:在最后一层特征图使用全局平均池化——将图像级特征传入1x1卷积,通道为256——BN——双线性插值恢复到原始图像大小(解决ASPP的rate过大而退化的影响,增加了全局信息)
  • 所有分支的特征进行 concat,然后再使用 1x1的conv+BN 进行整合(最后通过 1x1 conv 生成最终的logits)

deeplabv3 去掉了条件随机场,模型变得更加简洁
论文阅读 || 语义分割系列 —— deeplabv3详解_第5张图片

4 进行训练

4.1 训练设置

  • Learning rate policy
    • 采用 poly 策略,在初始学习率上乘以 ( 1 − i t e r m a x i t e r ) p o w e r (1-\frac{iter}{max_{iter}})^{power} (1maxiteriter)power,其中power为0.9
  • Crop size
    • 为了大采样率的空洞卷积能够有效,需要较大的图片大小。否则,大采样率的空洞卷积权值就会用到很多的padding区域
    • 在PASCAL VOC 2012 数据集的训练和测试中,采用513的裁剪尺寸
  • Batch Normalization
    • 在 ResNet 模块中添加了BN
    • 当 output_stride=16时,采用batch_size=16,同时BN层的参数的衰减系数为0.997
    • 在增强的数据集上,以初始学习率为0.007训练30k后,冻结 BN层参数,然后采用output_stride=8,在使用初始率为0.001在PASCAL官方数据集上训练30k
  • Upsamping logits
    • 之前,是将output_stride=8 的输出与Ground True 下采样8倍做比较
    • 现在,将输出上采样8倍与Ground True做比较,保持Ground True更重要
  • Data augmentation
    • 训练阶段,随机放缩输入图片(从0.5到2.0)和随机左右翻转

4.2 实验:更深的空洞卷积

1 ResNet50:如下图,测试output_stride的影响

  • 当output_stride=256,由于严重的信号抽取,性能大大下降
  • 当使用不同采样率的空洞卷积,结果提升了。这表明在语义分割中使用空洞卷积的好处
    论文阅读 || 语义分割系列 —— deeplabv3详解_第6张图片

2 ResNet50 vs ResNet101:用更深的模型,并改变级联模块的数量

  • 如下图,当block增加了,性能也随之增加
    论文阅读 || 语义分割系列 —— deeplabv3详解_第7张图片

3 Multi-grid:使用变体残差模块,采用了Multi-grid 策略。 如下图:

  • 应用不同策略通常比单倍数 (r1,r2,r3)=(1,1,1) 效果要好
  • 简单的提升倍数不会有太大效果 (r1,r2,r3)=(2,2,2)
  • 增加网络深度,在配合Multi-grid可以提升性能。图中最好的模型为:使用到 block7 的 (r1,r2,r3)=(1,2,1)
    论文阅读 || 语义分割系列 —— deeplabv3详解_第8张图片

4 Inference strategy on val set:

  • 推断时output_stride=8 比 output_stride=16 性能提高了 1.39%
  • 使用多尺度输入(scales={0.5,0.75,1.0,1.25,1.5,1.75})和左右翻转,进行数据增强后,进一步提高了性能
  • (计算每个尺度和翻转图像的平均概率来作为最终结果)
    论文阅读 || 语义分割系列 —— deeplabv3详解_第9张图片

4.3 实验:ASPP

提升效果的方法

  • 网络结构:Multi-grid (1,2,4) + ASPP (6,12,18) + Image Pooling
  • output_stride:小
  • Inference strategy on val set:测试时,使用多尺度和左右翻转后的图片
  • pretrained:在COCO数据集上预训练模型

实验效果:

  • 使用不同的 Multi-grid 和 ASPP参数
    论文阅读 || 语义分割系列 —— deeplabv3详解_第10张图片
  • Inference strategy on val set
    论文阅读 || 语义分割系列 —— deeplabv3详解_第11张图片
    (后面的实验略掉)

参考链接:https://blog.csdn.net/qq_31622015/article/details/90574293

你可能感兴趣的:(深度学习相关的论文阅读,deeplab系列)