APP下载

融合Swin Transformer与UNet的云检测架构

2023-09-02谢国波何宇钦林志毅唐晶晶文刚

遥感信息 2023年3期
关键词:边缘像素卷积

谢国波,何宇钦,林志毅,唐晶晶,文刚

(1.广东工业大学 计算机学院,广州 510060;2.云南电网有限责任公司电力科学研究院,昆明 650217)

0 引言

光学遥感图像是目前使用范围最广的卫星遥感图像,涉及到我们生活中的多个领域,如林业、城市规划、农业等方面[1]。但是因为云的存在,很多的地物信息无法获取,且根据ISCCP组织所提供的地球云量数据,地球上有将近一半的区域是时常被云所覆盖的[2]。故而,针对光学卫星图像,如何准确将其中的云层检测出来也是目前学者的一个重要研究方向。

针对云检测算法的研究,目前主要可分为3类:阈值法、经典机器学习方法和深度学习方法。其中阈值法主要是利用云的光谱特性结合阈值来进行云的分类,该类方法当中最为著名的莫过于Zhu等[3]提出的Fmask算法,几乎利用所有的波段信息,使用超过20个阈值和动态阈值来判断。但是阈值法具有很大的局限性,对噪声较为敏感,鲁棒性差。基于经典机器学习的云检测方法,主要是利用经典机器学习的算法,通过一系列的方法对云的特征进行提取,如:灰度共生矩阵、分形维数、角二阶矩阵等[4-6],然后使用支持向量机[7]、决策树[8]、随机森林[9]等分类器对这些特征进行分类,从而达到云检测的目的。这些方法相比阈值法,其检测的精度要高,但是计算量大,选取的特征直接关乎最终的结果。基于深度学习的云检测方法,就是将深度语义分割的方法应用到云检测上,一些优秀的语义分割方法,如全卷积网络[10]、UNet[11]、SegNet[12]等已被应用到云检测上。张家强[13]将ResNet与UNet进行融合,将UNet中的卷积模块都替换为残差模块,取得了93.33%的优异结果。目前基于深度学习的云检测算法中,大部分都是使用到了卷积,受卷积中感受野的影响,其关注的窗口信息是有限的。同时这些方法对薄云和碎云以及在不同下垫面的情况下的云检测精度还有着进一步提升的空间。

目前Transformer[14]技术在语义分割方面也有着很好的表现,其可以关注到全局信息,进而提高了特征提取的能力。Zheng等[15]提出的segmentation transformer(SETR)在编码阶段使用Transformer模块代替CNN主干,并应用在语义分割方向上,证明了其在语义分割任务中的巨大潜力。Cao等[16]提出的Swin-UNet方法可以被看作是UNet和Transformer的混合模型,其结构简单,但是具有很好的效果。目前Transformer已经被应用到遥感图像的检测、分割等方面,但是并未被应用到遥感图像的云检测。

虽然Transformer可以提取丰富的语义信息,并具有优秀的检测精度,但是其在云检测方向上并没有相关的应用研究,并且目前云检测方向上还存在以下的一些问题:针对复杂下垫面情况的云检测的难度较大,整体的精度还有提升的空间;针对薄云以及碎云,在预测上会出现漏判以及错判的情况,故需要对算法进行合理的改进;云边缘信息复杂,其边缘轮廓信息准确判断的难度较高,且在检测的数据中还存在数据不平衡的情况发生。基于上述问题,本文结合Transformer与UNet网络模型,设计出一种针对遥感图像云检测网络Cloud TransUnet,该网络结构进行了编码器卷积模块的替换,增加了边缘预测模块以及损失函数的优化。实验结果表明,与当前存在的云检测算法相比,Cloud TransUnet的参数量较少,在保证检测速度的前提下,云检测的精度、准确度等指标得到了一定的提升。

1 理论基础

1.1 UNet网络介绍

UNet是一种编码-解码的网络架构,通过使用跳跃连接的思想,实现了特征的复用,在很大程度上减少了特征信息的丢失。同时,UNet的网络架构较为简单,比较适用于简单、数据量少的图像分割,而针对云分割任务来说,由于其多变的形状和复杂的下垫面,单一的UNet网络对此并不适用。受限制于其简单的网络结构,在训练的过程中还存在较多特征信息丢失的情况,导致最终的检测效果并不理想。

1.2 Swin Transformer介绍

