1.6 简述空洞卷积的设计思路
-
背景:在语义分割(Semantic Segmentation)任务中,一般需要先缩小特征图尺寸,做信息聚合;
然后再复原到之前的尺寸,最终返回与原始图像尺寸相同的分割结果图。
-
问题:常见的语义分割模型,如全卷积网络(Fully Convolutional Networks,FCN),一般采用池化操作(pooling)来扩大特征图的感受野,但这同时会降低特征图的分辨率,丢失一些信息(如内部数据结构、空间层级信息等),导致后续的上采样操作(如转置卷积)无法还原一些细节,从而限制最终分割精度的提升。
-
解决:如何不通过池化等下采样操作就能扩大感受野呢?空洞卷积应运而生。
-
概念:顾名思义,空洞卷积就是在标准的,以增加卷积核的感受野。
空洞卷积引入了**扩张率(dilation rate)**这个超参数来指定相邻采样点之间的间隔:扩张率为r的空洞卷积,卷积核上相邻数据点之间有r-1个空洞,如图1.7所示(图中有绿点的方格表示有效的采样点,黄色方格为空洞)。
-
计算空洞卷积核尺寸
标准卷积核尺寸 | 对应的扩张率为r的空洞卷积核尺寸 |
---|---|
k w × k h {k_w} \times {k_h} kw×kh | k e + ( r − 1 ) ( k e − 1 ) , e ∈ { w , h } {k_e} + (r - 1)({k_e} - 1),e \in \{ w,h\} ke+(r−1)(ke−1),e∈{w,h} |
特别地,扩张率为1的空洞卷积实际上就是普通卷积(没有空洞)。 |
- 计算空洞卷积感受野
空洞卷积感受野的计算,与普通卷积感受野的计算方式基本一致,只是将其中的卷积核尺寸替换为扩张后的卷积核尺寸(即包括空洞在内)。
普通卷积感受野的计算:详见 https://blog.csdn.net/seasonsyy/article/details/132816967
感受野计算公式:
F ( i ) = ( F ( i + 1 ) − 1 ) × S t r i d e + K s i z e F(i)=(F(i+1)−1)×Stride+Ksize F(i)=(F(i+1)−1)×Stride+Ksize
以图1.7为例,假设依次用图(a)、(b)、©中的空洞卷积来搭建三层神经网络:
stride=1
第三层是图1.7(a)中的空洞卷积,扩张后的卷积核尺寸为3×3;
第二层是图1.7(b)中r=2的空洞卷积,扩张后的卷积核尺寸为5×5;
第一层是图1.7©中r=4的空洞卷积,扩张后的卷积核尺寸为9×9。
根据感受野公式:
F ( i ) = ( F ( i + 1 ) − 1 ) × S t r i d e + K s i z e F(i)=(F(i+1)−1)×Stride+Ksize F(i)=(F(i+1)−1)×Stride+Ksize
感受野计算 | 感受野大小 (如图1.7中黄色阴影部分所示) | |
---|---|---|
第三层 | F(3)=3×3 | 3×3 |
第二层 | F(2)=(F(3)-1)×1+5=7 | 7×7 |
第一层 | F(1)=(F(2)-1)×1+9=15 | 15×15 |
由此可以看出,空洞卷积利用空洞结构扩大了卷积核尺寸,不经过下采样操作即可增大感受野,同时还能保留输入数据的内部结构。
参考文献:
《百面深度学习》 诸葛越 江云胜主编
出版社:人民邮电出版社(北京)
ISBN:978-7-115-53097-4
2020年7月第1版(2020年7月北京第二次印刷)