基于空洞卷积(或称膨胀卷积)的概念,这类卷积能够在不增加参数数量或显著降低空间分辨率的情况下,扩大滤波器的感受野。在此基础上,我们现在考察如何有效地在多个尺度上获取上下文信息。虽然单个空洞卷积能扩大感受野,但图像中的对象可能以多种尺寸出现,这使得模型需要同时理解不同空间范围内的上下文。对于复杂场景,简单地使用固定膨胀率的空洞卷积可能不够充分。由谷歌研究人员开发的 DeepLab 系列模型,代表了一系列具有影响力的架构,它们专门设计用于解决语义分割中的多尺度问题。DeepLab 各版本(v1、v2、v3、v3+)引入并改进的核心创新是空洞空间金字塔池化(ASPP)。空洞空间金字塔池化 (ASPP)ASPP 通过使用多个以不同膨胀率并行操作的滤波器来处理输入的卷积特征层,以此应对多尺度问题。这能同时有效地获取多个不同尺度下的图像上下文。其核心思想包括:并行空洞卷积: 对相同的输入特征图应用多个具有不同膨胀率(例如,率分别为6、12、18)的并行空洞卷积层。每个膨胀率会从每个特征点周围不同大小的区域获取信息。1x1 卷积: 并行包含一个标准的1x1卷积。这有助于在原始尺度上获取精细信息。图像级特征(全局上下文): 包含图像级上下文通常通过一个全局平均池化分支实现。输入特征图被池化成一个单一特征向量,然后通过一个1x1卷积(通常带有批归一化和ReLU激活),再双线性上采样回输入特征图的空间尺寸。这个分支提供全局概括信息。拼接与合并: 所有并行分支(空洞卷积、1x1卷积、图像池化)产生的特征图沿通道维度进行拼接。最终处理: 这个组合后的特征图通常会通过一个最终的1x1卷积(同样常带有批归一化和ReLU),以汇合多尺度信息并降低通道维度,从而在分割预测层之前生成最终的特征表示。ASPP 模块的结构可以如下所示:digraph G { rankdir=LR; node [shape=box, style=filled, fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=9]; subgraph cluster_input { label = "输入特征图"; style=filled; color="#e9ecef"; input [label="来自骨干网络\n(例如,ResNet 输出)", shape=cds, fillcolor="#adb5bd"]; } subgraph cluster_aspp { label = "ASPP 模块"; bgcolor="#f8f9fa"; node [fillcolor="#a5d8ff"]; conv1x1 [label="1x1 卷积"]; atrous1 [label="空洞卷积\n膨胀率 = r1"]; atrous2 [label="空洞卷积\n膨胀率 = r2"]; atrous3 [label="空洞卷积\n膨胀率 = r3"]; subgraph cluster_pool { label="图像池化"; style=filled; color="#dee2e6"; node [fillcolor="#74c0fc"]; pool [label="全局平均池化"]; pool_conv [label="1x1 卷积"]; upsample [label="上采样"]; pool -> pool_conv -> upsample; } concat [label="拼接", shape=invtrapezium, fillcolor="#4dabf7"]; final_conv [label="1x1 卷积\n(汇合)", fillcolor="#228be6"]; input -> conv1x1 -> concat; input -> atrous1 -> concat; input -> atrous2 -> concat; input -> atrous3 -> concat; input -> pool; upsample -> concat; concat -> final_conv; } subgraph cluster_output { label = "输出"; style=filled; color="#e9ecef"; output [label="ASPP 特征\n(到解码器/预测)", shape=cds, fillcolor="#adb5bd"]; } final_conv -> output; }空洞空间金字塔池化(ASPP)模块的结构。输入特征图由具有不同特点(1x1卷积、不同膨胀率的空洞卷积、图像池化)的并行分支处理,然后进行拼接和合并。DeepLab 架构变体DeepLab 模型通常使用强大的CNN分类器(如ResNet或Xception)作为骨干网络,但会对其进行修改以适应密集预测任务。这通常包括:将最终的全连接层替换为卷积层。移除后续的池化层或改变其步幅。在骨干网络的后期阶段采用空洞卷积,以在不牺牲感受野的情况下保持更高的空间分辨率输出(更大的特征图)。例如,输出步幅可能从32(分类中常见)减小到16或8。然后将 ASPP 模块应用于这个修改后的骨干网络提取的特征。DeepLabv3: 在DeepLabv2的基础上改进,通过使用具有不同膨胀率的ASPP和图像级特征,更可靠地整合多尺度上下文。它通常在ASPP内部应用批归一化。DeepLabv3+: 通过添加一个简单但有效的解码器模块,进一步增强了架构。这个解码器通常获取ASPP输出中丰富的语义特征,并将其与骨干网络早期阶段的低级特征(包含更精细的空间细节)结合。这种结合过程通常涉及对ASPP输出进行上采样并将其与低级特征(在经过1x1卷积进行通道降维后)进行拼接,然后通过几个卷积层来完善分割图,尤其改善了物体边界处的预测。优点DeepLab 方法,特别是结合 ASPP 后,为语义分割带来了显著的优点:多尺度上下文: 明确地在多个尺度上获取信息,使模型能有效应对物体尺寸的变化。受控特征分辨率: 采用空洞卷积计算密集特征图,与单独的传统上采样/反卷积方法相比,无需过多的内存或计算。先进的性能: DeepLab 变体在 PASCAL VOC 2012 和 Cityscapes 等标准语义分割基准测试中持续取得了出色的成果。通过将强大的骨干网络与 ASPP 的多尺度上下文聚合能力以及可能的精修解码器结合,DeepLab 系列为实现图像中细致的像素级理解提供了一个强大的框架。在实现或使用 DeepLab 模型时,必须仔细考虑骨干网络的选择、ASPP 中使用的具体膨胀率以及解码器的结构(如果使用),因为这些元素会影响性能和计算成本。