空洞卷积
空洞卷积的提出主要是为了解决图像分割问题中存在的信息丢失问题,之前的图像分割算法往往会使用深度卷积神经网络,卷积层之间往往会夹杂着池化层来增大感受野,最后再通过一系列的上采样操作来将小尺寸的特征图样变换到输入图像的大小输出。使用池化层固然可以增加感受野,但是这一操作过程中会丢失许多的信息,这一点和hinton对于池化层的想法不谋而合。而同样的在上采样过程中,从小尺寸变换到大尺寸会存在着精度损失的问题,这一点在图像先缩小再复原的过程就可见端倪。因此我们需要一种可以不使用池化(下采样)和上采样,就能增加感受野的操作来代替原本的池化+上采样操作。空洞卷积应运而生。
空洞卷积和普通卷积
空洞卷积和普通卷积的区别不大,只是多了一个 "dilation rate"的参数,这个参数定义了卷积核中两相邻元素的距离。普通卷积中卷积核中不同元素是紧密相连的,而在空洞卷积的卷积核中不同元素的距离可以不为1,这个距离越大意味着空洞卷积的感受野越大; 或者也可以认为是一个相同感受野大小的普通卷积,只是中间填充了许多权重不更新的零值。普通卷积和空洞卷积的示意图如下所示


上图即为普通卷积,下图为dilation rate=2时的空洞卷积,可以看出一个 3 × 3 3\times3 3×3大小的空洞卷积在进行卷积操作时,核捏内元素的距离为2,实际上等价于一个 5 × 5 5\times 5 5×5大小的只在棋盘区域存在非零值的普通卷积。
而普通卷积可以通过padding操作使得输入输出特征图样的大小相同,因此空洞卷积拥有了以下两个优势。1
- 扩大感受野: 使用空洞卷积可以使得参数量相同的情况下,增加卷积的感受野,原本 3 × 3 3\times3 3×3的卷积核只能覆盖面积为9的区域,而相同参数量的空洞卷积可以覆盖面积为25的感受野。且随着dilation rate的提升,感受野会进一步的増大。起到了原本池化层的作用。
- 保持图像分辨率:由于空洞卷积可以认为是稀疏的普通卷积,在运算过程中我们可以通过paddding使得输入输出特征图样的分辨率相同。从而在图像分割任务中,避免了下采样和上采样带来的信息损失。
以上两个优势使得空洞卷积较好的适应于图像分割任务,可以摒弃原本的池化和上采样操作。而据作者在论文中的描述,通过设置不同的dilation rate,卷积操作拥有了不同大小的感受野,可以获得多尺度的信息2。因此作者使用了连续7层dilation rate不完全相分别为{1, 1, 2, 4, 8, 16, 1, 1}的空洞卷积层构成了”上下文模块(context module)",从而可以聚合多尺度的上下文信息3。(说实话,没看出这里和多尺度有啥关系,笔者所认为的多尺度信息应该指的是对不同分辨率的特征图样进行操作,如FPN;或者是使用不同大小的卷积核对同一特征图样进行操作,再进行拼接,如GoogLeNet,但这里的空洞卷积层是连缀在一起的,基本就类似于一系列不同大小的卷积层级联,没看出和多尺度的联系在哪,也没找到解释,可能作者意思是只要使用了不同大小的卷积核就算是多尺度。)

空洞卷积感受野的计算
空洞卷积感受野的计算和普通卷积是一样的,只是需要将真实的卷积核大小用dilataionn rate补足即可。堆叠后的普通卷积感受野大小为4:
r n = r n − 1 + ( k n − 1 ) ∏ n = 1 n − 1 s i r_n=r_{n-1}+(k_n-1)\prod^{n-1}_{n=1}s_i rn=rn−1+(kn−

空洞卷积是一种用于图像分割任务的技术,旨在解决信息丢失问题。它通过设置dilationrate参数增加卷积的感受野,同时保持图像分辨率,避免下采样和上采样的信息损失。空洞卷积的优势包括扩大感受野和保持高分辨率,但也存在局部相关性丢失和小尺度检测困难的问题。后续改进方案如混合和标准化构造则试图弥补这些不足。
最低0.47元/天 解锁文章
6万+