Transformer是一种基于自注意力机制的架构,不同于卷积网络,其无法进行图像的全局推理。Transformer具有挖掘长距离的依赖关系和支持并运算的特点,利用注意力机制来获取全局的上下文信息,从而捕获更强有力的特征信息,在计算机视觉领域受到了极大的欢迎。而Swin Transformer则解决了Transformer在图像密集任务预测中计算量大的问题,通过将图像划分为一个个非重叠的块,将自注意的计算限制在每一个小的窗口之中,大大降低了计算的复杂度,成为了适合各种视觉任务的通用骨干网络。

图1 Swin Transformer主干网络结构图

(1)

式中:Q(查询)、K(键值)、V(值)是通过对输入特征矩阵进行线性变换所得到;dk表示向量的维度。

多头自注意力机制是在总体参数量不变的情况下,将Q、K、V3个参数进行有限次数的拆分,这种做法可以使得模型注意到不同位置上的不同子空间信息。有研究表明,头的数量够多时,其最终的效果可以媲美卷积的特征提取效果[17]。

Swin Transformer通过窗口多头注意力机制(W-MSA)来减少计算的复杂度,将特征图划分为一个个不重叠的窗口,只在窗口之中做自注意力计算。同时,通过位移窗口的多头自注意力机制[18](SW-MSA)来实现窗口之间的信息交互,并保证高效的计算效率。在Swin Transformer的每个模块中的W-MSA和SW-MSA都是交替使用的,模块是一个两层的结构,如图1所示,每一层输入后都会进行一次归一化(layer normalization,LN)处理,这样可以加速模型收敛且一定程度上缓解梯度消散的情况。第一层是进行MSA计算,而第二层存在一个多层感知机(MLP)的计算。

2 架构设计

2.1 边缘检测网络

在云检测的过程中,为了给网络提供精细的边缘特征,本文使用一种简单易实现的边缘提取网络,其总体结构如图2所示,在编码阶段使用的是残差结构[19]进行编码,同时使用最大池化进行下采样,而解码阶段则是采用卷积和上采样来完成图像边缘信息的提取,同时结合UNet中的跳跃连接的思想,加强特征信息的学习。图2中的Resblock是残差块。值得注意的是,由于高分辨率特征有利于边缘信息的提取,故该网络值只将图像下采样到原始分辨率的1/8。

图2 边缘预测网络

在训练的过程中,边缘信息可以通过对云的真实标签值来获取。云边缘信息是指处于云和非云像素交界的像素点,其余的像素点都是非边缘信息,这就使得数据存在严重失衡的现象,云边缘信息相对于整张图像所占取的比例极少,从而影响云边缘检测的准确率。因此,本文使用了一种针对数据失衡的损失函数generalized dice loss(GDL)[20]来解决这个问题。该方法通过对云的边缘像素加权来检测云的边缘信息,云边缘像素的数量越少则给予其越大的权重。

2.2 Cloud TransUnet网络结构

在上述研究的基础上,本文结合Transformer 和UNet的网络思想并加入边缘特征的提取,设计了一个针对云检测的网络Cloud TransUnet。主要创新有以下3点。

1)为了提高网络在复杂下垫面的检测精度,以及减少对薄云、碎云的漏判和误判,本文将UNet中的卷积模块替换为Swin Transformer模块,Swin Transformer可以更好地关注全局信息,不受感受野大小的限制,同时Swin Transformer的计算量较小,一定程度上可以提高网络的整体效率。

2)为了加强对云边缘信息的提取,设计一个简单的边缘检测网络,来实现对云边缘的检测,并将其融合到网络架构之中,减少边缘信息的丢失。

第一,相关法律规范过于分散,协调性、操作性较差。除《未成年人保护法》《预防未成年人犯罪法》之外,其他有关未成年人的法律分散在一些相关法律、法规之中。由于在这些法律中所占比例很小,其重要性常常被忽视(这些法律的具体实施部门并非专门的未成年人保护及犯罪预防部门);有关法律规范刚性不足,违反这些规范时要么缺乏法律后果规定,要么法律规范中规定的法律责任难以具体落实,致使许多法条成为宣誓性条文;有些法律规范之间还存在着明显的不协调之处。上述这些立法状况严重影响了相关法律的有效实施。

3)为了加强对云像素特征信息的关注以及消除数据分布不均匀所带来的影响,使用中值频率平衡思想对损失函数进行优化。

Cloud TransUnet的结构如图3所示。

图3 Cloud TransUnet 网络结构示意图

