论文解读:ChangeStar | Change is Everywhere: Single-Temporal Supervised Object Change Detection in Remote

论文地址:https://arxiv.org/pdf/2108.07002.pdf
项目代码:https://github.com/Z-Zheng/ChangeStar
发表时间:2022
在这里插入图片描述

对于高空间分辨率(HSR)遥感图像,双时间监督学习总是主导着使用许多成对标记的双时间图像的变化检测。然而,对大规模双时HSR遥感图像的成对标记是非常昂贵和耗时的。在本文中,我们提出了单时间监督学习(STAR),从一个新的角度,利用未配对图像中的目标变化作为监督信号。STAR使我们能够训练一个仅使用未配对的标记图像的高精度的变化检测器,并推广到现实世界的双时间图像。为了评估STAR的有效性,我们设计了一个简单而有效的变化检测器,称为ChangeStar,它可以通过使用ChangeStar模块将任何深度语义分割架构转换为变化检测模型。ChangeStar实验结果表明,在单时像监督下的性能优于基线,在双时间监督下取得了优越的性能。

使用未配对的影像进行变化检测训练

基本总结

1、相比于STANET,ChangeStar并未能提升模型在LEVIR-CD上的效果,仅是说换了其他的backbone,模型更强大了,性能提升了
2、相比于PCC(seg结果直接异或,基本无漏检),ChangeStar的漏检更多一些,只是PCC方法无法消除配准偏差

1、简介

1.1 关键背景

1、成对标记大规模和高质量的双时遥感图像是非常昂贵和耗时的,这极大地限制了变化检测技术的实际应用;

成对标记的双时图像的重要性在于变化检测器需要成对的语义信息来定义正负样本来进行对象变化检测,这些正样本和负样本通常由两个不同时间的像素在同一地理区域内是否具有不同的语义来决定。可以放宽位置一致性条件来定义正样本和负样本,变化无处不在,特别是在未配对的图像之间。利用未配对图像之间的目标变化作为监督信号,来绕过收集配对标记图像的问题。

2、在同一地理区域的条件下,双时间监督学习可以避免许多分布外的正样本,而这对ChangeStar来说既是一个机遇和挑战;
这些分布外的样本使由ChangeStar驱动的变化检测器更有可能具有更好的泛化性。同时,它们也导致了过拟合问题,使模型学习有偏表示。为了缓解这个问题,我们探索了一种归纳偏差:时间对称性,并利用它来约束变化检测器的表示学习。

1.2 主要贡献

1、为了从根本上缓解收集配对标记图像的问题,提出了单时间监督学习(STAR),使对象变化检测器能够从未配对的标记图像中学习;
2、为了进一步稳定学习能力,探索并利用了一种归纳偏差,即时间对称性,以缓解由于未配对图像中缺乏位置一致性条件而导致的过拟合问题<训练过程中正样本过多>;
3、为了重用现代语义分割结构,提出了一种简单而有效的多任务结构,称为“ChangeStar”,用于联合语义分割和变化检测。ChangeStar的核心组件是ChangeStar,它使现成分割模型能够检测对象的变化

2、方法

2.1 原始变化检测的思考

双时像监督变化检测可以被定义如下,其核心是训练一个具有相同空间位置和不同时间的标记图像的变化检测器,因此,训练阶段与推理阶段是一致的。

公式中的X、Y的含义如下图所示,其中F指模型,L使损失函数。

可以发现change label Y t 1 → t 2 Y^{t1→t2} Yt1t2是唯一的监控信号来源。为了获得 Y t 1 → t 2 Y^{t1→t2} Yt1t2,通常需要配对的语义信息来定义正样本和负样本。然而,成对的语义信息只与双时像素的语义有关,与它们的空间位置无关。相同的空间位置仅用于保证训练与推理之间的一致性。如果放宽这个条件,那么在等式中的原始问题1可以简化为以下形式,同时扩大了X2的选择范围

2.2 单时像变化检测

单时态监督学习(STAR)的关键思想是通过等式从仅具有语义标签的任意图像对中学习一个可推广的对象变化检测器2,如图4所示。

为了提供单时间数据的变化监控信号,首先构造并利用伪双时间图像对,双时间数据在原始学习问题(Eq。1)可以用单时态数据代替,因此学习问题可以重新表述为:

构造伪双时间图像对

在一个train batch内随机对数据进行组合,具体操作为针对原始序列A的副本,随机打乱排序构成序列B,然后由序列A|B共同组成变化检测数据。实操效果如下图所示

伪影像对标签分配

与双时像监督学习的人工密集标记不同,伪影像对的变化标签是由STAR的单时语义标签自动生成的(使用逻辑异或实现),这样可以在等式中更改标签 Y t 1 → t 2 Y^{t1→t2} Yt1t2可以用 Y t 1 ⊕ π Y t 1 Y^{t1}⊕πY^{t1} Yt1πYt1代替,其中⊕表示xor操作,从而提供了单时态数据的变化监控信号。图3.©显示了生成的变更标签。

