空洞卷积(Dilated Convolution)
别名:膨胀卷积、扩张卷积。
最早起源于语义分割。
引入了超参数扩张率(dilation rate),定义为卷积核各个值之间的距离。以3*3卷积为例,如下图:
对于以上三张图,分别对应扩张率为1,2,3,感受野分别为3,5,7(灰色区域)。
这里有一个计算膨胀卷积核的感受野(即等效普通卷积核大小)的公式:
k
′
=
k
+
(
k
−
1
)
×
(
d
−
1
)
k^{'}=k+(k-1)\times (d-1)
k′=k+(k−1)×(d−1)
其中, k ′ k^{'} k′表示等效的普通卷积核的大小, k k k表示空洞卷积核的大小, d d d表示膨胀率
对于图a, k = 3 , d = 1 , 得到 k ′ = 3 + 2 × ( 1 − 1 ) = 3 k=3,d=1,得到k^{'}=3+2\times (1-1)=3 k=3,d=1,得到k′=3+2×(1−1)=3
对于图b, k = 3 , d = 2 , 得到 k ′ = 3 + 2 × ( 2 − 1 ) = 5 k=3,d=2,得到k^{'}=3+2\times (2-1)=5 k=3,d=2,得到k′=3+2×(2−1)=5
对于图c, k = 3 , d = 3 , 得到 k ′ = 3 + 2 × ( 3 − 1 ) = 7 k=3,d=3,得到k^{'}=3+2\times (3-1)=7 k=3,d=3,得到k′=3+2×(3−1)=7
从以上可以看出,对比膨胀卷积和普通卷积,在参数量相同的情况下,膨胀卷积具有更高的感受野。相反,那么在他们有相同的感受野的情况下,膨胀卷积具有更少的参数。
特性
总结一下空洞卷积有以下特性:
- 1.空洞卷积可以在不改变输出图像的特征图的尺寸的情况下增大感受野(前提是需要进行合适的padding)
- 2.空洞卷积能够在不增加参数的前提下增加感受野的大小
- 3.通过连续的卷积,膨胀卷积的感受野呈指数增加
特性1
空洞卷积最重要的特点就是空洞卷积可以在不改变输出图像的特征图的尺寸的情况下增大感受野(前提是需要进行合适的padding)
从一维卷积示意图可以观察到有无空洞卷积不影响输出特征图的尺寸(对于图b和图c)。
对于一般的输出特征图的维度有如下计算公式:
O
H
=
H
+
2
P
−
K
S
+
1
OH=\frac{H+2P-K}{S}+1
OH=SH+2P−K+1
O W = W + 2 P − K S + 1 OW=\frac{W+2P-K}{S}+1 OW=SW+2P−K+1
其中,输入大小为(H,W),卷积核大小为(K,K),填充为P,步幅大小为S,输出大小为(OH,OW)
故对于图a:
O
H
=
7
+
(
2
×
1
)
−
3
2
+
1
=
4
OH=\frac{7+(2\times 1)-3}{2}+1=4
OH=27+(2×1)−3+1=4
同理,对于图b:
O
H
=
7
+
(
2
×
1
)
−
3
1
+
1
=
7
OH=\frac{7+(2\times 1)-3}{1}+1=7
OH=17+(2×1)−3+1=7
对于图c:
O
H
=
7
+
(
2
×
2
)
−
5
1
+
1
=
7
OH=\frac{7+(2\times 2)-5}{1}+1=7
OH=17+(2×2)−5+1=7
这里用的是膨胀卷积核的等效普通卷积核大小
K
′
K^{'}
K′。故在进行合适的填充的情况下,使用等大的膨胀卷积将不会改变输出特征图的大小。
当然我们也可以从中推出填充padding的计算公式:
P
=
(
O
H
−
1
)
×
S
+
K
′
−
H
2
P=\frac{(OH-1)\times S + K^{'} - H}{2}
P=2(OH−1)×S+K′−H
特性2
从图中可以看出,同样一个 3 × 3 3\times3 3×3的卷积核,能够达到一个 5 × 5 5\times5 5×5和 7 × 7 7\times7 7×7的卷积核的感受野,空洞卷积能够在不增加参数的前提下增加感受野的大小,只需要增加膨胀率的大小即可。但是一味地增加膨胀率对某些小物体的识别并不是很友好。
特性3
对于连续多次进行相同卷积核大小的卷积运算,膨胀卷积的感受野呈指数增加,普通卷积呈线性增加。
对于卷积的感受野有以下计算公式:
R
F
i
+
1
=
R
F
i
+
(
k
′
−
1
)
×
S
i
RF_{i+1}=RF_i+(k^{'}-1)\times S_i
RFi+1=RFi+(k′−1)×Si
故对于上图来说,连续进行三次K=3的膨胀卷积,对应的膨胀率为[1,2,3]:
- 第一层卷积感受野:3
- 第二层卷积感受野: 3 + ( 5 − 1 ) × 1 = 7 3+(5-1)\times 1=7 3+(5−1)×1=7
- 第三层卷积感受野: 7 + ( 7 − 1 ) × 1 = 13 7+(7-1)\times 1=13 7+(7−1)×1=13
但是对于普通卷积来说:
- 第一层卷积感受野:3
- 第二层卷积感受野: 3 + ( 3 − 1 ) × 1 = 5 3+(3-1)\times 1=5 3+(3−1)×1=5
- 第三层卷积感受野: 5 + ( 3 − 1 ) × 1 = 7 5+(3-1)\times 1=7 5+(3−1)×1=7
弊端
详细见原论文的3.2. Hybrid Dilated Convolution (HDC)。
1. The Gridding Effect
比如连续进行多次膨胀率为2的膨胀卷积时,会出现这种情况,如下图:
那么该如何避免?(设第i层的膨胀率为 r i r_i ri,那么有[ r 1 , r 2 , r 3 r_1,r_2,r_3 r1,r2,r3])
作者在论文中提出了一种解决方案–HDC(混合膨胀卷积),HDC 的目标是让一系列卷积运算的感受野 RF 的最终大小完全覆盖一个方形区域,没有任何孔或缺失的边缘。作者提出了以下几点来完成这个目标。
-
组内的膨胀率不应该有公因子关系(最小公因子不大于1)
避免使用例如[2,4,8]这种结构,否则仍会在顶层中出现gridding effect -
膨胀系数准则(目的是让 M i M_i Mi<k)
M i = m a x [ M i + 1 − 2 r i , M i + 1 − 2 ( M i + 1 − r i ) , r i ] M_i=max[M_{i+1}-2r_i,M_{i+1}-2(M_{i+1}-r_i),r_i] Mi=max[Mi+1−2ri,Mi+1−2(Mi+1−ri),ri]
-
例如卷积核大小k=3时,设r=[1,2,9]。
那么 M 3 = 9 M_3=9 M3=9
M 2 = m a x [ 9 − 2 × 2 , 9 − 2 ( 9 − 2 ) , 2 ] = 5 > k = 3 M_2=max[9-2\times 2,9-2(9-2),2]=5>k=3 M2=max[9−2×2,9−2(9−2),2]=5>k=3
那么此时就会发生gridding effect -
例如卷积核大小k=3时,设r=[1,2,5]。
那么 M 3 = 5 M_3=5 M3=5
M 2 = m a x [ 5 − 2 × 2 , 5 − 2 ( 5 − 2 ) , 2 ] = 2 < k = 3 M_2=max[5-2\times 2,5-2(5-2),2]=2<k=3 M2=max[5−2×2,5−2(5−2),2]=2<k=3
M 1 = m a x [ 2 − 2 × 1 , 2 − 2 ( 2 − 1 ) , 1 ] = 1 < k = 3 M_1=max[2-2\times 1,2-2(2-1),1]=1<k=3 M1=max[2−2×1,2−2(2−1),1]=1<k=3
那么此时始终满足膨胀系数准则,就不会出现gridding effect
- 设计锯齿状的结构
如[1,2,3,1,2,3]这一的结构,作者在论文中指出通过这样做,顶层可以在与原始配置相同的区域中访问来自更广泛像素范围的信息。
2. Long-ranged information might be not relevant
简单来说就是膨胀卷积的目的是为了扩大感受野,但是对于一些小的物体,它并不需要过大的感受野,所以,在处理不同大小的物体时,我们应该合理设计膨胀卷积网络,以免得不偿失。
Reference
这一篇详细解释了膨胀卷积:
https://zhuanlan.zhihu.com/p/113285797
这一篇通过图像解释了膨胀卷积的各类情况,并提供了对应的绘图代码连接(更易理解):
https://blog.csdn.net/nanzhou520/article/details/134877999
这一篇详细解释了膨胀卷积,还分析了使用膨胀卷积的原因:
https://blog.csdn.net/weixin_44878336/article/details/124746929