本节摘要:空洞卷积在核元素之间插入空洞,不增加参数却扩大感受野,从而少做下采样也能看见远上下文。空洞空间金字塔并行若干空洞率,再融合多尺度。DeepLab 系列把这套接到分类骨干上,适合目标大小悬殊的场景分割。率选不好会棋盘采样,小物体仍会漏。
阅读完本节,你应当能够:
分类骨干爱把图缩到很小再看全局。分割舍不得格子。折中:后面几层用空洞卷积,步长保持 1,核仍 3×3,但洞率为 2 时实际覆盖 5×5 的野,洞率 4 覆盖更宽。参数还是 9 个。于是输出特征图比传统分类网更密,边界有地方写。
洞率 r 表示相邻权重之间隔 r-1 个空。r=1 就是普通卷积。多层同 r 会让采样点呈网格,图上有的像素从来没被中心看到,这叫网格效应。系列工作用不同 r 的组合或后面跟普通卷积来填。你调参时不要把所有层设成同一个大 r。
# 空洞卷积:dilation 即空洞率,padding 要配上以免尺寸漂 nn.Conv2d(c, c, 3, padding=rate, dilation=rate)
原文把空洞卷积与空间金字塔池化放在一节。SPP 来自检测:不同窗口池化再拼,使尺度变化不那么伤。ASPP 把窗口换成不同空洞率的卷积,并行看近、看中、看远,再拼通道后压回。常加一条全局平均池化来补真正的图像级上下文。
想象田间同时用三种倍率的望远镜看同一垄:近看叶,中看株,远看垄形。输出拼在一起交给后面的分类头。实现上各分支输出同空间尺寸,通道拼接。计算量随分支数涨,但比把输入金字塔(同一张图缩多种尺度跑多次)便宜。
DeepLab 还有条件随机场修边的早期做法,后来网络变强后常省掉。工程上你更可能用的是:骨干输出 stride 8 或 16 的特征 → ASPP → 1×1 → 上采样到原图。训练环仍是第 4 章那条。损失仍是交叉熵加 Dice,类多时交叉熵权重大一些。
| 手段 | 保格子 | 多尺度 | 显存 |
|---|---|---|---|
| 更深下采样再 U 型拉回 | 靠跳跃 | 靠层级 | U-Net 式高 |
| 空洞少下采样 | 特征更密 | 靠 r | 特征图大,也吃显存 |
| ASPP 并行 | 同左 | 显式并联 | 分支越多越贵 |
| 图像金字塔 | 好 | 显式 | 最贵 |
⚠️ 常见坑:padding 没随 dilation 改,特征图越卷越小,与掩码对不齐。
💡 关键直觉:空洞是在用稀疏采样换野。野变大了,采样点变稀,所以要用多率互补。
小图、单一尺度的细胞,U-Net 更直接,ASPP 的远野帮不上忙还费显存。极小目标:大空洞可能跳过它,需要小 r 分支或更高分辨率特征。街景、航拍、室内全景这类尺度乱的,ASPP 对胃口。
率的组合常用 6、12、18 配 stride 16 的特征,这是常见配方而不是物理定律。特征更密时(stride 8)率要缩小,否则野超出图。超出图的空洞核大量采到填充,等于看边框。
原文 PyTorch 示例展示空洞与 ASPP 模块用法。接到你的环时,先冻结骨干看头能不能学,再整体微调。多尺度输入增强(第 6.1 节)与 ASPP 是朋友:一个在数据里变尺度,一个在网里看多尺度。

