空洞卷积介绍
空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。 利用添加空洞扩大感受野,让原本3x3的卷积核,在相同参数量和计算量下拥有5x5(dilated rate =2)或者更大的感受野,从而无需下采样。
具体是在普通卷积中间填充不参与卷积运算的空洞的结构。对于dilation rate=2,3×3大小的卷积核来说,其卷积过程如下图所示。由图可以看到,其等效的卷积核大小为5×5,而参与运算的只有部分点,更多的是不参与运算的空洞。
计算误区
网上很多的感受野计算公式为:
F
=
2
(
r
a
t
e
−
1
)
∗
(
k
−
1
)
+
k
F=2(rate-1)*(k-1)+k
F=2(rate−1)∗(k−1)+k
rate代表空洞率,k代表卷积核尺寸。这个式子实际计算的是特定的级联卷积实现的感受野,而非单个空洞卷积。且级联的卷积选取也必须具有一定规律,以常用的3×3卷积为例,空洞率的选取必须依次为1、2、4、8、16…。对应级联起来形成的感受野大小为:
dilation=1, F = 2 * (1 - 1) * (3 - 1) + 3 = 3
dilation=2, F = 2 * (2 - 1) * (3 - 1) + 3 = 7
dilation=4, F = 2 * (4 - 1) * (3 - 1) + 3 = 15
dilation=8, F = 2 * (8 - 1) * (3 - 1) + 3 = 31
dilation=16, F = 2 * (16 - 1) * (3 - 1) + 3 = 63
卷积过程示意见下,如图是依次经过普通卷积,空洞率为2和空洞率为4对应的感受野范围。
误区就在这里,参考网上的一些说法,很容易把上述的感受野计算公式当成单独的空洞卷积形成的感受野。比如,对于空洞率为4的空洞卷积来说,按上图公式计算得到感受野为15,此感受野其实是了普通卷积和空洞率为2以及空洞率为4的空洞卷积级联实现的,而非单独的空洞率为4的卷积。那么,对于单独空洞卷积形成的感受野大小来说,正确的计算方法应该是什么呢?方法很简单,见下。
正确的计算方法
要计算感受野大小,我们直接看此空洞卷积等效的卷积核大小是多少就行了。比如对于3×3,空洞率为2的卷积,等效卷积核大小为5×5,那么这个就是它单独的感受野;如果空洞率为4,则等效的卷积核大小为9×9,即为单独的感受野。
再回看上面级联的情况,还是以3×3普通卷积、空洞率为2和空洞率为4的空洞卷积级联为例,此可以等效为3×3、5×5、9×9的普通卷积级联,计算感受野过程如下:
3×3, F = 1+(3-1)* 1 = 3
5×5, F = 3 + (5 - 1) * 1 = 7
9×9, F = 7 + (9 - 1) * 1 = 15
结果和之前的级联空洞卷积计算公式结果一样。
结论: 计算空洞卷积感受野,直接等效为对应尺寸的普通卷积即可。