Anthropic 工程博客 · 中文学习笔记Anthropic 工程笔记

    空洞卷积的多尺度上下文聚合:不降分辨率也能看得更远

    Multi-Scale Context Aggregation by Dilated Convolutions

    Day 11 · 补完 原论文发布:2015-11-23 发表:ICLR 2016 阅读约 7 分钟 原论文链接 ↗ 30u30 单元 ↗
    作者
    Fisher Yu, Vladlen Koltun
    依据版本
    arXiv v3
    30u30 单元
    11_dilated_convolutions(讲解、实现与练习请到原仓库查看,本站不翻译、不改编,见导读)
    ⚠️ arXiv 首版 2015-11-23,现行为第 3 版(2016-04-30),PDF 页眉写明“Published as a conference paper at ICLR 2016”。本笔记依据现行版本撰写。
    本页目录(16)
    1. 一句话总结
    2. 解决什么问题
    3. 核心思想
    4. 1. 空洞卷积
    5. 2. 感受野指数增长
    6. 3. 上下文模块
    7. 4. 恒等初始化
    8. 关键公式或机制
    9. 简化前端(论文第 4 节)
    10. 上下文模块的效果
    11. 图解
    12. 关键原话
    13. 和 Anthropic 笔记的对应
    14. 读的时候要注意
    15. 30u30 对应单元
    16. 延伸阅读

    一句话总结#

    把卷积核的采样点“撑开”而不是把图片“缩小”:间隔为 1、2、4、8……的 3×3 卷积层层堆叠,感受野按指数扩大,输出仍然保持原分辨率。

    解决什么问题#

    稠密预测(如语义分割)要为图片里的每个像素给出一个标签。论文指出它和图像分类在结构上不同:

    • 分类网络通过池化和带步长的卷积不断降低分辨率,以此汇聚全局信息,最后只输出一个类别。
    • 分割需要像素级精度和多尺度上下文推理同时具备。降分辨率能扩大视野,但会丢失细节;之后再上采样也补不回来。

    当时的分割模型大多是把分类网络改造一下拿来用。论文提出两个问题:改造后的网络里,哪些部分真正有用,哪些在稠密运行时反而降低精度?能不能设计专门用于稠密预测的模块?

    核心思想#

    1. 空洞卷积#

    普通卷积:(F ∗ k)(p) = Σ_{s + t = p} F(s) · k(t)。 空洞卷积(膨胀因子 l):(F ∗_l k)(p) = Σ_{s + l·t = p} F(s) · k(t)。

    也就是同一个卷积核,每隔 l 个位置取一个样本。l = 1 时就是普通卷积。论文特意说明:这里并不构造一个“膨胀后的卷积核”,而是改变卷积算子使用参数的方式;它也不等同于小波分解里的“à trous 算法”,后者只是用到了空洞卷积。

    2. 感受野指数增长#

    用 3×3 卷积核,第 i 层的膨胀因子取 2^i(1、2、4、8……)。论文图 1 给出:第一层每个元素的感受野是 3×3,第二层 7×7,第三层 15×15,一般地是 (2^{i+2} − 1) × (2^{i+2} − 1)。参数量只线性增长,感受野却指数增长,而且不丢分辨率、也不漏掉覆盖。

    3. 上下文模块#

    一个可插在任何分割网络后面的模块(论文表 1):前 7 层都是 3×3 卷积,膨胀因子依次为 1、1、2、4、8、16、1,最后一层 1×1 卷积。感受野达到 67×67。输入和输出都是 C 个特征图,形状不变,所以可以直接插进现有网络。由于前端输出的特征图是 64×64,作者在第 6 层后停止指数扩张。

    4. 恒等初始化#

    作者发现用常规的随机初始化训练这个模块,精度没有提升。改为恒等初始化:每层的卷积核初始时只把输入原样传给输出。这样模块一开始“什么都不做”,训练再让它慢慢学会利用上下文。论文也承认这可能让反向传播难以改变默认行为,但实验表明并非如此。

    关键公式或机制#

    简化前端(论文第 4 节)#

    作者把 VGG-16 改造成分割网络时:

    • 去掉最后两个池化和下采样层,后续卷积相应地改为 2 倍、4 倍膨胀,这样仍能用原分类网络的参数初始化;
    • 去掉中间特征图的填充,作者认为它在分类网络里有用,在稠密预测里既不必要也不合理。

    这个简化后的前端在 VOC-2012 测试集上比 FCN-8s 和 DeepLab 都高 5 个百分点以上,甚至比使用了 CRF 后处理的 DeepLab 高出 1 个多百分点(67.6% 对 66.4%)。论文把原因部分归于去掉了这些为分类设计的“残留部件”。

    上下文模块的效果#

    • 在三种结构(只有前端、前端加 dense CRF、前端加 CRF-RNN)上,加入上下文模块都提高了精度,大模块(Large)提升更多。
    • 论文认为上下文模块和结构化预测(CRF)可以叠加。
    • 用 COCO 额外数据训练的前端,在 VOC-2012 验证集上 69.8%、测试集上 71.3% mean IoU;加上大型上下文模块后在测试集上进一步提升(具体数字见论文表 4,本笔记未摘录,待核实)。
    • 附录还在 CamVid、KITTI、Cityscapes 三个城市街景数据集上做了实验。

    图解#

    flowchart LR
        I["前端输出:C 个 64×64 特征图"] --> L1["3×3,膨胀 1"]
        L1 --> L2["3×3,膨胀 1"]
        L2 --> L3["3×3,膨胀 2"]
        L3 --> L4["3×3,膨胀 4"]
        L4 --> L5["3×3,膨胀 8"]
        L5 --> L6["3×3,膨胀 16"]
        L6 --> L7["3×3,膨胀 1"]
        L7 --> L8["1×1 卷积 → C 个特征图(感受野 67×67)"]

    图解:上下文模块接收前端输出的 C 个 64×64 特征图,经过膨胀因子依次为 1、1、2、4、8、16、1 的 3×3 卷积和一层 1×1 卷积,输出同样形状的特征图,感受野扩大到 67×67。

    关键原话#

    “dilated convolutions support exponential expansion of the receptive field without loss of resolution or coverage.”

    和 Anthropic 笔记的对应#

    这是一篇计算机视觉论文,Anthropic 工程博客的笔记没有直接讨论它。下面是类比:

    Anthropic 笔记对得上的地方
    面向 AI 智能体的上下文工程本文要同时拿到“局部细节”和“大范围上下文”,靠的是有层次地扩大视野而不是把输入压缩变粗。上下文工程里的压缩和按需检索也是在细节与全局之间取舍。只是类比。
    构建高效的智能体作者发现去掉分类网络里为别的任务设计的部件,分割反而更准。那篇的立场也是:不要照搬复杂框架,先弄清哪些部件对当前任务真正有用。

    读的时候要注意#

    • 结构化预测仍然有用:论文的最好结果依然叠加了 CRF 或 CRF-RNN,空洞卷积没有取代它们。
    • “去掉部件更准”的结论有前提:比较对象是当时把分类网络直接改造的做法,并且训练细节不同,不能简单推广。
    • 恒等初始化是成败关键:论文明确说用常规初始化训练不出效果,复现时要注意。
    • 后来的发展:空洞卷积后来也被用于音频生成、序列建模等领域(待核实:本笔记未打开相关论文)。

    30u30 对应单元#

    • 30u30 的 Day 11 单元↗(仓库采用 CC BY-NC-ND 4.0,本笔记没有使用其内容)。
    • 路线位置:30u30 导读 的补完段,单元 2 视觉(Day 8 → 9 → 10 → 11 → 12)。

    延伸阅读#


    本笔记依据 2026-10-18 抓取的在线原文撰写,仅为导读与总结。原文:Fisher Yu, Vladlen Koltun,《Multi-Scale Context Aggregation by Dilated Convolutions》, ICLR 2016。

    本页目录