阶段 1(边缘检测网络阶段):将裁剪好的数据进行归一化,再经过边缘提取器进行边缘信息的提取,边缘信息和原图的分辨率大小是一致的,将边缘信息和原图进行拼接处理,作为编码阶段的输入。

阶段2(编码器阶段):编码器使用Swin Transformer作为主干,其示意图如图3所示,其中4个阶段的Swin Transformer模块的数量分别是2、2、10、4,每个阶段的多头注意力机制中感知头的数量分别取2、4、8、16,其中C取值为64。由于Swin Transformer模块并不会改变图像的分辨率,故在每个阶段最初都会进行图像分辨率的调整,使用PM(patch merging)对图像进行下采样,同时增加通道数,这样可以很大程度上减少参数量,并增加网络的非线性关系,使得编码具有更好的表达能力。每个阶段的输出特征分辨率具有从小到大不同的接受域,使其可以提取不同大小的特征信息。

对于损失函数而言,使用最常见的交叉熵损失函数。但是,交叉熵损失函数是通过对所有像素的损失进行求和来计算得到的,这样的方式并不能考虑正负样本之间存在的数据不平衡的关系。在本文中,一种使用交叉熵损失函数对数据进行训练,一种使用改进的损失函数进行训练,改进的损失函数是通过利用中值频率平衡(median frequency balancing,MFB)来对每一类的损失进行加权处理[21]。中值频率权重是使用训练集中各个类别频率的中位数与实际每个类别频率的比值来决定的。改进后的交叉熵损失函数如式(2)、式(3)所示。

(2)

(3)

3 实验与结果分析对比

3.1 数据介绍

本文的数据来自公开数据集95-Cloud[22-23],该数据集中存在75个训练集场景、20个测试集场景,来自Landsat 8 Collection 1 Level-1的卫星数据。该数据集中包含4个通道的信息,分别是红波段、绿波段、蓝波段以及近红外波段信息,其中的真实云标签都是通过人工提取的。95-Cloud中选择了不同下垫面的图像,包括土壤、植被、雪、冰、水等不同土地覆盖类型的数据,可以使得网络训练结果具有良好的泛性。训练集分割后总块数为34 701块,但由于是卫星图像,将其中空的块去除之后,还剩21 502块。为了确保最终结果的真实性,将数据集按照8∶2的比例进行切分,且其中每个场景也是按照这个比例进行分割,确保测试集中的多样性。最终训练集的数量为15 087,测试集的数量为6 415,每块的大小为384×384×4。

3.2 实验环境

Cloud TransUnet是在pytorch的基础上实现的语义分割模型,本次实验运行环境是NVIDIA RTX 3070ti GPU(显存大小为8 GB)服务器,CPU为Intel(R) Core i7-11700 2.50 GHz,内存大小为32 GB,操作系统为Windows10,编程语言为Python3.7。

3.3 评价指标

本文中选取总体精度(ACC)、精确率(precision)、平均交并比(MIoU)、召回率(recall)、F1-score作为评价指标,以及包括模型大小(params)、计算量(flops)和FPS,对该模型进行一个综合的评判。其中ACC是表示预测正确像素占所有像素的比例;precision表示的是预测为云且真实为云的像素占真实为云像素的比例;recall表示预测为云且真实为云的像素占被预测为云像素的比例;F1-score是recall和precision之间的加权平均;FPS是指计算机每秒能处理的图像数量;MIoU是语义分割算法中最常用的评价指标,也是本文中最主要的评价指标。

3.4 对比分析

1)消融实验。为了验证本文所使用的改进方法针对云检测来说是真实有用的,进行一次消融实验。检测结果如表1所示。

表1 消融实验对比结果

其中pre-edge表示的是添加了边缘检测网络模块;MFB表示使用了改进的损失函数去对数据的不平衡进行处理;Cloud TransUnet表示未添加边缘检测网络,并且损失函数使用的是交叉熵损失函数。实验过程中网络模型的优化器为Adam,学习率设置为0.001,共训练90个epoch。上表中总体精度的变化并不大,但对云的检测精度提升了两个点以上,可以看出使用MFB处理云和非云像素之间数据不平衡的能力较强,可以有效地提高云的精确度,同时添加边缘预测模块,丰富了云的边缘信息,使得云判更为准确。方法中MIoU提升幅度较小的原因是本文网络对于检测云的精度已经到了一个较高的水准,故而其改进的方法提升不明显。

