卫星影像的变化检测

变化检测(Change Detection)相当于计算机视觉中的找茬游戏。 给定两张图像,模型必须检测它们的所有不同点。 在遥感背景下,这些图像通常是同一地理位置在两个不同时间点的卫星或航空图像。

变化检测长期以来一直是一个活跃的研究领域,文献中有丰富的自动执行任务的算法,从基本的图像处理技术到当今的深度神经网络。 这些算法具有广泛的应用,包括检测森林砍伐、灾害后受损的建筑物以及城市土地利用的变化。 例如,请参阅[1]了解变更检测技术的最新评论。

对变化检测技术进行分类的一个广泛方法是根据它们对变化建模的方式。 直接分类方法对变化本身进行建模。 在监督机器学习环境中,这需要“更改掩码”形式的标注; 这些掩码可能是二元的(变化/不变)或更具体的(具有“森林到土地”、“土地到水”等类别)。 另一方面,后分类方法对图像中的底层特征(例如树木覆盖)进行建模,然后比较两个图像中的这些特征以查看发生了什么变化。 为此,需要对这些功能而不是更改进行标注。 当在像素级工作时,这两种方法都相当于语义分割。

本博客将探索使用我们的开源地理空间深度学习框架Raster Vision 和公开可用的 Onera 卫星变化检测 (OSCD) 数据集来进行变化检测的直接分类方法。 光栅视觉使我们能够轻松解决该数据集的特殊性,并建立一个语义分割训练管道,可以快速生成一个不错的模型。

1、使用 OSCD 数据集

Onera 卫星变化检测数据集 [2] 是一个数据集,包含 24 对共同配准的 13 波段多光谱 Sentinel-2 卫星图像,拍摄于 2015 年至 2018 年。对于每对图像,在像素级标签的形式分为变化和不变化。 每对图像来自不同的城市; 例如:贝鲁特、拉斯维加斯、孟买、巴黎和巴伦西亚。

24 个图像对中的 14个用于训练,其余 10 个构成保留测试集。

2、数据的挑战

Onera数据集提出了一些在我们使用它来训练模型之前必须克服的挑战:

  • 每幅图像中的所有波段都是单独的文件,必须堆叠在一起才能形成完整的多光谱图像。
  • 将这些频段堆叠在一起并非易事,因为它们并不都具有相同的分辨率。 因此,给定大小的窗口(例如 400×400 像素)并不对应于每个波段中的相同地理区域,如下图所示:
400×400 像素切片,取自贝鲁特一张图像中 13 个波段的每个波段。 我们可以看到,由于分辨率的差异,“从左上角开始 400×400 像素”并不能转换为每个波段中的相同地理区域。

3、机器学习的挑战

除了数据挑战之外,从机器学习的角度来看也存在一些挑战。 这些不会妨碍数据的使用,但可能会使训练一个好的模型变得更加困难:

  • 不同波段之间像素强度值的分布存在显着差异。 这可能会减慢训练速度,因为需要调整模型第一个卷积层中的权重以处理每个频带中不同比例的值。
  • 数据集相对较小。 只有 14 个训练图像对,而且它们的分辨率都太低,无法生成大量训练芯片。
  • 数据不平衡。 无变化像素的数量远远多于变化像素。

4、Raster Vision的解决方案

幸运的是,Raster Vision 拥有针对所有这些问题的潜在解决方案:

  • 通过使用自动执行对齐的 MultiRasterSource 抽象,可以轻松解决从不同文件中提取波段并堆叠它们以使它们在地理上对齐的挑战。
  • 可以使用 StatsTransformer 对波段的像素分布进行均质化,该 StatsTransformer 将每个波段的像素值标准化到 0-255 范围,同时还剪裁异常值。 (这些在传递给模型之前会转换为 0-1。)
  • 数据集较小的问题可以通过使用数据增强来解决。 增强训练数据的一种简单方法是同时使用现有的图像对,但顺序相反。 Raster Vision 接受任意的 albumentations 变换来进行数据增强,因此我们可以定义一个自定义的 albumentations 变换来执行此操作。
  • 为了解决类别不平衡问题,Raster Vision 允许为每个类别指定权重,用于加权每个类别对损失的贡献。 我们可以使用它为变更类分配更大的权重。
