DeepLab v3+(2018):基于空洞可分离卷积的编码器解码器在语义分割中的应用

DeepLab v3+(2018):基于空洞可分离卷积的编码器解码器在语义分割中的应用

导出时间:2025/11/23 20:33:05

1、研究背景与动机

(1)语义分割任务的核心挑战

语义分割的目标是给图像中的每一个像素分配一个语义标签(例如“人”、“车”、“道路”)。相比于分类或检测,它对细节的要求更高,不仅要识别物体,还要描绘清晰的边界。 在这一过程中,研究者遇到了两大难题:
  1. 多尺度上下文信息不足:物体可能大小差异极大,小猫和整栋楼都可能出现在图像中,模型必须理解全局背景与局部细节。
  2. 边界细节丢失:卷积网络在提取高层语义信息时,通常会通过下采样导致分辨率降低,从而丢失物体边界的清晰细节。

(2)已有方法的局限

  • 空间金字塔池化(PSPNet, DeepLab 系列) 通过多尺度卷积或池化捕捉全局上下文,解决了“看得不够远”的问题,但在恢复物体边界时仍显粗糙

  • 编码器-解码器结构(U-Net, SegNet) 通过对称的上采样路径逐步恢复分辨率,擅长还原清晰边界,但上下文信息不足,容易“看不清全局”。
换句话说,一个善于理解语义,但边界模糊;另一个边界清晰,但缺乏全局感知。

(3)DeepLab v3+ 的动机

研究者希望结合两类方法的优点
  • 借助 DeepLab v3 的空洞卷积 + ASPP 模块 → 捕捉丰富的多尺度语义信息;
  • 引入解码器结构 → 弥补边界模糊的问题,使得分割结果更清晰;
  • 进一步采用深度可分离卷积(Xception 改进版) → 在不显著增加计算量的前提下,提高模型速度和精度。
最终,DeepLab v3+ 的目标是: 👉 既能看清全局,又能抠清边界,同时保持较高的效率。

✅ 总结一句话: DeepLab v3+ 的研究动机,就是要解决“只会理解,不会抠图”与“只会抠图,不懂语义”之间的矛盾,把上下文感知与边界细化统一到一个高效的框架中

2、核心创新点

(1)空洞卷积 + ASPP(继承与强化)

  • 空洞卷积(Dilated Convolution) 通过在卷积核中引入“空洞”,在不增加参数量的情况下扩大感受野。这样模型可以同时看近处和远处,既捕捉局部细节,也获得全局上下文。
  • ASPP(Atrous Spatial Pyramid Pooling) 在 DeepLab v3 中,研究者用多种不同采样率的空洞卷积并行提取特征,类似于“多副望远镜同时观察”,从而增强对多尺度目标的感知。 DeepLab v3+ 保留了 ASPP 模块,作为语义特征的核心提取器。
👉 贡献:保证了模型对大目标与小目标的兼容性。

(2)编码器-解码器结构的引入

  • 问题:DeepLab v3 在全局感知上很强,但输出结果边界模糊,尤其是小目标或细长物体容易“糊掉”。
  • 改进:DeepLab v3+ 增加了解码器模块,从高层语义特征逐步恢复分辨率,并与浅层的细节特征融合。
  • 效果:边界预测更清晰,物体轮廓更准确。
👉 贡献:把 PSPNet/U-Net 里“细化边界”的思想,和 DeepLab 的“全局上下文”结合。

(3)深度可分离卷积(Xception Backbone 改进)

  • 为了提升效率,DeepLab v3+ 在 ASPP 和解码器中大量采用 深度可分离卷积
  • 这种卷积方式把标准卷积分解为 逐通道卷积 + 逐点卷积,大幅降低计算量,同时保持精度。
  • 与传统卷积相比,能在 不显著增加 FLOPs 的情况下训练更深更强的网络。
👉 贡献:在精度和效率之间取得平衡,使 DeepLab v3+ 更易落地应用。

(4)强大的可扩展性

  • DeepLab v3+ 并不是一个“单一模型”,而是一套灵活的框架。
  • 研究者可以自由选择不同的主干网络(如 ResNet、Xception),甚至能在后续引入 Transformer 主干。
  • ASPP + 解码器的组合成为后续分割模型的重要“标准模块”。
