两种特殊卷积:转置卷积和空洞卷积

目录

1.转置卷积(反卷积)

2.空洞卷积

3.总结


image-20211211175809006

1.转置卷积(反卷积)

简介:

我们一般可以通过卷积操作来实现高维特征到低维特征的转换。比如在一 维卷积中,一个5维的输入特征,经过一个大小为3的卷积核,其输出为3维特征。 如果设置步长大于1,可以进一步降低输出特征的维数。但在一些任务中,我们需 要将低维特征映射到高维特征,并且依然希望通过卷积操作来实现。

假设有一个高维向量为x \in \mathbb{R}^{d} 和一个低维向量为 z \in \mathbb{R}^{p}, p<d

如果用仿 射变换来实现高维到低维的映射,z=W x,  其中 W \in \mathbb{R}^{p \times d} 为转换矩阵。我们可以很容易地通过转置 W来实现低维到高维 的反向映射, 即 \boldsymbol{x}=W^{\mathrm{T}} \boldsymbol{z} 

需要说明的是,上面两个公式并不是逆运算,两个映射只是形式上 的转置关系

我们将低维特征映射到高维特征的卷积操作称为转置卷积(Transposed Convolution),也称为反卷积(Deconvolution)。

其实,在卷积网络中,卷积层的前向计算和反向传播也是一种转置关系。

对一个n维的向量z,和大小为m的卷积核,如果希望通过卷积操作来映射 (即宽卷积)。 到更高维的向量,只需要对向量z 进行两端补零p = m − 1,然后进行卷积,可以 得到n + m − 1维的向量。 转置卷积同样适用于二维卷积。下图给出了一个步长 s = 1,无零填充 p = 0的二维卷积和其对应的转置卷积。

image-20211211175132883

微步卷积 :

我们可以通过增加卷积操作的步长 s > 1 来实现对输入特征的下采样操作,大幅降低特征维数。同样,我们也可以通过减少转置卷积的步长 s < 1 来实现上采样操作,大幅提高特征维数。 步长s < 1的转置卷积也称为微步卷积 (Fractionally-Strided Convolution)。为了实现微步卷积,我们 可以在输入特征之间插入0来间接地使得步长变小!

补充内容:什么是降(下)采样?什么是上采样?

降(下)采样:

使得采样点数减小,可以通过每隔几个点在进行采样,比如常见的生成缩略图等。

升(上)采样:

一种通过插值的方式进行的采样,比如生成放大图等。

如果卷积操作的步长为s > 1,希望其对应的转置卷积的步长为 1/ s,需要在输入特征之间插入s − 1个0来使得其移动的速度变慢

以一维转置卷积为例,对一个n维的向量z,和大小为m的卷积核,通过对向 量z 进行两端补零p = m − 1,并且在每两个向量元素之间插入d个0,然后进行 步长为1的卷积,可以得到(d + 1) × (n − 1) + m维的向量。

下图给出了一个步长s = 2,无零填充p = 0的二维卷积和其对应的转置卷积:

image-20211211175407151

2.空洞卷积

简介:

对于一个卷积层,如果希望增加输出单元的感受野,一般可以通过三种方式 实现:

  • 增加卷积核的大小;

  • 增加层数,比如两层3 × 3的卷积可以近似一层 5×5卷积的效果;

  • 在卷积之前进行汇聚操作。

缺点:

前两种方式会增加参数数量,而 第三种方式会丢失一些信息。

由此,空洞卷积应运而生!

空洞卷积(Atrous Convolution)是一种不增加参数数量,同时增加输出单元感受野的一种方法,也称为膨胀卷积(Dilated Convolution)

空洞卷积通过给卷积核插入“空洞”来变相地增加其大小。如果在卷积核的 每两个元素之间插入d − 1个空洞,卷积核的有效大小为


m^{\prime}=m+(m-1) \times(d-1)

其中d称为膨胀率(Dilation Rate)。当d = 1时卷积核为普通的卷积核。

空洞卷积实例:

image-20211211175730987

应用:

常见的DeNet网络和SSD网络就是应用的空洞卷积实例,详细见我的另两篇博客:

(2条消息) Backbone 之 DetNet:为检测而生(Pytorch实现及代码解析)_心之所向521的博客-CSDN博客