异或运算的具体逻辑为:
1、在伪双时态图像上有两个对象实例重叠,则将重叠区域被指定为负样本;
2、对象实例不重叠,则对象实例被设定为正样本;
3、其余的像素位置被分配为负样本。

2.3 多任务监督

模型在设计上具体可以包括seg loss和change loss

seg loss

具体实现为二值的交叉熵

change loss

认为变化中A→B与B→A是等价的,变化是无向的,所以Loss的设计如下。(这可能意味中模型交换AB的顺序,输出的结果会不一样,不然不用两个取平均值)

2.4 网络结构

模型的具体实现代码如下,可以看到在训练与测试时输出不一致。同时,其关于变化检测结果输出是一对,不是单个

class _ChangeStarBase(nn.Layer):
    USE_MULTITASK_DECODER = True
    OUT_TYPES = (MaskType.CD, MaskType.CD, MaskType.SEG_T1, MaskType.SEG_T2)

    def __init__(self, seg_model, num_classes, mid_channels, inner_channels,
                 num_convs, scale_factor):
        super(_ChangeStarBase, self).__init__()

        self.extract = seg_model
        self.detect = ChangeMixin(
            in_ch=mid_channels * 2,
            out_ch=num_classes,
            mid_ch=inner_channels,
            num_convs=num_convs,
            scale_factor=scale_factor)
        self.segment = nn.Sequential(
            Conv3x3(mid_channels, 2),
            nn.UpsamplingBilinear2D(scale_factor=scale_factor))

        self.init_weight()

    def forward(self, t1, t2):
        x1 = self.extract(t1)[0]
        x2 = self.extract(t2)[0]
        logit12, logit21 = self.detect(x1, x2)

        if not self.training:
            logit_list = [logit12]
        else:
            logit1 = self.segment(x1)
            logit2 = self.segment(x2)
            logit_list = [logit12, logit21, logit1, logit2]

        return logit_list

    def init_weight(self):
        pass

ChangeMixin模块结构如下图所示,由一个时间交换模块(TSM)和N个ksize为3×3的conv组成的FCN模块组成,每个FCN后面是BN和ReLU(实验中N为4,conv中filter的数量为16)。此外,附加一个双线性上采样层,然后是一个s型激活,输出每个像素的二进制预测。

ChangeMixin的实现代码如下所示,可以看到作者认为交换x1, x2的位置,detect的原始输出应该是不一样的,在设计loss时取平均值,是想让两个输出通过训练逐步变的一样。

class ChangeMixin(nn.Layer):
    def __init__(self, in_ch, out_ch, mid_ch, num_convs, scale_factor):
        super(ChangeMixin, self).__init__()
        convs = [Conv3x3(in_ch, mid_ch, norm=True, act=True)]
        convs += [
            Conv3x3(
                mid_ch, mid_ch, norm=True, act=True)
            for _ in range(num_convs - 1)
        ]
        self.detect = nn.Sequential(
            *convs,
            Conv3x3(mid_ch, out_ch),
            nn.UpsamplingBilinear2D(scale_factor=scale_factor))

    def forward(self, x1, x2):
        pred12 = self.detect(paddle.concat([x1, x2], axis=1))
        pred21 = self.detect(paddle.concat([x2, x1], axis=1))
        return pred12, pred21

时间交换模块(TSM)负责时间对称性,在网络结构中提供一个归纳偏差,它以双时间特征图作为输入,然后沿着通道轴连接成两种不同的时间排列。

ChangeMixin模块结构中参数的选择实验如下,可以看到N为4,conv中filter的数量为16时效果和性能都是最佳

3、基本实验

3.1 数据集

训练数据

利用两个HSR遥感建筑分割数据集,通过单时态监督训练分割模型和目标变化检测器。
• xView2 pre-disaster:使用了xView2数据集[11]的一个子集,即灾难前的xView2数据集,它由灾难前的图像及其来自train split和tier3 split的标签组成。xView2灾前数据集由9,168张HSR光学遥感图像和总共316,114个突发自然灾害背景下的建筑实例标签组成。这些图像采集自Maxar / DigitalGlobe Open Data Program2,每张图像的空间大小为1024×1024像素。

• SpaceNet2:SpaceNet2数据集[26]由10,590张城市场景下的HSR光学遥感图像组成,这些图像是从数字地球的世界观-3卫星上收集下来的。该数据集还提供了219,316个城市建筑实例的标签。每幅图像的空间大小为650×650像素,空间分辨率为0.3 m。在本研究中,我们只使用了3个波段的RGB图像及其标签

验证数据集

利用两个大型HSR遥感建筑变化检测数据集对目标变化检测的性能进行了评估。
• WHU building change detection: 该数据集[15]由2012年和2016年在同一面积20.5 km2获得的两张航空图像组成,分别包含12,796和16,077个建筑实例。每幅图像的空间大小为15354×32507像素,空间分辨率为0.2 m。由于2011年2月发生的6.3级地震,该地区出现了大量的重建建筑和新建筑;

