膨胀卷积的缺点_【Deep Learning】空洞卷积(膨胀卷积)解析
前言:在阅读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.)
【膨胀卷积的缺点_【Deep Learning】空洞卷积(膨胀卷积)解析】repeated uint32 dilation = 18;
// The dilation;
defaults to 1
下面以卷积核3*3为例,膨胀系数为2,那么卷积核膨胀之后,卷积核的单边尺寸就变成了2*(3-1)+1,即卷积核的尺寸变成了5*5。
文章图片
卷积核膨胀是将卷积核扩张到膨胀尺度约束的尺度中,并将原卷积核没有占用的区域填充零
上图中,卷积核由3*3膨胀到了5*5,从图中可以看到,膨胀后的卷积核中空洞的部分填充了一些0,在caffe源码中具体的膨胀操作是在img2col中实现。
1)下面分析一下膨胀系数与卷积核膨胀的关系,首先回顾卷积核膨胀公式:
膨胀后卷积核尺寸 = 膨胀系数 * (原始卷积核尺寸 - 1) + 1
2)卷积核的膨胀系数等于卷积核高和宽方向的扩张倍数,将上式中1移到等式左侧:
膨胀的卷积核尺寸 - 1 =膨胀系数 * (原始卷积核尺寸 - 1)
3)原始卷积核在膨胀后,元素间的空洞间隔与膨胀系数的关系:
元素间隔 = 膨胀系数 - 1
例如:上图中膨胀系数为2,那么膨胀后卷积核元素间的空洞间隔为2-1=1.
空洞卷积的作用:
①:使输出变得更稠密。
②:在不增加计算量的情况下,扩大了卷积核视野(卷积核尺寸变大)。
推荐阅读
- 灰色预测gm(1|灰色预测gm(1、1)的模型python代码_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...
- python训练模型_Java读取python训练的模型
- python膨胀卷积_Pytorch中膨胀卷积的用法详解
- VS无法创建项目
- 机器学习|机器学习(2)-朴素贝叶斯的理解和代码实现
- numpy|numpy库的使用-读取数据
- python|python-pandas dataframe正则筛选包含某字符串的列数据str.contains()
- 卷积|理解转置卷积与空洞卷积
- Python全栈系列[更新中]|Python零基础入门篇 - 53 - 文件的读取
- Python全栈系列[更新中]|Python零基础入门篇 - 51 - 文件的创建与写入