👉 贡献:提供了一种“通用可插拔设计”,奠定了未来很多改进的基础。

一句话总结: DeepLab v3+ 的核心创新点在于 —— 把 DeepLab v3 的多尺度上下文感知(ASPP),与 U-Net 式的边界细化(解码器),以及高效的深度可分离卷积三者融合,最终实现“既能看全局,又能抠边界”的实例分割框架

3、模型的网络结构

image.png
整个网络可以分为 编码器(Encoder)解码器(Decoder) 两大部分:

🔵 编码器(Encoder):看懂全局语义

  1. DCNN 主干网络
    • 输入图像先经过深层卷积神经网络(常用 ResNet、Xception),提取高层语义特征。
    • 为了避免分辨率过低,主干里会用 空洞卷积(Atrous Conv) 替代部分下采样操作,保持更大特征图。
  2. ASPP 模块(Atrous Spatial Pyramid Pooling)
    • 这是 DeepLab 的核心。
    • 对高层特征图并行应用多种 不同采样率的空洞卷积
      • rate = 6 → 小感受野,看细节;
      • rate = 12 → 中尺度;
      • rate = 18 → 大感受野,看全局;
      • 还额外加了 全局平均池化分支 → 提供整图的全局上下文。
    • 这些结果拼接在一起,再通过 1×1 Conv 融合,得到多尺度语义特征。
👉 总结:编码器负责“看懂是什么”,并且“既看局部又看全局”。

🔴 解码器(Decoder):还原边界细节

  1. 低层特征引入
    • 从主干网络的浅层取出一份分辨率较高的特征(含更多边缘细节,但语义弱)。
    • 1×1 Conv 降维,避免通道数太多。
  2. 高低特征融合
    • ASPP 输出的高层语义特征 先上采样 ×4,使它和低层特征大小匹配。
    • 两者进行 Concat 拼接,融合“语义信息”和“边界细节”。
  3. 卷积细化 & 上采样
    • 拼接后的结果经过 3×3 Conv 精细卷积,抑制噪声,细化边界。
    • 最后再上采样 ×4,恢复到接近原图大小,输出逐像素预测结果(即分割掩码)。
👉 总结:解码器负责“把懂语义的粗糙图”加工成“边界清晰的分割图”。

⚙️ 整体流程类比

  • 编码器:像一个懂得全局语义的“策展人”,能看懂整张图里有什么。
  • 解码器:像一个“精修画师”,专门把轮廓线条描清楚。
  • 最终两者合作 → 既知道这是只猫,也能把猫的毛边勾勒得很清楚

一句话总结: DeepLab v3+ 的网络结构是 “ASPP 编码器 + 轻量解码器” —— 编码器通过多尺度空洞卷积理解全局语义,解码器则补充边界细节,让分割结果既聪明又精细。

4、存在的重大缺陷

虽然 DeepLab v3+ 在语义分割任务中表现非常优秀(既能看全局,又能抠边界),但它仍存在一些明显的不足:

① 计算复杂度高,速度慢

  • 空洞卷积 + ASPP 并行分支,再加解码器模块,使得计算量和显存消耗都比较大。
  • 在高分辨率图像(如 Cityscapes 2048×1024)上,推理速度明显偏慢。
  • 不适合移动端、实时应用(如自动驾驶、AR/VR 需要几十帧每秒)。
👉 问题本质:多尺度卷积并行计算,效率不足。

② 对边界细节仍然有限

  • 虽然比 v3 改进了,但解码器仍然很“轻量”,输出分辨率只提升 4 倍。
  • 对于细长物体(如电线、杆子)或小目标(如交通灯),分割边缘仍可能模糊。
  • 本质上,它的边界恢复能力不如 U-Net 那种逐层解码
👉 问题本质:边界恢复不彻底,精细结构容易丢失。

③ 上下文建模方式有限

  • ASPP 虽然捕捉了多尺度信息,但它本质上是固定采样率的卷积
  • 它并不能真正建模像素之间的长程依赖关系。
  • 在复杂场景(比如多个相似物体紧挨着)时,模型仍容易混淆。
