#空洞卷积(Atrous Convolution) 原理解释+代码学习

空洞卷积(又称扩张卷积)通过引入扩张率参数,允许在不丢失信息的情况下增加卷积层的感受野。这种技术在保持输出尺寸不变的同时,能有效捕获更大范围的上下文信息。通过调整扩张率,空洞卷积能用于捕捉不同尺度的特征,常在目标检测等任务中用于处理不同大小的物体。例如,在3*3卷积核上设置不同的扩张率,可以实现从3x3到15x15的感受野,相比传统卷积,其感受野增长呈指数级而非线性。在代码实现中,可以使用`tf.keras.layers.Conv2D`函数并设置`dilation_rate`参数来应用空洞卷积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

空洞卷积概念

        空洞卷积(atrous convolutions)又名扩张卷积(dilated convolutions),向卷积层引入了一个称为 “扩张率(dilation rate)”的新参数,该参数定义了卷积核处理数据时各值的间距。

63ee4b791fb66c61fa6c2a55d17aa9dc.png

 

  • 图a:3*3空洞为1的卷积,与普通卷积相同。
  • 图b:3*3空洞为2的卷积,对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。
  • 图c:3*3空洞为4的卷积,能达到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)

更多的使用在需要大的感受野的情况下,例如在目标检测中大物体的使用,对于小物体空洞卷积并不适用。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值