文章链接: 《MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS》
github项目链接: https://github.com/fyu/dilation
Introduction
什么是图像语义分割?
图像语义分割可以看作是pixel级别的分类,如下图,判断每一个像素属于哪一类目标。
还有其它一些应用比如图像去噪、关键点检测、超分辨图像重建等,这些应用与语义分割有着相同的需要着重考虑的地方:
(1) 像素级别的精度,即怎样处理局部信息;
(2) 目标级别的分割,即怎样整合全局信息;
为了解应对上面的问题,之前主要有两种处理策略:
(1) FCN系列,通过不断pooling下采样来得到更大感受野,最后反卷积回去原图尺寸;
(2) 金字塔系列,将图像resize到多个尺度分别分割,最后整合分割结果;
显然,上面两种方式为了获得全局信息(更大的感受野),所需要的参数量(计算量)都是比较大的。
Dilated Convolutions
直观来讲,Dilated Convolutions就是为了获得大的感受野。
插播一句:何谓感受野? 感受野范围内的任意元素变化都会影响到输出。
下图很直观的介绍了什么是 Dilated Convolutions 以及 感受野。
(a) 原始的 卷积,1-dilated,感受野为3 × 3 ;
(b) 在(a)的基础上进行 卷积,2-dilated,感受野为7 × 7 ;
(c) 在(b)的基础上进行 卷积,4-dilated,感受野为15 × 15 ;
由于padding和卷积的stride=1,卷积前后feature map大小可以保持不变,但每个元素的感受野指数增大。
Implementation
目前caffe的Convolution层直接支持Dilated操作:
repeated uint32 dilation = 18; // The dilation; defaults to 1
Dilated Convolution的最大价值是可以不改变feature map的大小而增大感受野。而之前的FCN使用pooling下采样来增大感受野,但随后又不得不通过Deconvolution或者upsampling来增大feature map大小,这样的一小一大总会损失很多信息。