DeepLab v3 + 是一种用于语义分割的深度学习模型,以下是关于它的详细介绍:
一、背景
空间金字塔池化模块或编码解码器结构用于深度神经网络中的语义分割任务。 前一种网络能够通过以多种速率和多种有效视场使用滤波器或池化操作探测传入特征来编码多尺度上下文信息,而后一种网络可以通过逐渐恢复空间信息来捕获更清晰的对象边界。
语义分割主要面临物体多尺度问题以及深度卷积神经网络(DCNN)多次下采样导致特征图分辨率变小、预测精度降低和边界信息丢失等问题。DeepLab v3 + 在 DeepLab v3 的基础上进行改进,主要目的是解决在处理大分辨率图像时耗时过多的问题,并更好地恢复目标边界细节。
二、网络构架
DeepLabv3+模型的网络结构。
图1 DeepLab v3+的网络结构
1、编码器(Encoder)
主要是 DeepLab v3 网络部分。图像进入主干网络(DCNN)后,获得两个特征层,浅层特征层直接进入解码器进行通道压缩(通过 1×1 卷积),以减少低层级的比重;深层特征进入编码器的空洞空间金字塔池化(ASPP)模块。ASPP 模块包括 1 个 1×1 卷积、3 个不同比率(6、12、18)的 3×3 空洞卷积以及一个图像全局的池化操作,这些操作后再接 1 个 1×1 卷积,编码器得到的特征具有更丰富信息,应具有更高比重。
1.1 主干网络模块(DCNN)
DeepLabv3+模型使用的卷积全部都是空洞可分离卷积,即空洞卷积结合深度可分离卷积,既保留了深度可分离卷积的高效性,又提升了对大尺度信息的捕捉能力。
本文使用的主网络模块(backbone)主要是改进后的Xception模型,作为DeepLabv3+语义分割任务的基础特征提取器。该模型与其他主干网络(如ResNet)相比,在计算效率和精度方面有显著的改进。以下是该主网络模块的详细介绍:
1.1.1 Xception模型的基础结构
Xception模型是Inception的一个改进版本,全称是“Extreme Inception”,它将标准的卷积操作分解为深度可分离卷积,这一操作将卷积核的空间卷积与通道间的卷积解耦。
深度可分离卷积基本流程是:
1. 通过逐通道卷积(Depthwise Convolution),分别在每个输入通道上应用卷积操作。
2. 通过逐点卷积(Pointwise Convolution,通常是1x1卷积)将不同通道的输出组合在一起,增强特征表示能力。
- 这种分解大幅减少了模型的参数量和计算复杂度,同时保持甚至提高了模型的精度。
1.1.2 空洞卷积的使用
- 在DeepLabv3+中,空洞卷积(Atrous Convolution)是Xception模型的核心部分之一。空洞卷积通过在卷积核之间插入空洞(即跳过一些像素),扩展了卷积核的感受野,允许网络捕捉到更广泛的上下文信息,而不增加计算量。
- 空洞卷积的使用特别适合语义分割任务,因为它能够在保持高分辨率的情况下提取密集的特征,并且更好地处理图像中的大尺度变化。
1.1.3 深度可分离卷积与空洞卷积的结合
- 在本模型中,Xception模型采用了空洞可分离卷积(Atrous Separable Convolution),将空洞卷积与深度可分离卷积结合。这样做的好处是,既可以保持深度可分离卷积的高效性,又可以通过空洞卷积扩大感受野,使模型能够捕捉到图像中多尺度的上下文信息。深度可分离卷积详解。
- 空洞可分离卷积不仅减少了计算复杂度,还使得网络可以更灵活地处理不同尺度的特征,特别是对图像中物体的边界和复杂结构有更强的分辨能力。
1.1.4 主网络的结构改进
改进之前的Xception模型:
改进之后的Xception模型:
DeepLabv3+使用的是改进之后的Xception模型:
- 在改进版Xception中,所有的最大池化(Max Pooling)操作都被深度可分离卷积所替代。深度可分离卷积在卷积核滑动时也能实现下采样,从而代替了最大池化。
- 通过这种方法,Xception在减少信息丢失的同时,保留了更细粒度的空间特征,并且提升了网络的分辨率。
- 为了提升模型的表达能力,Xception模型在DeepLabv3+中进一步加深了网络结构,特别是在中间部分(Middle Flow)加入了更多的卷积层。这些层允许模型在较深的网络层次上捕获更加复杂的高层次语义信息。
1.1.5 批归一化和ReLU激活函数
- 在每一个3X3深度卷积操作之后,Xception模型都会应用批归一化(Batch Normalization)和ReLU激活函数(DeepLabv3+模型结构途中未标出)。批归一化用于加速模型收敛和防止梯度消失,而ReLU激活函数确保非线性变换,使网络能够学习复杂的非线性关系。
1.1.6 高效的计算与应用
- Xception模型设计的一个关键优势在于,它通过使用深度可分离卷积和空洞卷积,实现了计算效率的极大提升。这意味着即使在处理高分辨率图像时,该模型也能在保证精度的同时减少计算资源的消耗。
- 在DeepLabv3+框架下,Xception作为主干网络,在处理语义分割任务时表现优异,特别是在PASCAL VOC 2012和Cityscapes等数据集上的表现达到新的state-of-the-art。
1.2 空间金字塔池化模块(ASPP)
ASPP模块由以下几个关键部分组成:
1.2.1 多个并行的空洞卷积(Atrous Convolutions)
ASPP模块使用了多个空洞卷积,并为每个卷积操作设置不同的空洞率(Dilation Rate),这样就能让每个卷积核拥有不同的感受野。
这些空洞卷积以并行的方式作用于输入特征图,能够在不同尺度上捕捉特征。
例如,ASPP中可能会使用空洞率为1、6、12、18的空洞卷积,这意味着这些卷积核分别从不同尺度的区域中提取特征。
1.2.2 全局平均池化(Global Average Pooling)
ASPP模块通常还会包括一个全局平均池化分支,它用于捕捉全局的上下文信息,即整个图像的背景或场景信息。
全局平均池化会将整个特征图中的信息汇总为一个单一的全局特征,然后通过一个1x1卷积调整维度,最后再进行上采样与其他特征图结合。
1.2.3 1x1卷积
除了空洞卷积和全局平均池化外,ASPP模块还包含一个标准的1x1卷积,用于捕捉最基础的局部信息。1x1卷积的作用是将特征图的通道数降低,从而减少计算量,并且有助于融合来自不同卷积层的特征。
1.2.4 特征融合与归一化
ASPP模块生成的不同分支的特征图会通过**拼接(Concatenation)**的方式合并起来。
然后,通过一个1x1卷积对这些合并的特征图进行整合,最后再通过**批归一化(Batch Normalization)和激活函数(如ReLU)**来进一步处理,以确保这些特征能够被后续的层有效利用。
2、解码器(Decoder)
2.1 解码器模块的设计目的
DeepLabv3模型虽然通过空洞卷积(Atrous Convolution)和ASPP模块捕获了丰富的多尺度上下文信息,但由于在卷积操作中存在降采样过程(即特征图分辨率较低),导致在物体边界的细节上表现不足,容易产生模糊或不精确的边缘分割。
解码器模块的设计目的是在这些低分辨率的特征图上,通过上采样恢复空间信息,并融合编码器中提取的低级特征,从而在保持高精度的情况下,改善对物体边界的分割效果。
2.2 解码器模块的结构
2.2.1 上采样(Upsampling)
首先,解码器模块对来自编码器输出的低分辨率特征图进行上采样。通常采用**双线性插值(Bilinear Interpolation)**等方法将特征图的分辨率提升至原始输入图像的大小。
上采样的目的是将分辨率较低的编码器输出恢复到更高的分辨率,以便进一步融合和处理。
2.2.2 融合低级特征(Low-Level Feature Fusion)
在编码器的早期层(通常是ResNet或Xception网络的浅层)中,提取到的特征图保留了更多的空间信息,虽然它们的语义信息较少,但对图像的边缘和轮廓等细节的保留较好。
解码器将来自编码器浅层(例如ResNet的Conv2层或类似结构)的低级特征图与经过上采样的高层语义特征图进行拼接(Concatenation)。这种操作确保高层语义信息和低层空间信息同时被利用,既保留了全局上下文,又恢复了边界细节。
2.2.3 1x1卷积降维(Channel Reduction)
由于低级特征通常包含较多的通道(channel),如果直接与上采样后的特征图拼接,可能导致计算量过大,且高维的低级特征可能会掩盖掉高层特征的作用。
为此,解码器模块对低级特征图应用一个1x1卷积,用于减少通道数,使其与上采样后的高层特征图匹配。1x1卷积的作用是减少计算复杂度,同时突出关键特征。
2.2.4 卷积层(Convolution Layers)
在特征融合之后,解码器模块会应用几层3x3卷积来进一步处理融合后的特征图。这些卷积层能够逐步精细化分割结果,尤其是对边缘的细节恢复有显著提升。
通常会在卷积操作之后添加批归一化(Batch Normalization)和ReLU激活函数,以稳定训练并确保非线性特征的学习。
2.2.5 最终上采样
解码器模块在经过多层卷积处理后,会对融合后的特征图进行最终上采样,将特征图恢复到与原始输入图像相同的分辨率。
这一步骤保证了最终的分割结果能够精确地对应输入图像中的每一个像素,实现逐像素的语义分割。