MultiRasterSource 将各个波段堆叠在一起形成一个多光谱图像,同时确保它们在地理上对齐,并且 StatsTransformer 将每个波段转换为像素值在 0 到 255 之间的 uint8 图像。

5、机器学习实验

使用 Raster Vision,我们将 14 个训练场景分为分别包含 10 个和 4 个场景的训练集和验证集,并进行了以下实验:

  • 使用和不使用频带标准化的训练。
  • 使用加权损失来抵消类别不平衡。
  • 随机交换两个图像的顺序作为数据增强的一种形式。

每个实验都使用具有 ResNet-50 [4] 主干的 Panoptic FPN [3] 模型,该模型使用 Adam 优化器进行了 10 个 epoch 的训练,初始学习率为 0.01,单周期调度,批大小为 16。

下表总结了这些在验证集上的实验结果。

变化:无变化损失权重比 图像交换增强 归一化 变化召回率 变化精度 变化 F1得分
1:1 0.286 0.583 0.384
10:1 X 0.291 0.668 0.405
10:1 X X 0.398 0.609 0.482
20:1 X X 0.751 0.229 0.351

我们看到第三行的模型获得了最好的 F1 分数。 根据经验,损失加权、数据增强和频带归一化似乎有所帮助,但我们需要多次运行每个实验或进行交叉验证来为这些观察结果提供统计支持。

6、在测试集上进行评估

Raster Vision 的预测命令允许我们对测试集中的每个场景进行预测。 这种预测以滑动窗口的方式进行,我们可以选择减少步幅,以确保每个像素被预测多次并对结果进行平均——这起到了一种测试时间增强的作用。

预测到位后,可以运行 Raster Vision 的 eval 命令将其与实际情况进行比较,以自动计算性能指标并将其存储在 JSON 文件中。

针对 10 个场景的保留测试集,运行上表中最佳模型的预测和评估,我们得到下表所示的结果。

该表还将这些结果与该数据集上其他已发布的结果进行了比较。 [2] 是介绍该数据集的论文,[3] 是同一作者的后续论文,介绍了用于变化检测的新的专用架构 FC-Siam-conc 和 FC-Siam-diff。 我们可以看到,我们的模型尽管不是专门为变化检测而设计的,但其性能优于 [2] 中的模型,并且与 [3] 中的 FC-Siam-conc 架构大致相当。

模型 变化召回率 变化精度 变化F1得分
Panoptic FPN(我们) 0.676 0.411 0.511
Siam 0.856 0.242 0.377
EF 0.847 0.284 0.485
FC-Siam-conc 0.652 0.424 0.514
FC-Siam-diff 0.580 0.578 0.579

7、可视化模型的预测

虽然数字可以很好地比较实验,但它们并不能让我们直观地了解模型实际在做什么。 为此,我们需要看看实际的预测。

以下图片显示了模型在验证集和测试集的图像上生成的一些输出。 模型检测到变化的区域用红色框出。 我们可以看到,该模型在检测最显着的变化方面做得非常好,同时忽略了不相关的变化,例如颜色的轻微变化。

贝鲁特东北部,2015 年与 2017 年(验证集)

8、结束语

随着成像卫星的数量和能力不断增长,涉及连续地球监测的应用将变得越来越普遍。 从气候变化的角度来看,跟踪森林砍伐或冰川融化等情况也特别重要,这仍然是我们公司的一个重要关注点。

及时、准确的变化检测是此类监控工作的重要组成部分。 鉴于数据量巨大,大部分分析必须由计算机视觉模型而不是人类来执行。 像 Raster Vision 这样的免费开源工具可确保每个人都能够训练这种最先进的模型。


原文链接:Change detection with Raster Vision

BimAnt翻译整理,转载请标明出处