2)云检测方法对比分析。为了验证本文所提出方法Cloud TransUnet的有效性,选取目前已经应用在云检测网络上的语义分割网络如UNet、SegNet、ResUnet,以及Swin-Unet这种纯Transformer的网络模型,将其应用在云检测,与本文的算法进行实验对比。如图4所示,在针对薄云的检测中,前4种方法普遍存在误判的情况,而本文算法对薄云的识别较为准确,表现最佳;在碎云的检测过程之中,图像中存在较多的微小目标,其中UNet和Segnet存在较多微小目标漏判的情况,而其余3种表现较为良好;在针对厚云的检测之中,由于图像的特征信息较为明显,故整体上检测较好,但是前4种对比方法在一些云边缘上还存在误判、检测不准确的问题,而Cloud TransUnet表现最好,没有出现明显的误判和检测不准确的问题。在不同的下垫面情况下,如图5所示,UNet在复杂的下垫面下,存在大量漏判的情况;Swin Unet存在一种像素感,这是由于在Swin Unet上采样过程中丢失较多的细节信息所导致的,且每个图像中都可以看出其在云边缘存在大量误判的情况;SegNet与ResUnet在针对荒地下垫面时也会出现大量误判的情况,且这两个方法在检测薄云时极易出现误判的现象;Cloud TransUnet在大部分情况下预测较为准确,边缘信息完善,通过图像对比可以发现,其误判的情况发生较少,尽管存在部分漏判,但是总体而言表现最佳。

图4 不同云种类对比结果(GT表示图像真实云标签)

图5 不同下垫面对比结果(GT表示图像真实云标签)

从表2可以看出,UNet在各项指标上表现均不佳,存在大量的误判和漏判现象,但是由于其结构简单,在图像的处理速度上具有一定的优势。而SegNet总体的准确率不高,也存在一定的漏判和误判的情况,并且在处理速度上也不具有优势。ResUnet模型的整体参数量较少,相比较UNet和SegNet而言,各项指标有了一定程度的提升。Swin Unet在整体的精度上和SegNet、ResUnet相差不大,但是其召回率是所有模型中表现最好的,达到了0.963 1,说明该模型检测结果中漏判的情况较少,但是其精确率和SegNet、ResUnet相比,却有了明显的下降,说明该模型中还存在较多误判现象。Cloud TransUnet的总体精度达到了0.960 8,且云的精确率也达到了0.963 0,相对于其他4种方法都有较好的提升,虽然召回率相对于Swin-Unet来说略有损失,但是综合召回率和精确率两个指标来看,其F1-score表现最佳,达到了0.956 4,同时,其MIoU达到了0.923 9,相对于纯Transformer模型Swin-Unet和目前针对云检测表现较好的卷积模型ResUnet,其MIoU分别提升了1.03%和1.13%。同时,Cloud TransUnet中模型的大小以及计算量相比其他算法而言相差并不大,且其FPS达到了107.69,在图像的处理速度上具有一定的优势。综上可以看出,本文所提出的Cloud TransUnet云检测方法相比经典的云检测语义分割网络和纯Transformer语义分割网络,在性能上具有一定的提升。

表2 不同算法实验对比

4 结束语

本文所提出的Cloud TransUnet融合了Transformer和卷积思想,应用于光学遥感图像云检测领域上Cloud TransUnet所使用的边缘提取网络,提高了网络对边缘特征的提取能力,从实验结果中可以看出确实提高了云检测的总体精度,并且在针对薄云和碎云方面也有很好的表现。Cloud TransUnet同时添加了针对训练批次中存在的数据不平衡等问题,通过使用中值频率对损失函数加权,来避免在训练过程中对非云像素的过度关注,可以更好地去学习云像素的特征信息从而提高精确率。实验结果表明,与目前较为优秀的云检测算法相比,Cloud TransUnet在检测速度略微提升的同时,其mIoU、总体精度、精确率等多个指标也得到了一定提升,减少了误判和漏判现象,可以较好地实现对自然场景下的云检测。

但是Cloud TransUnet还是存在一些未能解决的问题,如对一些极小云的检测并不准确,存在漏检的情况,且针对雪、冰原这种特殊下垫面,其精确率还有待提升。

猜你喜欢

边缘像素卷积
赵运哲作品
像素前线之“幻影”2000
基于3D-Winograd的快速卷积算法设计及FPGA实现
“像素”仙人掌
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
一张图看懂边缘计算
高像素不是全部
一种基于卷积神经网络的性别识别方法
在边缘寻找自我