2015 CVPR
Multi-Scale Context Aggregation by Dilated Convolutions
(Both large feature map & receptive field)
hole algorithm:up-sample the original filter by a factor of the strides(rate=2) efficient dense sliding window feature extraction
standard convolution : responses at only 1/4 of the image positionsconvolve image with a filter “with holes”:responses at all image positionsRF and stride
按照公式,stride变小,要想保持receptive field不变,那么,就应该增大kernel size。于是就有了接下来的hole算法。
Example:
pooling layer stride = 2,convolution layer kernel size = 2,convolution layer第一个点的receptive field是{1,2,3,4},size为4.
为了得到更加dense的feature map,将pooling layer stride改为1,如果这个时候保持convolution layer的kernel size不变的话,可以看到,虽然是更dense了,可是感受野RF变小了 = {1,2,3}, size为3.
采用hole算法,在kernel里面增加“hole”,kernel size变大,相当于卷积的时候跨过stride减小额外带来的像素,就可以得到我们想要的RF.
卷积核直观上可以以通过对原卷积核填充0得到,不过在具体实现上填0会带来额外的计算量,所以实际上是通过 im2col函数(caffe)调整像素的位置实现的。
这样通过hole算法,我们就得到了一个8s(stride)的feature map,比起FCN的32s已经dense很多了,并且RF不变。
**conclusion:**感受野要在一个合理的区间,在语义与位置信息中谋求平衡,并辅之以dilated conv,扩大感受野、保持大的feature map的同时减少参数。
problem:how to get dense score map
FCN是把第一个conv 设置 padding为100,这样做比较粗糙。
deeplab更加优雅的处理方式
1.为了更dense(stride =8),最后的两个池化层去掉了下采样:将VGG网络的pool4和pool5层的stride由原来的2改为了1。 减小stride导致了receptive field(RF)变小,对semantic info不利2.pooling后的卷积层的卷积核改为了空洞卷积(Hole算法 ),扩大感受野,解决感受野变小问题。aim:Both large feature map & receptive field
network:
把最后的全连接层FC6、7、8改造成卷积层
pool4的stride由2变为1,则紧接着的conv5_1, conv5_2和conv5_3中hole size为2。
接着pool5由2变为1, 则后面的fc6中hole size为4。fc7,8为标准卷积
由于Hole算法让feature map更加dense,所以网络直接用差值上采样就能获得很好的结果,而不用去学习上采样的参数了(FCN中采用了de-convolution)
(a)sparse feature extraction
采用标准卷积的稀疏特征提取。 input feature 是由 stride=2 的 maxpooling 产生的,分辨率低
(b)Dense feature extradction
input feature 是由 stride=1 的 maxpooling 产生的,和标准卷积比,感受野小。为了和标准卷积感受野一样大,使用空洞卷积来增加kernal size来增加感受野
计算:
x[i]: 1-D input signal
w[k]: filter of length K
速率参数 r : 对应于采样输入信号的步长(标准卷积是速率r = 1的特例,上图空洞卷积 r=2)
the output y[i] :
空洞卷积和标准卷积不同:
低分辨率输入 feature map的标准卷积 sparse feature extractionFCN等网络重复使用max-pooling和striding会显著降低生成的feature map的空间分辨率(32倍),他们的解决措施是上采样以及反卷积,但这需要额外的内存和时间。
下采样 - 卷积 - 上采样
高分辨率输入 feature map的空洞卷积 r=2 Dense feature extraction本文提倡的无采样卷积
- 第一种是插入空洞(零元素)或者对输入特征地图同等稀疏地采样,来对滤波器进行上采样。 - 第二种方法,通过一个等于atrous convolution rate r的因子对输入特征图进行子采样,对每个 r×r 可能的偏移,消除隔行扫描生成一个  降低的分辨率图。 接下来对这些中间特征图使用标准卷积,隔行扫描生成原始图像分辨率。