Atrous 这个单词来源于法语中的 à trous,意思是 “有洞的” 或 “带孔的"。它描述了一种特殊的卷积形式,即在卷积核的采样点之间插入“孔洞”或间隔,以扩大感受野。
https://blog.csdn.net/mrjkzhangma/article/details/104929302
空洞卷积(Atrous Convolution)的详细介绍
空洞卷积(Atrous Convolution),也被称为扩张卷积(Dilation Convolution),是一种扩展标准卷积的方法,通过在卷积核采样点之间插入间隔来扩大感受野,无需增加计算量或参数量。
1. 空洞卷积的基本原理
空洞卷积通过一个超参数 空洞率(dilation rate,通常记为 $r$) 来控制卷积核采样点之间的间隔。
- 标准卷积:采样点在输入特征图上的位置是连续的,比如 $3 \times 3$ 卷积核采样 $3 \times 3$ 的输入区域。
- 空洞卷积:采样点之间加入间隔,感受野随空洞率的增大而扩大。例如,空洞率 $r = 2$ 时,一个 $3 \times 3$ 卷积核采样的输入区域范围相当于 $5 \times 5$ 的感受野。
公式
给定输入信号 $x[i]$ 和权重 $w[k]$,空洞卷积的输出定义为: $$ y[i] = \sum_k x[i + r \cdot k] \cdot w[k] $$ 其中:
- $r$ 是空洞率。
- $k$ 是卷积核的索引。
当 $r = 1$ 时,空洞卷积退化为标准卷积。
2. 空洞卷积的直观理解
图示理解
以 $3 \times 3$ 卷积核为例:
- 标准卷积:直接覆盖 $3 \times 3$ 的连续区域。
- 空洞卷积($r = 2$):采样点之间插入一个间隔,覆盖的感受野变成 $5 \times 5$,但仍然使用 $3 \times 3$ 的参数。
类比
可以把空洞卷积看作将卷积核“拉伸”以覆盖更大的输入范围,但“拉伸”过程中并不引入额外的权重参数。
3. 空洞卷积的优点
- **
扩大感受野
- 空洞卷积通过调整采样间隔,可以覆盖更大的输入范围(感受野)。相比通过堆叠卷积层来扩大感受野,空洞卷积更加高效。
- 参数量不变
- 不同于增加卷积核大小或网络深度,空洞卷积只改变采样间隔,参数量和计算量与普通卷积一致。
- 有效捕捉多尺度信息
- 通过设置不同的空洞率,可以提取不同尺度的上下文特征,这对需要全局信息的任务(如语义分割)尤为重要。
- 适用于密集预测任务
- 在语义分割、目标检测等任务中,空洞卷积可以在不丢失分辨率的情况下提取多尺度特征,避免下采样导致的空间信息丢失。
4. 空洞卷积的限制
- 网格效应(Gridding Effect)
- 空洞卷积在较大的空洞率下可能导致输入特征图的采样点稀疏分布,丢失局部细节信息。这种现象被称为“网格效应”。
- 解决方案:结合多种空洞率(如 ASPP,见后续)或与标准卷积搭配使用。
- 对小目标不敏感
- 大感受野对大目标和全局信息有效,但可能忽略小目标或局部细节。
5. 应用场景
1) 语义分割
空洞卷积常用于语义分割网络(如 DeepLab 系列)中,帮助提取多尺度特征,避免下采样导致的细节丢失。
- ASPP(Atrous Spatial Pyramid Pooling):通过多个不同空洞率的卷积核并行操作,捕捉多尺度特征。
2) 自然语言处理
在序列建模中,空洞卷积可以扩大上下文窗口,捕捉长距离依赖关系。
3) 目标检测
用于提取更大范围的上下文特征,增强小目标的检测性能。
6. 实现示例
以下是 PyTorch 中实现空洞卷积的代码:
| |
7. 实际案例
DeepLab v3+
- 在 DeepLab v3+ 中,空洞卷积结合 ASPP,用于处理语义分割任务,能够同时捕捉局部和全局特征。
- 网络结构中空洞卷积的设置:
- ASPP 模块:并行使用空洞率为 $1, 6, 12, 18$ 的空洞卷积。
8. 总结
空洞卷积是一种强大的工具,用于扩大感受野而不增加计算量或参数量。它在处理需要多尺度特征提取和上下文信息的任务中具有显著优势。然而,对于精细任务或小目标场景,空洞卷积需要与其他卷积技术结合使用,以避免网格效应或局部信息丢失。
张芷铭的个人博客
💬 评论