SFA-Net: Semantic Feature Adjustment Network for Remote Sensing Image Segmentation
SFA-Net:远程语义特征调整网络遥感图像分割
Gyutae Hwang 1,† , Jiwoo Jeong 1,† and Sang Jun Lee 2,*
论文地址
代码地址
1.摘要
在本文中,我们提出了一种混合Transformer架构,该架构由基于CNN的编码器和基于Transformer的解码器组成。我们设计了一个特征调整模块,用于优化从EfficientNet骨干网络中提取的多尺度特征图。经过调整的特征图被集成到基于Transformer的解码器中,以实现遥感图像的语义分割。本文将所提出的编码器-解码器架构称为语义特征调整网络(SFA-Net)。为验证SFA-Net的有效性,我们在四个公开基准数据集上进行了全面实验,包括UAVid、ISPRS Potsdam、ISPRS Vaihingen和LoveDA数据集。实验结果表明,所提出的模型在UAVid、ISPRS Vaihingen和LoveDA数据集上的遥感图像分割任务中达到了最先进的精度。在ISPRS Potsdam数据集上,我们的方法在精度上与最新模型相当,同时将可训练参数数量从113.8M减少到了10.7M。
2. 引言
遥感图像的分割面临诸多挑战,包括不可预测的天气条件、地形变化以及人工设施的各种形状。为了准确分割遥感图像,分析目标物体及其周围环境的视觉特征至关重要。局部上下文包含小区域内的视觉信息,而全局上下文则代表高分辨率图像的整体特征以及目标与其周围环境之间的关系。由于遥感图像的分析需要理解局部和全局上下文,因此设计一种适当的深度学习架构以实现鲁棒性能非常重要。尽管已有许多基于CNN和Transformer架构的深度学习模型被提出,但在提高分割算法精度方面仍存在困难。为克服这些局限性,我们提出了一种混合分割模型,该模型由基于CNN的编码器和基于Transformer的解码器组成,用于从多尺度视觉特征中分析局部和全局信息。
在本文中,我们提出了一种轻量化的深度学习模型,用于遥感图像的语义分割。所提出的模型由基于CNN的编码器和基于Transformer的解码器组成,旨在捕捉局部和全局上下文以补充语义信息。通过引入特征调整模块(FAMs),从CNN编码器中提取的多尺度特征图被有效集成到基于Transformer的解码器中。我们的深度学习模型被称为SFA-Net,其主要贡献总结如下:
- 我们提出了FAMs,用于优化从CNN编码器中提取的多尺度特征图。
- 我们提出了SFA-Net,该模型由CNN编码器、Transformer解码器和两个FAMs组成。
- 我们在四个基准数据集(包括UAVid、ISPRS Potsdam、ISPRS Vaihingen和LoveDA)上验证了所提出模型的有效性。
(以上都是论文中的原话)
3. 网络结构
我们先来看一下整体的网络结构,首先编码阶段采用的是四个EfficientNet模块,采用的CNN,在解码阶段采用了三个混合Transformer的解码模块,接着有两个FAM模块,这个模块是用来今天特征调整的,一个FRH模块,还有WF加权函数。
3.1 Efficient CNN-Based Encoder
在编码阶段,作者采用了四个级别的EfficientNet模块,每个模块捕获的语义信息送入到FAMs(特征聚合模块)。(EfficientNet模块不太了解,后面再去读一下这篇论文)
3.2 Feature Adjustment Module(特征聚合模块)
最近读的论文我发现好多都有这样的一个模块,比如上一篇文章中,他也有个特征聚合的模块,它是将高频信息和低频信息的一个融合。这篇论文中的特征聚合没有之前的复杂,如下图:
首先我们要知道,FAM1将
E
1
,
E
2
E_1, E_2
E1,E2的特征进行聚合,利用基于
R
E
L
U
RELU
RELU的通道注意力机制来调整两个编码块的特征信息,然后将特征图传递给
D
2
D_2
D2;FAM2利用基于FC(全连接)的通道注意力机制来聚合
E
3
,
E
4
E_3, E_4
E3,E4的特征(为什么这里采用了不同的激活函数?我们知道,在
E
1
,
E
2
E_1, E_2
E1,E2这两个解码阶段中,所提取到的信息很少,也就是空间细节信息,什么边缘、纹理之类的,那么对于这类信息我们需要选择更注重保持高分辨率的空间信息的激活函数;在
E
3
,
E
4
E_3, E_4
E3,E4阶段,这个阶段的分辨率很低了,但是他们的语义信息更强,这两个阶段我们要进一步提取和精细化高层次的语义信息,所以要选择更精细的激活函数。),接着通过逐元素相加的方式对FAM1和FAM2的特征进行整合,接着与
D
2
D_2
D2进行一个跳连接。
3.3 Transformer-Based Decoder
解码器模块如下图所示:
解码器模块是基于transformer的,并且通过并行对全局和局部信息分别处理。
- 全局信息处理:首先是利用多头自注意力机制进行处理(ViT),得到权重矩阵之后采用了一个叫做“十字形窗口上下文交互”的方法。
- 局部信息处理:局部信息就是使用简单的卷积了。
将两个分支中的信息通过深度可分离卷积和批量归一化进行整合。
十字形窗口上下文交互:
十字形窗口在水平和垂直池化特征图之间建立全局关系。具体来说,假设特征图是一个二维矩阵,对于某个中心点 ( i , j ) (i, j) (i,j),十字形窗口会包括:中心点本身 ( i , j ) (i, j) (i,j),水平方向上的一行(即 ( i , k ) (i,k) (i,k),其中 k 是所有列索引),垂直方向上的一列(即 ( k , j ) (k,j) (k,j),其中 k 是所有行索引)。这样,十字形窗口形成一个“十”字形区域,覆盖了中心点以及水平和垂直方向上的局部信息。
论文中说到,“全局分支基于多头自注意力机制,并使用重叠的局部窗口在窗口之间进行交互”,这里图中没有体现出来,简单来说,它就是将输入的特征图划分为多个局部窗口,并允许这些窗口之间存在重叠区域,通过这样的方式来增强局部特征之间的信息交流和上下文的建模能力,其实在Swin-Transformer里面是最能体现的,因为对于传统的ViT,将图像分割之后,在构建全局信息的时候计算量是很大的,特别是对于遥感图像,因为它分辨率很高,所以采用局部窗口,来构建局部窗口之间的关系。那么为什么是重叠的局部窗口呢?虽然局部窗口可以显著减少计算量,但它也会引入一个问题:窗口之间的边界可能割裂了特征的空间连续性 。就比如两个相邻区域的信息被分割到了两个不同的窗口之中,那么他们之间的关联性就可能会丢失,这样会对我们捕获长距离依赖关系造成影响。(具体可以去看一下Swin-Transformer这篇论文)
接下来是作者设计一个加权函数,如下图:
论文中说“我们设计了一个加权函数(WF),用于自适应地整合经过调整的编码器和解码器特征”,这里定义了两个可学习的参数,分别与编码器和解码器的特征图的每个特征进行相乘,在特征整合过程中,通过对编码器和解码器特征进行逐元素相加以及应用卷积块来完成特征融合。这里的解码器特征通过双线性插值法来放大。
3.4 Feature Refinement Head
这个模块整合了解码器的全局和局部特征,如下图所示:
FRH这个模块对
D
1
D_1
D1模块的特征进行插值,并执行分组通道混合清洗,也就是数据增强的一种方式,它通过重新排列和混合不同通道组之间的信息,打破分组卷积中通道组之间的隔离,从而促进信息的跨组流动,提升模型的表达能力。然后通过加权函数与解码器的特征进行融合,保留了高分辨率的信息,对于低分辨率的信息,这里分别通过通道注意力机制和空间注意力机制来保留低分辨率特征。
以上便是整个过程了,整体来说是这样的:首先在编码阶段,采用四个EfficientNet模块进行解码,论文中比较强调低分辨率和高分辨率这一特点,因此会有FAM模块分别来保存低分辨率和高分辨率的特征信息,具体来说就是将前两次下采样的特征图进行一个融合,逐元素相加,然后采用通道注意力机制,对特征图进行压缩,同理,在保持低分辨率特征图特征也是采用的通道注意力机制,只是换了不同的激活函数,这个时候来到了解码阶段,解码阶段分为三个阶段,首先是 E 4 E_4 E4得到的特征图和FAM2得到的特征图进行一个拼接,然后进行解码,解码后的特征图,会和FAM2得到的特征图与FAM1得到的特征图进行拼接后得到的特征图,通过自定义的一个加权函数进行融合,然后再次解码,接着与FAM1得到的特征图通过WF进行拼接,最后传入一个FRH模块,这里主要是通过空间、通道注意力机制来强调低分辨率的信息。
4. 实验结果
下面是每个peoch各项指标的部分截图:
最后miou差不多稳定在0.87,还是很不错的。下面是测试时的一些信息:
下面简单截了一张图测试结果图:
相比于之前看的TRansUNet来说,效果提升了挺多,这两个也算是一个对比实验了。