空洞卷积概念
????????空洞卷积(atrous convolutions)又名扩张卷积(dilated convolutions),向卷积层引入了一个称为 “扩张率(dilation rate)”的新参数,该参数定义了卷积核处理数据时各值的间距。
- 图a:3*3空洞为1的卷积,与普通卷积相同。
- 图b:3*3空洞为2的卷积,对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。
- 图c:3*3空洞为3的卷积,能达到15x15的感受野。对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长。
空洞卷积的用处:?
- 增加感受野:不做池化损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息;
- 捕获多尺度上下文信息:空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中填充dilation rate-1个0,因此,当设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息。
代码实现:
使用 tf.keras.layers.Conv2D()函数
#一般在第四、第五层卷积处使用
x = Conv2D(512, 3, activation='relu', padding='same', kernel_initializer='he_normal',dilation_rate=2)(pool3)
更多的使用在需要大的感受野的情况下,例如在目标检测中大物体的使用,对于小物体空洞卷积并不适用。
|