Dilated Convolution介绍
相关的两篇论文分别是[ICLR2016]MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS 和 [CVPR2017]Dilated Residual Networks。作者为Fisher Yu(http://www.yf.io/) 。
1.问题背景
- 语义分割,目标检测检测任务需要高分辨率的featuremap来获得更准确的结果。
- 要想保证高分辨率的特征图可能导致感受野过小,而上述语义分割,目标检测需要大量上下文信息。
- 于是出现下采样再上采样的U型结构网络,同时兼顾感受野和featuremap分辨率。但pooling操作会损失信息。
2.解决方法
通过pooling不断下采样会损失信息,降低精度。单纯地增大卷积核会导致计算复杂度增加。而 dilated convolution 可以解决上述问题。
3.Dilated Convolution
通常被译作扩张卷积或空洞卷积。(个人观点:因为dilated和形态学处理的膨胀运算单词一样,所以我经常叫作膨胀卷积。)
2-dilated卷积如下图所示,就是卷积核的元素间隔拉大了。所以2-dilated 3 * 3卷积实际上会覆盖一个5*5的区域。覆盖的区域更大,自然而然感受野就更大。(图片引自水印出处)
dilation_kernel_size = dilation * (original_kernel_size - 1) + 1
此外,论文作者在2015年12月就向caffe提交了dilated卷积的实现代码,有兴趣的话可以到github caffe的提交记录中看到大家当时对于是否用dilation命名的讨论,还挺有意思。
caffe中配置dilation参数如下,直接在prototxt中配置dilation参数即可:
repeated uint32 dilation = 18; // The dilation; defaults to 1
4.dilated卷积核的感受野
- F1 F 1 由 1-dilated 卷积产生,每个元素感受野为3*3