DeepLab系列算法介绍
DeepLab系列算法是谷歌提出的语义分割模型(语义分割:为图像中的每个像素分配一个类别标签,不区分同一类别的不同实例,只关心像素的类别。)
一、DeepLab v1 (2014)
核心思想:解决CNN在语义分割中的两个主要问题
-
降低特征图分辨率(分辨率过低):
-
问题:CNN中连续的池化(Pooling)和卷积步长(Stride)会不断降低特征图的空间尺寸,导致位置信息丢失,分割结果粗糙。
-
解决方案:空洞卷积 / 膨胀卷积
-
在标准卷积核的权重之间插入“空洞”(零值),从而在不增加参数数量和计算量的情况下,扩大卷积的感受野。
-
公式:
膨胀率 = r
, 即在标准卷积核中,每个点之间插入 (r-1) 个零。 -
好处:允许我们在深层网络中保持较大的特征图尺寸,从而保留更多空间信息。
-
-
-
空间不变性(物体多尺度):
-
问题:CNN的平移不变性使其难以捕捉物体的精细边界和细节。
-
解决方案:全连接条件随机场
-
将CNN的输出(一个粗糙的概率图)作为CRF的一元势能。
-
CRF通过考虑像素之间的颜色相似性和空间接近性来优化分割结果,使得在颜色边界处标签保持一致,从而细化物体边缘。
-
-
v1 架构总结:
-
主干网络:VGG-16
-
关键技术:空洞卷积 + 全连接CRF
-
贡献:引入了空洞卷积来解决分辨率问题,并展示了CRF对边缘细化的有效性。
二、DeepLab v2 (2016)
核心思想:更好地处理多尺度物体
DeepLab v2 在 v1 的基础上,针对“同一张图片中物体存在不同大小”的问题进行了重大改进。
-
空洞空间金字塔池化
-
动机:如何让网络同时捕捉不同尺度的上下文信息?
-
解决方案:ASPP 并行地使用多个具有不同膨胀率的空洞卷积层。
-
在同一个特征图上,分别应用膨胀率为 1, 6, 12, 18 的卷积(以及全局平均池化)。
-
这些分支分别捕捉了不同感受野范围内的上下文信息(从小范围局部特征到大范围全局上下文)。
-
最后将所有分支的输出进行融合,形成一个富含多尺度信息的特征。
-
-
比喻:就像用不同放大倍率的镜头同时观察同一个物体,然后综合所有镜头的信息来做出判断。
-
-
更强的骨干网络:将主干网络从 VGG-16 替换为 ResNet-101,利用了其残差连接的优势,使得网络可以更深,性能更强。
v2 架构总结:
-
主干网络:ResNet-101
-
关键技术:ASPP + 空洞卷积 + (全连接CRF作为后处理,后期版本逐渐弱化)
-
贡献:通过 ASPP 模块优雅地解决了多尺度问题,成为后续系列的核心组件。
三、DeepLab v3 (2017)
核心思想:进一步优化 ASPP,并完全摒弃 CRF 后处理
DeepLab v3 是一个更加自洽和强大的版本,它不再依赖计算昂贵的 CRF。
-
改进的 ASPP 模块:
-
问题:当膨胀率非常大时,3x3 卷积会退化为 1x1 卷积(因为只有中心权重是有效的)。
-
解决方案:
-
在 ASPP 中增加了 Image Pooling 分支:对特征图进行全局平均池化,然后通过 1x1 卷积,再上采样回原尺寸。这个分支提供了图像级别的全局上下文信息。
-
将各个膨胀率卷积层的通道数减少(使用 1x1 卷积),并进行批归一化,以降低计算复杂度。
-
最终,ASPP 包含:一个 1x1 卷积,三个 3x3 卷积(不同膨胀率),一个 Image Pooling 分支。
-
-
-
串行的空洞卷积模块:
-
在进入 ASPP 之前,先使用了一个由多个空洞卷积组成的模块,以捕获更密集的多尺度信息。
-
这个模块也采用了残差连接。
-
-
舍弃 CRF:通过上述改进,网络本身已经能够产生足够精细的分割结果,因此完全移除了计算复杂的全连接 CRF。
v3 架构总结:
-
主干网络:ResNet-101(并提出了改进的 Aligned ResNet)
-
关键技术:增强的ASPP(含Image Pooling) + 串行空洞卷积模块
-
贡献:形成了一个强大且端到端的训练框架,不再需要后处理,性能达到新的高度。
四、DeepLab v3+ (2018)
核心思想:引入编码器-解码器结构,进一步优化边界分割
这是目前最流行和实用的版本,它结合了 DeepLab 和类似 U-Net 的思想。
-
编码器-解码器结构:
-
编码器:使用 DeepLab v3 作为编码器。它通过空洞卷积和 ASPP 提取丰富的语义信息,但特征图尺寸较小。
-
解码器:
-
将编码器的输出上采样 4 倍。
-
从主干网络的中间层(浅层特征)提取相应的特征图(包含更多细节和边缘信息)。
-
将两者进行拼接,再通过几个简单的 3x3 卷积来融合特征,最后再次上采样得到最终的分割图。
-
-
好处:解码器利用浅层特征的空间细节信息来恢复物体的精细边界,同时利用深层特征的强大语义信息来保证分类准确性。
-
-
改进的 Xception 作为主干网络:
-
将 Xception 模型应用于语义分割,并为其添加了空洞卷积和深度可分离卷积,使其更加强大和高效。
-
v3+ 架构总结:
-
主干网络:ResNet-101 或 Aligned Xception
-
关键技术:编码器-解码器 + ASPP + 深度可分离卷积
-
贡献:通过简单的编解码结构,在保持强大语义能力的同时,显著提升了边界分割的精度,成为了语义分割的通用和强大基准模型。
总结:
版本 | 核心贡献 | 主干网络 | 关键技术 | 优缺点 |
---|---|---|---|---|
DeepLab v1 | 引入空洞卷积解决分辨率问题 | VGG-16 | 空洞卷积, CRF | 开创性工作,但依赖后处理CRF |
DeepLab v2 | 解决多尺度问题 | ResNet-101 | ASPP, 空洞卷积, CRF | 多尺度处理能力强,CRF仍显冗余 |
DeepLab v3 | 强大的端到端模型 | ResNet-101 | 增强ASPP, 串行空洞卷积 | 性能优异,完全端到端,但边界不够精细 |
DeepLab v3+ | 精细的边界分割 | Xception/ResNet | 编码器-解码器, ASPP | 当前主流版本,在语义和细节上取得最佳平衡 |
核心思想演进脉络
整个 DeepLab 系列的演进,始终围绕着以下几个核心问题展开:
-
如何保持高分辨率特征? -> 空洞卷积
-
如何捕捉多尺度上下文? -> ASPP
-
如何恢复精细的物体边界? -> 编码器-解码器结构
五、Max Deeplab (2021)
Max Deeplab 之前的局限
在 Max Deeplab 之前,包括 DeepLab v3+ 在内的几乎所有语义分割模型,都遵循一个 “像素分类” 的范式:
-
一个编码器(如 CNN)提取图像特征。
-
一个解码器(可能包含 ASPP)将特征上采样。
-
最后一个卷积层为每个像素输出一个类别概率分布。
-
损失函数(如交叉熵)是在像素级别计算的。
这种范式有两个主要问题:
-
语义歧义:对于一个孤立的像素,很难判断它属于哪个类别。模型需要看到整个物体的上下文才能做出正确决策,而像素级损失对此的引导不够直接。
-
无法处理“物体”概念:图像是由“物体”构成的,但像素级损失不显式地建模物体。这可能导致预测结果在语义上不一致(例如,一个物体被分成两部分,预测成两个不同的类别)。
Max Deeplab 的核心思想:走向“掩码分类”
Max Deeplab 彻底抛弃了“像素分类”的范式,转而采用了 “掩码分类” 的范式。这个思想来源于 实例分割 模型 Mask R-CNN 和 DETR。
“掩码分类”分为两步:
-
生成候选掩码:模型首先生成 N 个可能的目标掩码(即二值图,表示某个区域是否可能是物体)和对应的类别预测。
-
匹配与分类:将这 N 个预测的掩码与图像中的真实物体进行匹配,然后基于匹配结果计算损失。一个掩码对应一个可能的物体或“东西”。
Max Deeplab 的关键技术创新
为了在语义分割中实现“掩码分类”,Max Deeplab 引入了多项突破性技术:
1. 双路径Transformer架构
这是模型的骨架。它同时处理两种信息:
-
像素路径:类似于传统的CNN,负责提取详细的像素级特征。这保证了最终边界的精细度。
-
记忆路径:这是一组可学习的“记忆向量”或“物体查询”。每个记忆向量都致力于编码图像中某个潜在的“物体”或“区域”的全局信息。
-
这两条路径通过 双向注意力 机制进行交互:
-
记忆向量关注像素特征,以收集信息并形成候选掩码。
-
像素特征也关注记忆向量,以获取全局的、物体级别的上下文信息。
-
2. 联合预测掩码和类别
模型的核心输出是一组 (mask, class)
对。
-
通过记忆路径和像素路径的交互,每个记忆查询会输出一个类别预测。
-
同时,通过一个“掩码头”,模型会生成一个低分辨率的掩码图。这个掩码图与记忆查询相结合,通过点积操作,为每个查询生成一个全图的、高分辨率的二值掩码。
3. 使用匈牙利匹配损失
这是实现端到端“掩码分类”的关键。由于模型输出了 N 个 (mask, class)
对,而图像中的真实物体数量是不固定的,我们需要决定哪个预测对应哪个真实物体。
-
步骤:
-
使用 匈牙利算法 在 N 个预测和所有真实物体(加上“背景”类别)之间找到一个最优的双边匹配。匹配的成本由预测掩码与真实掩码的相似度(如Dice系数)和类别预测的准确性共同决定。
-
匹配完成后,为每个匹配上的预测计算 PQ-style 损失,即 Dice损失 + Focal损失。
-
Dice损失:直接优化预测掩码和真实掩码之间的重叠面积。这对分割任务非常有效。
-
Focal损失:用于分类,解决类别不平衡问题。
-
-
Max Deeplab 的优势
-
统一了语义分割和全景分割:它可以直接输出“事物”(可数的物体,如人、车)和“物品”(不可数的区域,如天空、草地)的实例级结果,无需任何后处理,自然成为了一个全景分割模型。
-
更好的全局上下文理解:通过记忆路径和注意力机制,模型能够以“物体”为单位进行推理,从而做出更语义一致的预测。
-
端到端训练:像 DETR 一样,它移除了之前分割管道中许多需要手工设计的部分(如NMS),实现了真正的端到端学习。
-
卓越的性能:在当时,它在多个分割基准数据集(如 Cityscapes, COCO)上取得了 state-of-the-art 的性能。
总结
特性 | 传统 DeepLab (v3+等) | Max Deeplab |
---|---|---|
范式 | 像素分类 | 掩码分类 |
核心输出 | 每个像素的类别概率 | 一组 (mask, class) 对 |
架构基础 | CNN + ASPP + 解码器 | 双路径Transformer |
损失函数 | 逐像素交叉熵损失 | 匈牙利匹配 + Dice/Focal 损失 |
任务定位 | 主要是语义分割 | 统一的语义/全景分割 |
关键思想 | 多尺度上下文、恢复分辨率 | 物体查询、端到端集合预测 |
简单来说,Max Deeplab 可以理解为将 DeepLab 的语义分割能力与 DETR 的端到端物体检测思想深度融合的产物。 它不再是简单地给像素打标签,而是先“认出”图像中有哪些物体和区域,再为它们生成对应的掩码,这是一种更接近人类视觉认知方式的分割方法。
虽然其模型结构相对复杂,计算成本也较高,但它指明了语义分割未来发展的一个重要方向。后续的许多工作(如 Mask2Former)都延续并简化了这种“掩码分类”的范式。