可以在解码器里用空洞,也可以在 U-Net 最底层加 ASPP。产品决策看数据:尺度乱且图大,偏 DeepLab 式头;样本少且要细边,偏 U-Net。两者都赢不了第 3 章基线时,回到成像和标注。不要把「上了 ASPP」写进周报当进展,要看少数类交并比。
特征 stride 16 时,6、12、18 是常见并联。stride 8 时同样三个率会让野过大、采到填充,应改成 2、4、8 或类似缩小版。自己算:野大约与 rate 乘核大小同量级,和输入边长比一比。野大于图,等于看黑边。全局池化分支要把向量广播回空间再拼,实现漏广播会在拼接处崩或静默错位。
图像金字塔(同一张图多种尺度跑多次再融合)精度有时更好,贵在算力。ASPP 是折中。产品延迟紧时优先 ASPP;离线可以金字塔。两者一起上要消融,否则不知道贵在哪。
小目标:在 stride 16 的图上可能只占一个格子。空洞再大也救不了已经没了的格子。需要更高分辨率特征或解码器跳跃,这又把 DeepLab 头和 U 型结合起来。结合时仍只改模块,环不变。
早期 DeepLab 用它修边。现在多数项目靠网络和形态学。边缘合同极严且延迟允许,可以当后处理试,验证两列对比。不要默认打开。
padding 公式:dilation 为 r、核 3 时,padding 常取 r 以保尺寸。写错会每层少 2r 圈,几层后特征图塌掉。单元测试:随机张量过 ASPP,断言高宽不变。这个测试比看论文图更值钱。
尺度乱的街景、航拍,把本节当默认候选;尺度单一的细胞,回到 U-Net。用第 2.4 节的最短边分布决定,不要用爱好决定。
随机张量过 ASPP,断言空间尺寸不变。padding 随 dilation。stride 16 用较大率,stride 8 把率缩小,野大于图会看填充。网格效应用多率互补。小而匀的目标回 U-Net。极小目标在 stride 16 上只占一格,要更高分辨率特征或跳跃,可与 U 型结合但仍只换模块。条件随机场不默认。图像金字塔更贵,延迟紧用 ASPP。最短边分布决定家族,不爱好。
ASPP 高宽不变测过再训。率随 stride 缩。野大于图会看边。小目标回 U-Net 或加更密特征。最短边分布决定家族。全局池化广播漏实现会在拼接处静默错位,用固定输入看通道维是否按预期增加。padding 公式写在模块注释。图像金字塔与 ASPP 一起上必须消融,否则算力账单无法解释。
ASPP 单元测试随机张量高宽不变、通道按分支数增加。率表随 stride 键切换。野大于输入边长则配置非法。最短边分布低于阈值建议家族改 U-Net,脚本可警告。全局池化后广播尺寸断言。padding 注释含公式。金字塔开关默认关,与 ASPP 同时开必须有消融实验 id。小目标策略写「更密特征或跳跃」而不是「再加大率」。网格效应用棋盘输入看是否漏采,漏采则加小率分支。结合 U 型时仍只换模块对象,环与损失版本保持第 4 章。DeepLab 头不是街景必修,分布说了算。条件随机场默认关,打开要两列指标。
反例档案:所有层同一大率,棋盘漏采小目标。加小率分支后漏采下降。第二份:野大于图,特征在看填充边。配置非法检查挡住。金字塔与 ASPP 同开无消融,账单说不清。最短边警告改家族,分布说了算。全局池化漏广播在通道维断言处红灯。
口令卡:高宽不变测、率随 stride、野大于图非法、短边警告改家族、广播断言、padding 公式、金字塔默认关要消融 id、小目标不加盲大率、棋盘漏采加小率、环版本保持第 4 章。CRF 默认关两列。分布说了算。
插模块前:ASPP 高宽测、率表随 stride、野大于图拒配置、广播断言、padding 注释、金字塔关或有消融 id、CRF 关。短边警告。棋盘漏采则加小率不得只加大率。环与损失保持第 4 章版本号。结合 U 型仍只换对象。分布不乱时脚本建议改回 U-Net,建议可驳但须写理由。
ASPP 高宽测试不过不准训。率表不随 stride 变不准训。野大于图的配置非法。广播后尺寸不对不准训。金字塔与 ASPP 同开无消融编号不准训。只加大率应对漏采不准训。短边很小仍选本家族必须写驳回建议的理由。环版本必须仍是第 4 章那套。CRF 默认关,开则两列指标。padding 无公式注释退回。
现场抽问:高宽测过了吗?率随 stride 变了吗?野有没有大于图?广播对了吗?消融编号在哪?漏采是不是只加大率?短边理由写了吗?环还是第 4 章版本吗?CRF 开了两列没有?padding 注释有公式吗?
失败演练壬:高宽测试不过仍训,应拒。所有层同一大率导致漏采还只加大率,应拒。野大于图仍跑,应拒。金字塔与 ASPP 同开无编号,应拒。短边很小不写理由,应拒。环换了一套损失口径,应拒。CRF 开了只报一列,应拒。广播错了通道维对不上,应拒。padding 没公式还出棋盘,应先修注释与实现。分布不乱时强行本家族,必须留下驳回建议的书面理由否则作废。
配置校验器拒绝:高宽测失败、同率到底、野超图、无消融编号的双开、短边无理由、环口径漂移、CRF 单列、广播错、无公式 padding。校验器不过不准创建训练作业。分布不乱的驳回建议必须附在作业单上。
校验器拒绝九类非法配置。作业单没有驳回建议附件时,短边数据不得选用本家族。环口径必须仍指向第 4 章评估包版本。双开无编号直接失败。这些检查让空洞节从调参故事变成可拒绝的配置。
非法配置九类由校验器一次性报全,不要只报第一项。作业单附件缺驳回建议则短边数据改回 U-Net 家族。评估包版本钉死在第 4 章发布号。双开必须有消融编号否则创建失败。
一次性报全九类非法,避免修一项再撞下一项。短边数据默认改回 U-Net,只有附件里的书面理由能改回来。第 4 章评估包版本号写进本家族配置,漂移即失败。消融编号缺失的双开作业创建失败后,编号规则写在配置注释里再重试。注释里没有规则视为仍缺编号,创建继续失败。短边改回 U-Net 之后若仍坚持本家族,书面理由必须含最短边统计出处。出处缺失视为无理由,家族改回不得复议。复议只会把最短边统计再拖一周,默认改回立即生效。
空洞率要覆盖目标尺度:全是小裂纹就不必堆大膨胀。ASPP 多分支输出须对齐再融合,有一分支空间尺寸跑偏,整图会棋盘。最短边若被改回普通 U-Net,须重新走选型评审,禁止个人仓库静默回退。
下一节转向实例:在检测框里画掩码,解决「同类要拆开计数」。