语义分割-膨胀卷积


Dilated convolution 膨胀卷积

(Atrous convolution 空洞卷积)

膨胀卷积的计算

正常卷积的计算:
在这里插入图片描述
膨胀卷积的计算:
在这里插入图片描述

  • 在膨胀卷积中,引入了一个新的变量 r r r r r r 表示膨胀因子(dilation rate)

    在上图中, r r r=2,也就是读取特征图的像素点的距离为2

    如果 r r r=1,那么读取的像素点距离为1,即直接读取相邻的像素点,也就是正常的卷积操作。

  • 在上图中,如果我们将 padding设置为1,那么经过膨胀卷积的特征图的高宽会保持不变。

Why Dilated Convolution ?

在语义分割任务中,我们通常使用图像分类网络作为backbone。在backbone中,图片往往会经过一系列的下采样。这时,我们需要再经过上采样操作,将特征图还原成原图的大小。

但是,如果下采样倍率过大的话,会对我们上采样还原特征图造成影响。

以VGG16网络为例,经过最大池化下采样层后,图片会被下采样32倍,此时,有可能会丢失图像的一些细节信息以及比较小的目标。但是,丢失的细节信息和小目标是无法通过上采样操作进行还原的,这会影响语义分割任务的效果。

如果直接去掉最大池化下采样层,会导致特征图的感受野变小。

膨胀卷积(Dilated Convolution)的优势就在于:

  • 既能增大感受野
  • 还能保持原输入特征图W、H

Gridding Effect

在这里插入图片描述

gridding effect主要是针对膨胀卷积对感受野的影响;所以,我们有必要先对感受野进行一个简单的介绍:

感受野

感受野(Receptive Field) 是指特征图上的某个点能看到的输入图像的区域。换句话说,特征图上的每个点对应于输入图像中的一个区域,这个区域的大小就是感受野。

感受野的计算公式 :

初始层的感受野 = 1

当前层感受野 = 上一层感受野 + (卷积核大小 - 1) × 步长

若输入图像的尺寸大小是5x5,经过两次3x3的卷积核(其中stride=1,padding=0)后,其感受野大小为5*5,如下图所示:

在这里插入图片描述

在上图中,初始的输入图片大小为5x5,经过一个3x3的卷积核后,特征图大小变为(5-3+2x0)/1+1 = 3;

再经过一个3x3的卷积核后,特征图大小变为(3-3+2x0)/1+1 = 1;

由此,我们可知,一个5x5的图片经过两个3x3的卷积核(其中stride=1,padding=0)后,会变为1个pixel;反过来思考,这个pixel的感受野就是5x5。

我们再使用感受野的计算公式来验证一下:

第一层感受野 = 1

第二层感受野 = 1 + (3-1)x1 = 3

最后的pixel的感受野 = 3 + (3-1)x1 = 5

Gridding effect 的具体内容

对于一个特征图,我们采用3个大小都为3x3,膨胀因子为2的膨胀卷积层:

在这里插入图片描述
膨胀卷积和普通卷积在感受野的处理上会有些许不同,此处的正向推导对于我来说比较困难,所以我从Layer 1 来倒推:

在这里插入图片描述

Layer 1的图片大小为13x13,再经过一个3x3,膨胀因子为2的膨胀卷积层后,得到特征图Layer 2,大小变为9x9:
在这里插入图片描述

Layer 2的图片大小为9x9,再经过一个3x3,膨胀因子为2的膨胀卷积层后,得到特征图Layer 3,大小变为5x5:
在这里插入图片描述

Layer 3的图片大小为9x9,再经过一个3x3,膨胀因子为2的膨胀卷积层后,得到特征图Layer,大小变为1x1,也就是一个像素点(pixel)

综上可得,在3个大小都为3x3,膨胀因子为2的膨胀卷积设计中,图像的感受野为13x13。

但观察Layer 1,我们会发现13x13的方阵中,有很多点都没有被计算过(每个方格里的数字表示改像素点被计算的次数),说明图像中的很多信息都被卷积网络忽略了,这会影响分割的效果。

但保持膨胀卷积大小不变,适当改变膨胀系数;我们可以在不减小感受野的前提下,避免图像中像素点被忽略的问题。
在这里插入图片描述

在下一部分中,我们会从一篇论文中,学习具体的解决gridding effect的方法

解决gridding effect的方法

在论文 [Understanding Convolution for Semantic Segmentation]中,作者提供了一些解决gridding effect的方法和注意事项:

Hybrid Dilated Convolution (HDC)

  • 作者将 ‘maximum distance between tow nonzero values’ 两个非零值间的最大距离定义为 :

    M i = m a x [ M i + 1 − 2 r i , M i + 1 − 2 ( M i + 1 − r i ) , r i ] M_i = \mathop {max}[M_{i+1}-2r_i, M_{i+1}-2(M_{i+1}-r_i), r_i] Mi=max[Mi+12ri,M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值