(2条消息) 单阶段多层检测器:SSD (理论及Pytorch代码详解)_心之所向521的博客-CSDN博客

3.总结

转置卷积:实现特征图低维到高维的目的!

空洞卷积:实现不增加参数量和丢失信息的情况下,有效的增加感受野的方法!

<think>好的,我现在要回答用户关于扩张卷积空洞卷积是否相同的问题。首先,我需要确认这两个术语是否指的是同一个概念。根据之前接触过的资料,这两个词在中文翻译中可能有不同的叫法,但很可能指的是同一种卷积方法。不过,为了确保准确性,我需要查阅相关的文献资料来验证这一点。 首先,扩张卷积(Dilated Convolution)空洞卷积(Atrous Convolution)这两个术语在论文教材中是否有明确的定义?我记得在计算机视觉领域,尤其是在图像分割任务中,比如DeepLab系列模型中,有提到使用Atrous Convolution来扩大感受野而不增加参数数量。而Dilated Convolution这个术语可能更多出现在其他文献中,比如WaveNet等模型中。不过,这可能只是术语使用上的不同,需要进一步确认。 接下来,我需要检查这两个术语的技术定义是否一致。扩张卷积的主要特点是在卷积核的元素之间插入空洞(即零值),从而扩大感受野。例如,一个3x3的卷积核,如果扩张率为2,那么实际的感受野会相当于5x5的普通卷积,但参数数量保持不变,因为插入的是空洞而不是新的参数。空洞卷积的描述是否也符合这一特性?是的,空洞卷积同样通过在卷积核中引入间隔来扩大感受野,因此两者的操作机制是相同的。 此外,参考用户提供的引用[1]中提到,转置卷积、深度可分离卷积等不同的卷积方法,但没有直接提到扩张或空洞卷积。不过,根据其他资料,例如DeepLab的论文,明确使用了Atrous Convolution,而其他文献如WaveNet则使用Dilated Convolution,但两者的技术细节一致,都是通过调整扩张率来改变感受野大小。这说明这两个术语其实是同一概念的不同翻译或不同领域的习惯用法。 还需要注意是否有其他可能的区别,比如是否在某些情况下有细微的差异。例如,是否有文献中区分了扩张卷积空洞卷积的不同应用场景或结构设计?根据目前的了解,没有这样的区分,两者在技术实现应用目的上完全一致,都是用来增加感受野的同时保持参数数量计算量。 因此,结论应该是:扩张卷积空洞卷积是同一概念的不同名称,没有实质性的区别。它们都通过引入扩张率来扩大卷积核的感受野,常用于需要捕捉更大范围上下文信息的任务,如语义分割或音频处理等。 在回答用户的问题时,需要明确指出这两个术语的等同性,并解释它们的原理应用场景,同时引用相关的资料支持结论,如DeepLab或WaveNet的论文作为例子。</think>扩张卷积空洞卷积是同一概念的不同名称,两者没有实质区别,仅为中文翻译差异。英文中均对应"Dilated Convolution"或"Atrous Convolution",其核心特征是通过在卷积核元素间插入空隙(零值)来扩大感受野,同时不增加参数数量。 ### 原理说明 标准卷积核的每个元素是连续排列的,例如$3\times3$卷积核覆盖局部9个像素。**扩张卷积**通过设置扩张率(dilation rate)$r$控制元素间距,当$r=2$时,实际等效感受野扩大为$5\times5$(如下图所示): $$ \text{感受野尺寸} = (k-1) \times r + 1 \quad (k为卷积核大小) $$ ### 技术特点 1. **参数效率**:保持原卷积核参数量的同时扩大感受野,例如$3\times3$扩张卷积($r=2$)与$5\times5$标准卷积的感受野相同,但参数从25个减少到9个[^2]。 2. **多尺度特征**:通过堆叠不同扩张率的卷积层,可捕获多尺度上下文信息(如DeepLabv3+模型[^3])。 ### 典型应用 - **语义分割**:在DeepLab系列中用于保持高分辨率特征图的感受野[^3] - **语音合成**:WaveNet利用扩张卷积建模长时序依赖[^4] - **图像生成**:部分GAN模型通过扩张卷积增强细节生成能力
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心之所向521

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值