• LEVIR-CD: 由637对HSR双时遥感图像对组成,采集自谷歌地球平台。每幅图像的空间大小为1024×1024像素,空间分辨率为0.5 m。该数据集总共提供了31,333个构建实例的change标签,但没有语义标签。这个数据集不仅包括出现的建筑,还包括为更一般的建筑变化而消失的建筑。LEVIR-CD数据集被正式分为tarin|val|test,其中三部分分别包括445、64和128对。如果没有指定,则使用整个数据集(LEVIR-CDall)进行评估。

3.2 实施细节

迭代次数:40k(所有数据集都如此)
学习率:0.03,使用poly策略进行衰减。具体为给学习率乘上一个与step相关的系数,系数计算规则如下,其中γ=0.9
( 1 − s t e p m a x _ s t e p ) γ (1-\frac{step}{max\_step})^γ (1max_stepstep)γ
优化器:SGD,decay为0.0001,momentum为0.9
数据增强:水平垂直翻转、尺度抖动、随机裁剪(512x512,SpaceNet2为256x256)
评价指标:IoU和F1

3.3 实验效果

单时像下的对比实验如下,PCC指通过语义分割结果直接进行变化检测,ChangeStar指使用ChangeMixin进行变化检测,可以看出使用ChangeMixin进行变化检测效果更好。同时,也发现在xView2 pre-disaster进行预训练后的模型iou更好,这可能是因为xView2能提供更多的变化正样本(建筑标注多,空白背景多),且xView2的影像分辨率更加丰富

4、关键分析

4.1 ChangeMiXin结构分析

语义监督

表2 (b)/©和(d)/(e)表明,语义监督的引入对对象变化检测是积极的。在定量上,语义监督提高了基线0.57%的IoU和0.43%的F1,而具有时间对称性的基线提高了1.61%的IoU和1.19%的F1。这说明语义监督提供的语义表征有利于对象变化表征学习,具有时间对称时对象变化表征更强。

时间对称性

表2 (a)/(d)和©/(e)显示,使用时间对称时,基线提升了2.25%的IoU和1.69%的F1,在语义监督下,基线提升了3.29%的IoU和2.45%的F1。这说明在STAR的二进制目标变化检测中,保证时间对称性具有重要意义。我们还可以发现,时间对称使从语义表示中学习对象变化表示效果更好。

Label assignment

讨论了不同的标签分配策略对准确性的影响。表3显示,使用或达到43.84%,而使用xor达到65.71%。这是因为这些负样本(即重叠区域)是必要的,以使模型学会抑制发生在在t1到t2期间没有变化的对象上的假阳性,这可以由xor来满足。且,或操作错误地分配了它们的标签。

4.2 双时像双时像差异

ChangeStar(PSPNet,DeepLab v3)获得了与STANET(FCN + BAM和FCN + PAM)几乎相同的。当引入编码器-解码器架构时,ChangeStar(DeepLab v3+,semantic FPN,FarSeg)取得了更好的性能。当进一步引入FPN家族解码器时,ChangeStar(semantic FPN,FarSeg)优于其他组合。因此,我们认为编码解码器和FPN体系结构更适合目标变化检测,这可能归因于多尺度问题。此外,更深的骨干网络带来更高的精度收益,与其他视觉任务[22,13,12,25]一致。这些结果表明,ChangeStar是一种简单而有效的目标变更检测体系结构。

单时间监督属于目标变化检测的弱监督。为了研究双时间监督和单时间监督之间的差距,我们进行了综合实验来分析它们的性能差异。结果如表5所示。我们观察到PCC和双时间监督方法之间有16个∼19%的f1差距。当使用一个大的主干时,我们的STAR可以显著地将差距缩小到10%以内。而且可以看出,随着骨干网络的深入,性能差距越来越小。

4.3 错误分析

将图7 (e)与(d)和(f)进行比较,可以发现PCC的误差主要在于不同物体外观和物体几何偏移引起的假阳性,这是因为PCC只依赖于语义预测来进行比较。此外,STAR假阳性也不低,该方法也无法消除图像配准偏差所导致的假阳性。
而,双时间监督直接学习如何从成对有标记的数据中进行比较,可以在一定程度上消除假阳性。

ChangeStar可以同时输出双时态语义预测和变化预测。变化预测也可以通过语义预测比较得到。因此,我们展示了它们的学习曲线来探索它们之间的关系,如图8所示。我们发现,语义表示学习比对象变化表示学习具有更快的收敛速度。在训练的早期阶段((0,40]epoch),语义预测的比较优于变化预测。这表明,学习语义表示比学习对象变化表示更容易。在中间阶段((40,60]epoch),变化预测获得了与语义预测比较相似的性能。模型收敛后,变化预测具有较高的语义预测的性能。这一观察结果表明,STAR可以带来额外的对比信息来帮助对象改变表征学习,而不是仅仅从语义监督中获益。

猜你喜欢

转载自blog.csdn.net/a486259/article/details/129703006