👉 问题本质:依赖规则卷积,缺少全局自适应建模。

④ 工程依赖强,训练难度较高

  • DeepLab v3+ 依赖较多技巧:
    • 大批量训练(否则 BatchNorm 不稳定);
    • 多尺度输入和测试增强
    • 精心挑选的 backbone(如 Xception)
  • 在资源有限的环境下,复现其最佳效果会比较困难。
👉 问题本质:对硬件与训练技巧要求高,不够“开箱即用”。

⑤ 仅限于语义分割,无法区分实例

  • DeepLab v3+ 输出的是语义分割图:同一类别的像素会被涂成一样的颜色。
  • 它无法像 Mask R-CNN 那样区分“这是第一个人,这是第二个人”。
  • 在实际任务(如自动驾驶、人群检测)中,缺乏实例区分会成为瓶颈。
👉 问题本质:不具备实例感知,只能做类别级别的分割。

✅ 总结

DeepLab v3+ 的缺陷可以总结为: “强但不快,细节有限,上下文建模固定,训练门槛高,且仅限语义级别”
这也正是后续模型(如 HRNet、OCRNet、SegFormer、MaskFormer)改进的方向:
  • 要么提升 速度与轻量化
  • 要么增强 边界和小目标分割
  • 要么引入 自注意力/Transformer 做更灵活的上下文建模;
  • 要么扩展到 实例分割/全景分割

5、后续基于此改进创新的模型

DeepLab v3+ 可以看作是“空洞卷积 + ASPP + 轻量解码器”的代表。它奠定了现代分割模型的一个重要范式,但由于其缺陷(速度慢、边界细节有限、上下文建模固定),后续大量工作在此基础上做了不同方向的改进。

(1)轻量化与实时分割

  • BiSeNet 系列(2018, 2021) 双通路结构(语义路径 + 细节路径),在保持语义能力的同时提升推理速度。 针对 DeepLab v3+ 的“计算复杂度高、不适合实时”的缺陷。
  • DFANet, Fast-SCNN 通过高效 backbone + 简化的多尺度结构,实现移动端或实时应用(如自动驾驶)。
👉 改进点:牺牲部分精度,换取速度和可部署性。

(2)边界与细节增强

  • HRNet(2019) 通过保持高分辨率特征流(而不是像 DeepLab 那样依赖上采样)来增强边界与小目标分割效果。
  • PointRend(2020) 引入逐点细化策略,把粗掩码逐步细化成高分辨率边界,克服 DeepLab v3+ 的“边界模糊”问题。
👉 改进点:解决细长物体、小目标边界模糊的问题。

(3)上下文建模的新方式(替代 ASPP)

  • DANet(2018)、OCRNet(2019) 用自注意力机制(Non-local / Object-Contextual Representations)建模全局依赖,替代 ASPP 的固定卷积感受野。
  • CCNet(2019)、GCNet(2019) 引入循环注意力/全局上下文模块,更灵活地整合全图信息。
👉 改进点:不再依赖“固定采样率的空洞卷积”,而是通过自注意力建模全局关系。

(4)全景分割与任务拓展

  • Panoptic FPN(2019)语义分割(像素级)实例分割(目标级) 融合为 全景分割(Panoptic Segmentation)。 弥补 DeepLab v3+ 只能做语义分割的不足。
  • MaskFormer / Mask2Former(2021, 2022) 用统一的 mask classification 思路,处理语义、实例和全景分割。 Transformer backbone 替代卷积,直接解决 DeepLab v3+ 在上下文建模上的不足。
👉 改进点:扩展到全景任务,用统一框架解决多种分割问题。

(5)Transformer 时代的延续

  • SETR(2020) 首批基于 Vision Transformer 的语义分割模型,证明不依赖空洞卷积也能取得 SOTA。
  • SegFormer(2021) 把轻量 Transformer backbone 与简洁解码头结合,在效率和精度之间取得很好的平衡。
  • Mask2Former(2022) 完全抛弃 ASPP/卷积,采用 Transformer 统一处理语义、实例、全景三类任务。
👉 改进点:Transformer 替代 ASPP,解决长程依赖 + 灵活多任务。