丁一鹏,赵 璐
中南大学 物理与电子学院,长沙 410083
在制图、城镇规划、地物分类等任务中,高分辨率遥感影像的语义分割起着重要的作用[1-4]。随着卷积神经网络(convolutional neural networks,CNN)如VGG[5]、ResNet[6]等在分类任务上取得巨大的成功,基于滑动窗口的卷积神经网络的遥感图像语义分割得到应用。而该类方法存在训练、预测耗时,且patch大小难以确定的问题,因此许多基于全卷积神经网络(fully convolutional network,FCN)[7-8]的方法被提出。它利用卷积操作的平移不变性与参数共享机制完全实现了语义分割的端到端的学习,使以上问题得到解决,大大提高了高分辨率遥感图像语义分割的整体准确性。而后,DeepLab系列[9-10]、PSPNet[11]及U-Net[12-13]等方法的提出极大推动了基于CNN的遥感图像语义分割体系走向成熟。近年来,得益于研究人员对语义分割中注意力机制、上下文关系的获取的研究,如Non-local[14]、DANet[15]与CCNet[16]等使用自注意力机制去获取全局上下文关系,使得遥感图像语义分割的精度又提升了一个台阶。然而,遥感图像中物体和场景的剧烈变化是很难通过一个以少数特定地点上收集的遥感影像为训练集训练得到的模型可以学习到的,且获取遥感图像时不同的天气条件及不同的时刻也会影响图像中物体的结构及其周围环境的外观[17]。因此在一个特定数据集上(源域)训练的模型往往很难泛化到另一个在训练过程中模型没有见过的影像集合(目标域)上。而通过直接在目标域上对模型进行微调来解决跨域问题的方式需要收集相应的像素级标签却是十分费时费力的。一位熟练的标注者标注一幅512×512的自然图像需要5~7 min,对于更大的遥感图像而言,标注所需时间更是成倍提升。此外,现阶段,随着卫星及各种传感器的增多,可获得的遥感影像数量也变得越来越多。当需要为一个新的区域(目标域)进行分割时,如果使用这种微调的方法就要为该区域的遥感影像进行像素级标注。显然,为如此海量的遥感影像数据标注像素级别的标签以训练语义分割模型是不现实的。
因此针对遥感图像从源域到目标域的泛化问题,提出了域自适应算法。其中基于对抗学习的研究大致分为两个方向:一是无监督域自适应[18-21]。该方向的研究利用对抗学习的思想在特征空间上对经过编码器提取的源域与目标域的特征进行对齐,然后在对齐后的特征上预测分割结果。Tasar等人[22]在图像空间[23-25]提出了一种名为ColorMapGAN的方式去进行源域到目标域的分割迁移,使它们在视觉上相似。Hoffman等[18,26]在特征空间上使用一个域分类器优化域对抗损失函数,使得源域与目标域被同一特征提取器如ResNet提取的特征尽可能相似。Luo等[20]提出的CLAN以及Vu等[27]提出的ADVENT则通过对抗学习的思想在输出空间中迫使源域与目标域相似。其中在CLAN[20]中,他们通过自适应调整针对每个类别的对抗性损失的权重来调整每个类别的特征。而ADVENT[27]则提出了一种熵值最小化方法,该方法基于域自适应,借助对抗学习最小化自熵。文献[19]是最早引入输出空间的域自适应的语义分割方法。另一个方向是自监督域自适应。其思想是通过为模型之前的状态生成的未标记数据生成伪标签来训练模型。文献[28]提出了一种基于类平衡的自训练方法,该方法从图像中生成类平衡的伪标签,并根据模型的最后状态分配最可信的标签。MinEnt[27]提出使用最小化熵的损失函数进行模型的自监督训练。通过阈值来生成伪标签也是一种常用的方法。文献[29]用恒定阈值排除不太确信的类,并根据生成的伪标签训练模型。文献[30]通过应用在训练过程中分别为每个类计算的动态阈值,过滤掉不太自信的类。
基于对抗学习无监督域的自适应方法目前已经在遥感图像域自适应领域取得一定的进展。然而,一方面,由于源域与目标域之间的显著差异性,如果直接通过对抗训练来实现源域和目标域之间的相似性,容易导致向目标域中引入来自源域的噪声信息,即出现“负迁移”现象,从而降低语义分割域迁移的性能;另一方面,由于目标域的标签缺乏,在对抗过程中容易导致模型多次迭代后更偏向源域类别分布,从而出现精度下降的不稳定情况。
针对上述问题,本文对模型进行改进,提出一种目标域图像级标签已知的弱监督域自适应方法。一方面,图像级标签较像素级的语义分割标签相比更容易获得,且在一定程度上反映了图像的目标信息,因此在训练过程中能减少对源域的过度偏移;另一方面,考虑到不同类别目标之间的差异性,提出了一种多类域判别器以及一种基于熵值的目标域像素级伪标签产生方法。具体地,多类域判别器为当前图像中存在的每一个类别都单独计算损失函数,从而使得目标域各个类别以一种自适应的方式对齐到源域。而基于熵值的目标域像素级伪标签产生方法能够产生可靠的目标域像素级别伪标签,从而使得模型能够学到目标域的类别分布,进而改善上述提到的训练过程不稳定的问题。
综上,本文的贡献可以总结为如下三点:
(1)提出一种目标域图像级标签已知的弱监督域自适应方法,通过多类域判别器为图像中的每个类别计算损失函数,从而实现类别自适应的特征对齐,与全局对齐方式相比鲁棒性更强。
(2)提出一种基于熵值的目标域像素级伪标签生成过程,使得模型能学习到目标域大致的类别分布,从而保持训练过程的稳定。
(3)在ISPRS Vaihingen与ISPRS Potsdam数据集上的大量实验表明,本文算法相较于其他遥感图像语义分割中的基于对抗学习域自适应算法性能有显著提升。
为了更好地对基于对抗学习的无监督域自适应模型进行讲述,首先对一些概念进行定义。定义一个有着像素级真值标签遥感图像集合为源域,其对应的像素级真值标签集合记为Ys⊂(1,K)H×W。其中K表示类别的数目,H和W则表示图片的高与宽。而另一个在风格上与源域图像有着较大差异同时又缺乏像素级真值标签的遥感图像集合被称为目标域。无监督遥感图像语义分割域自适应的目标是在仅在Ys的监督下,模型能够在Xt上达到一个很好的分割性能。
基于对抗学习的无监督域自适应[18-21]是利用对抗学习的思想在特征空间上对经过编码器提取的源域与目标域的特征进行对齐,然后在对齐后的特征上预测分割结果。基本网络结构如图1所示,包括一个特征提取器F以及一个判别器D。
整个模型训练过程如下:
(1)利用源域进行有监督学习,提取源域特征信息。从Xs中取一张图像xs,其对应的像素级标签为ys,xs通过F之后进行上采样得到对应的预测置信度图Ss,定义Ss与ys计算交叉熵损失函数Lseg=(1,1)(Ss,ys):
通过最小化Lseg完成对特征提取器F参数的更新,得到基于源域数据的模型。
(2)通过对抗学习优化特征提取器及判别器,对齐源域与目标域的特征分布。在对目标域进行训练时,缺乏目标域像素级标签,因此进行无监督学习。整个过程基于对抗网络,特征提取器F以及判别器D进行交替训练。训练网络F时固定判别器D,使F生成D无法辨别真伪的结果,训练网络D时,使其尽可能地区分来自源域与目标域的样本真伪。最终使模型学习到目标域的特征分布并与源域特征对齐。具体来讲,从Xt中取一张图像xt,通过F之后进行上采样得到对应的预测置信度图St,与先前的Ss先后送入D中,计算并优化对抗损失函数Ladv。xs与xt通过之后得到的特征在特征空间上将十分接近。
其中域分类器输入Ss和St,如文献[27,31]中所用到的,是K个通道的特征图,经过域分类器的处理后得到单通道的特征图Cs和Ct。Cs和Ct上每一个像素点的值都代表着该点是否属于源域的概率。将来自源域的图像标记为1,来自目标域的图像标记为0。利用这个标记以及域分类器的输出计算对抗损失函数Ladv。Ladv包括两部分,一个是对域分类器的训练的损失函数Ladv1=(1,1):
其中,LD是二元交叉熵损失,H与W为Cs和Ct高和宽。值得注意的是该项损失函数只优化域分类器中的参数而不优化F中的参数。其意义在于使得域分类器能够准确地判断F提取的特征是来自源域还是目标域。而Ladv的另一部分Ladv2则为如下形式:该项损失函数只优化F而不影响域分类器。其意义在于使得F提取的目标域的特征能够在特征空间上与源域图像经过F的特征对齐,从而使得域判别器将其判断为来自源域。这样,通过两部分损失函数的对抗学习,使得F提取的目标域的特征与源域相似,从而能够用于后续的分割。
虽然该方法对自然影像的语义分割起到促进作用,但其所用的判别器为单通道,即多个通道的特征图经过域判别器处理后会得到单通道的特征图,其上每一个像素点的值代表着该点是否属于源域的概率。并将来自源域的图像标记为1,来自目标域的图像标记为0。而单通道的输出并未考虑到不同类的差异,在多个类别特征对齐时可能产生负迁移现象。此外,由于目标域与源域之间的类别分布存在差异[32],而基于对抗思想的无监督自适应缺乏目标域类别分布的学习,导致模型在多次迭代后,可能出现性能下降的不稳定情况。
本文所提出的弱监督遥感图像语义分割域自适应,与无监督所使用的在Ys的监督下,模型在Xt上达到很好的分割性能的方法有一点不同,即目标域的图像级标签集合It⊂(0,1)K已知。因为It容易收集,所以能够在花费很少代价的情况下为模型的训练提供一种强有力的监督信息。
模型的总体架构如图2所示,yt中的黑色为未标记类别的区域,虚线代表测试阶段不会用到。模型总体上由特征提取器F(这里采用带空洞卷积的ResNet)以及一个多类域判别器D(5个步长为2的卷积)组成,即整体模型架构沿用图1所展示的GAN网络,而后在此基础上对判别模块进行改进,提出多类域判别器模块,并在ADVENT基础上提出基于熵值产生目标域像素级伪标签的方法。该模型的训练流程与传统对抗网络相似,在计算Lseg(Ss,ys)以及Ladv的基础上,借助xt的图像级别标签It以及预测置信度图St,根据本文提出的基于熵值的伪标签产生方法,在伪标签生成模块中生成了xt的像素级伪标签yt。
Lseg(St,yt)的持续优化使得模型能够学习到目标域中类别的大致分布,从而不会出现文献[32]中所提到的在多次迭代之后,模型偏向于学习到源域的类别分布导致模型性能出现下降的情况。
在全局对齐的过程中,所有类别的分布在一次训练迭代中都会被重新映射到其他的位置,并且每一个类别之间的对齐过程会相互影响。比如,A类在上一次的对齐过程中已经被映射到特征空间中正确的位置,但是因为需要全局对齐,所以A类需要在本次对齐过程中在特征空间中被重新映射,导致了A类对齐不正确,这也是负迁移出现的根本原因。显然,全局特征对齐是不合理的,因此提出了多类域分类器。在Ss和St输入多类域分类器之前,通过一个类别选择模块进行处理。对于源域,不用任何代价可以通过ys得到其图像级别的标签(即当前图像中包括了哪几个类),对于目标域,可以通过极小的人力成本获得图像级别的标签It。这样,在类别选择模块就可以选择出当前类别中所存在的类别对应的通道图并送入域分类器中。因此,在一个类别特征被对齐的时候,就不会再引起当前不相关类别特征的变化,从而解决了负迁移的问题。
文献[6]通过自监督的方式,缓解了基于对抗思想的无监督自适应在不同域之间由于缺乏类别分布的学习而导致多次迭代后性能下降这一问题,该方式与大多数自监督学习一致,由于缺乏先验信息的指导,其用于自我监督的信息不够可靠。因此本文基于熵值的理论思想,以It作为先验信息,获得了可靠的目标域像素级伪标签yt。下面详细地阐述基于熵值的伪标签生成方法。
熵是描述混乱程度的度量,可以通过如下方式计算得到St对应的熵值图:
如ADVENT[27]中所提到的,熵值越大的区域,代表模型的预测可信度越低,反之则越高。因此对熵值做一个阈值分割,保留熵值小于阈值的模型预测。这项操作可以正式地描述为:
其中,E为阈值,本文取E=0.52。但是这样取值之后的伪标签依然不够可靠。因为还存在一种可能性,即模型可能以较大的信心预测错了类别。所以在式(5)y(n,k)t取1的条件中又加入了一项k⊂It。通过弱标签It这一先验信息的加入,在一定程度上限制了模型错误预测的可能性。同时最重要的一点在于让模型学习到当前图片存在哪些类别的正确信息。
数据集:ISPRS Vaihingen与ISPRS Potsdam数据集分别包含来自德国两座城市Vaihingen与Potsdam的超高分辨率遥感影像。其中Vaihingen采集了33幅,Potsdam采集了38幅。每幅影像都是从一个更大的正射遥感影像中裁剪出来的,它们的地面采样距离为9 cm。因为来自不同的城市,同时成像的波段有所差异,所以这两个数据集的影像风格与内容上有很大的不同,是很典型的来自不同的两个域的影像。
数据预处理:出于硬件条件的限制,本文利用随机裁剪的方法将33幅Vaihingen影像与38幅Potsdam影像裁剪为512×512的大小。裁剪后,Vaihingen与Potsdam数据集分别产生了3 000张与6 000张512×512的影像。其中Vaihingen数据集被视为源域,Potsdam为目标域。源域中所有的影像进行参加模型的训练,而在目标域中,随机划分了20%的影像作为测试集,其余80%作为训练集。
网络框架:本文使用DeepLab-V2[2]作为基础语义分割架构。同时,更好地捕捉场景上下文,空洞空间金字塔池化应用于最后一层的特征输出,其采样率固定为{6,12,18,24}。DeepLab-V2中的特征提取器采用的是ResNet[6]。与DeepLab-V2一致,修改了最后一层的步长和空洞率,以产生具有更大感受野同时分辨率不变的特征图。最后,为了进一步提升模型的性能,采用了与ADVENT[27]一样的操作,即自适应地输出了来自Conv4和Conv5的多级特征。多类域分类器实际上就是5层步长为2的卷积层。需要注意的是,卷积后使用的激活函数是Leaky Relu。
实施细节:本文的代码实现基于PyTorch深度学习框架[33],同时所有实验都是在单个显存为8 GB的NVIDIA 2070Super GPU上完成的。除了多类域判别器之外,使用随机梯度下降算法来优化模型参数,并设置初始学习率为2.5×10-4,动量为0.9,权重衰减为10-4。而对于多类域判别器,使用Adam优化器来进行模型参数优化,其初始化学习率为10-4。对于学习率下降,采用了余弦退火策略。模型总共训练了30个epoch,大约耗时12 h。
评价指标:实验选取平均交并比(mean intersection over union,mIoU)作为衡量本文模型分割效果的指标。该值是衡量模型对图像分割精度的重要指标[34],计算公式为:
式中,i表示真实值,j表示预测值,pij表示将i预测为j。
3.2.1 消融实验
为验证各个模块的有效性,本文进行了消融实验,实验结果如表1所示。使用RAN[31]作为基线模型(即表1中的Baseline),然后,依次添加所提出的多类域判别器策略与伪标签产生策略以验证每一个模块的有效性。
从表1中可以看出,当多类域判别器被使用之后,相比于基线模型,本文所实现的模型的性能大幅度上升。这主要归功于在多类域判别器的机制下,每一个类别都独立地将特征分布从目标域对齐到源域,从而使得每个类别对齐的过程互不干扰,进而减少了负迁移的现象,提升了模型性能。但是,从表中也可以观察到树木、汽车以及未知类的IoU指标出现了不同程度的下降。这并不是负迁移造成的,而是由于这三类在整个数据集中训练样本不多,使得训练不充分而导致。而使用多类域判别器所导致的小样本类别性能的下降是之后重点需要研究的方向。
表1 消融实验对比结果Table 1 Comparison of results of ablation experiments
在使用本文所提出的伪标签监督网络训练之后,模型的性能进一步提高,平均交并比达到了42.0%。这主要得益于伪标签的信息使模型训练的稳定性得到保证。这一点,在图3加入伪标签前后的模型在训练过程中所表现的性能变化趋势图的对比中可以进一步印证。在图3中,可以直观地感受到伪标签的加入对模型训练稳定性的提升效果。
3.2.2与其他优秀模型的对比
首先将在ISPRS Vaihingen数据集(源域)上训练好的DeepLab V3[10]对ISPRS Potsdam数据集(目标域)影像进行分割,结果见图4。
在目标域上,其分割总体精确度(OA)从源域上的0.85下降至0.35,这说明了进行无监督域自适应的必要性。随后,使用基于对抗思想的无监督域自适应方法,对目标域中同一图片的预测结果如图5。可以看到,基于对抗思想的无监督域自适应方法产生了上文提到的负迁移的现象[20],即图5中红圈所划定的区域出现了在域适应前被划分正确,而在进行域适应之后被错误划分的现象。
为了避免这种负迁移现象,本文提出了多类域判别器的机制。同时,为了保证模型训练的稳定性,还提出了基于熵值的伪标签生成方法。加入这两种机制之后,在表2中对比了本文模型与其他基于对抗思想的无监督域适应模型的性能。可以看到,由于多类域判别器避免了负迁移,伪标签保证模型训练的稳定性,本文模型的性能要优于其他优秀的模型。
表2 弱监督域自适应算法与其他方法的比较Table 2 Comparison of weakly-supervised domain adaptive method with other methods
最后,为了直观地展示本文方法与其他方法的对比,在图6中进行可视化效果展示。可以看出,DeepLab网络误分较多,基本上达不到使用的水平。ADVENT网络分割效果相比DeepLab有所提升,特征保留较为丰富,对第一行的房屋分割更为准确,对陆地的划分效果得到提升,且将第二行的建筑轮廓基本分割出来。
CLAN及LT-WAN[17]网络对建筑的分割精度进一步提升。但是通过观察很容易发现,基于对抗思想的模型在这些分割实例中,存在很多原本分割正确的区域在对抗训练之后被分割错误。而本文模型由于加入了多类域判别器,大大减少了负迁移问题,因此性能要优于其他模型。
由于天气、人文以及传感器等因素的影响,遥感图像域与域之间的图像风格差异往往非常大。而在实践中,显然人们无法为如此海量的遥感数据的每一个域都标注像素级别的真值标签,因此遥感图像语义分割的域自适应是一个十分实际且有意义的任务。本文提出了一种弱监督的遥感图像语义分割域自适应方法。相比于无监督的方法,本文基于弱监督标签提出了多类域判别器策略与伪标签产生策略,分别解决了域迁移中的负迁移问题与训练过程不稳定的问题。与此同时,相比于像素级的地面真值,本文的图像级标签仅仅需要耗费少量人力物力即可获得。换言之,本文模型在较小地提升人力的情况下,极大地提升了域迁移的准确率。