空洞卷积 hole Atrous 原理+图解析+应用

    xiaoxiao2024-10-31  98

    2015 CVPR

    Multi-Scale Context Aggregation by Dilated Convolutions

    Hole

    (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 positions

    RF 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的同时减少参数。

    deeplab v1

    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)

    deeplab v2

    (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 extraction

    FCN等网络重复使用max-pooling和striding会显著降低生成的feature map的空间分辨率(32倍),他们的解决措施是上采样以及反卷积,但这需要额外的内存和时间。

    下采样 - 卷积 - 上采样

    高分辨率输入 feature map的空洞卷积 r=2 Dense feature extraction

    本文提倡的无采样卷积

    - 第一种是插入空洞(零元素)或者对输入特征地图同等稀疏地采样,来对滤波器进行上采样。 - 第二种方法,通过一个等于atrous convolution rate r的因子对输入特征图进行子采样,对每个 r×r 可能的偏移,消除隔行扫描生成一个 ![title](https://leanote.com/api/file/getImage?fileId=5ccfe5f1ab6441430c006312) 降低的分辨率图。 接下来对这些中间特征图使用标准卷积,隔行扫描生成原始图像分辨率。
    最新回复(0)