论文1:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS(ICLR 2016)
论文2:Understanding Convolution for Semantic Segmentation(CVPR 2018)
动机
传统的网络结构通常用一系列Pooling操作降低分辨率(分辨率低,通道数不变的话,后面计算量会更少),增加感受野(提取多尺度特征),但Pooling操作会丢失许多局部的信息,这对于需要精确定位的任务,尤其分割任务是不利的,因为分割任务中采样后通常还有一个恢复分辨率的过程
于是就有了Dilated Convolution:聚合多尺度上下文信息(感受野)而不丢失分辨率信息
Dilated Convolution
Dilated Convolution其实就是在标准卷积中填充0,普通卷积可以看成是Dilated Convolution的特例,以下图 3×3 卷积为例:
-
a:标准 3×3 卷积,与红色点对应,感受野 3×3
-
b: 3×3 的 2-dilated conv,每个红点周围都填充零,感受野瞬间 7×7
-
c:与 b 一样,只是感受野更大
Dilated Convolution实现方式可以有两种:
- 卷积核填充 0
- 等间隔采样
Context Network
效果还是不错的
棋盘效应
Dilated Convolution kernel 并不连续,意味着
- 同样会忽略掉一些位置的信息
- 位置相差较远时,像素点间相关性较低
举个极端的例子:特征图大小 5×5,用 3×3 的 2-dilated conv,白色部分的像素就被忽略了
所以只采用大 dilation rate conv ,对小目标的检测效果可能不佳,因为丢失了较多细节,很多像素点被忽略,容易形成棋盘效应:
HDC
HDC(Hybrid Dilated Convolution):混合不同 rate 的 Dilated Convolution 卷积层,使卷积计算覆盖整个区域,混合原则:
- dilation rate 公约数不能大于1
- 满足 M i ≤ k M_i\leq k Mi≤k,其中 k k k 表示卷积核大小, r = [ r 1 , r 2 , ⋯ , r i ] r= [r_1, r_2, \cdots,r_i] r=[r1,r2,⋯,ri] 为 HDC 每层的dilation rate, M i M_i Mi 由下式得到:
HDC可以像模块一样搭建,如下图:
DUC 为 Dense Upsampling Convolution: 将
W
d
×
H
d
×
C
\frac Wd\times \frac Hd \times C
dW×dH×C 特征图通道增加到
W
d
×
H
d
×
(
C
×
d
2
)
\frac Wd\times \frac Hd \times (C\times d^2)
dW×dH×(C×d2) ,然后用 reshape
代替常规的 Upsampling
操作,将特征图变换回
C
C
C 通道:
W
×
H
×
C
W\times H \times C
W×H×C,尺寸与 mask 标签匹配
参考文献
【1】总结-空洞卷积(Dilated/Atrous Convolution)
【2】Dilated Convolutions(空洞卷积)
【3】Understanding Convolution for Semantic Segmentation
【4】[基础知识整理] 空洞卷积(Dilated/Atrous Convolution)
【5】感受野
【6】语义分割–Understand Convolution for Semantic Segmentation