膨胀卷积的缺点_【Deep Learning】空洞卷积(膨胀卷积)解析

本文深入探讨了空洞卷积(dilated convolution)的概念,以3*3卷积核和膨胀系数2为例,解释了膨胀系数如何影响卷积核尺寸和元素间隔。空洞卷积的主要作用在于不增加计算量的情况下扩大卷积的视野,使得输出更稠密。通过caffe源码解析,展示了卷积核膨胀的计算过程。
摘要由CSDN通过智能技术生成

前言:在阅读SSD网络的时候,看到conv6层中pad=6,且有个参数dilation: 6。在平时没怎么注意到整个参数,今天对其进行记录。

layer {

name: "fc6"

type: "Convolution"

bottom: "pool5"

top: "fc6"

param {

lr_mult: 1.0

decay_mult: 1.0

}

param {

lr_mult: 2.0

decay_mult: 0.0

}

convolution_param {

num_output: 1024

pad: 6

kernel_size: 3

weight_filler {

type: "xavier"

}

bias_filler {

type: "constant"

value: 0.0

}

dilation: 6

}

}

caffe源码中conv_layer.cpp关于空洞卷积的计算:

const int kernel_extent = dilation_data[i] * (kernel_shape_data[i] - 1) + 1;

caffe源码中caffe.proto关于dilation的定义:

// Factor used to dilate the kernel, (implicitly) zero-filling the resulting

// holes. (Kernel dilation is sometimes referred to by its use in the

// algorithme à trous from Holschneider et al. 1987.)

repeated uint32 dilation = 18; // The dilation; defaults to 1

下面以卷积核3*3为例,膨胀系数为2,那么卷积核膨胀之后,卷积核的单边尺寸就变成了2*(3-1)+1,即卷积核的尺寸变成了5*5。

e45348ca2142c3b3886fc1c1d5ce382c.png

卷积核膨胀是将卷积核扩张到膨胀尺度约束的尺度中,并将原卷积核没有占用的区域填充零

上图中,卷积核由3*3膨胀到了5*5,从图中可以看到,膨胀后的卷积核中空洞的部分填充了一些0,在caffe源码中具体的膨胀操作是在img2col中实现。

1)下面分析一下膨胀系数与卷积核膨胀的关系,首先回顾卷积核膨胀公式:

膨胀后卷积核尺寸 = 膨胀系数 * (原始卷积核尺寸 - 1) + 1

2)卷积核的膨胀系数等于卷积核高和宽方向的扩张倍数,将上式中1移到等式左侧:

膨胀的卷积核尺寸 - 1 =膨胀系数 * (原始卷积核尺寸 - 1)

3)原始卷积核在膨胀后,元素间的空洞间隔与膨胀系数的关系:

元素间隔 = 膨胀系数 - 1

例如:上图中膨胀系数为2,那么膨胀后卷积核元素间的空洞间隔为2-1=1.

空洞卷积的作用:

①:使输出变得更稠密。

②:在不增加计算量的情况下,扩大了卷积核视野(卷积核尺寸变大)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值