AllClear: A Comprehensive Dataset and Benchmark for Cloud Removal in Satellite Imagery
Abstract
卫星图像中的云对下游应用构成了重大挑战。当前云移除研究的一个主要挑战是缺乏一个全面的基准和一个足够大和多样化的训练数据集。为了解决这个问题,我们引入了最大的公共数据集——AllClear,用于云清除,其中包含23,742个全球分布的兴趣区域(roi),具有不同的土地利用模式,总共包含400万张图像。每个ROI包括2022年的完整时间捕获,包括:
- 来自Sentinel-2和Landsat 8/9的多光谱光学图像
- 来自Sentinel-1的合成孔径雷达(SAR)图像
- 辅助遥感产品,如云掩模和土地覆盖图
我们通过基准性能验证了我们数据集的有效性,展示了精度指标——PSNR从28.47上升到33.87,增加30倍的数据,并对时间长度和单个模式的重要性进行了消融研究。该数据集旨在提供对地球表面的全面覆盖,并促进更好的除云结果。
1 Introduction
卫星图像识别可以实现环境监测、灾害响应、城市规划、作物产量预测等许多应用,但由于云层遮挡而受到严重阻碍。在任何给定时刻,大约67%的地球表面被云覆盖。无云捕获的有限可用性对于时间敏感事件(如野火控制和洪水损害评估)尤其成问题。因此,开发有效的去云技术对于在各个领域最大限度地利用遥感数据至关重要。
表1 公开可用的去云数据集。
阻碍云移除研究的一个主要挑战是缺乏全面的数据集和基准。一项关于云移除的公开可用数据集的调查(表1)揭示了几个问题:
- 大多数现有数据集都是从一小部分地点采样的,因此地理多样性有限,这既影响了训练的有效性,也影响了评估的严谨性。
- 许多现有的数据集过滤掉了非常多云的图像(例如,超过30%的云覆盖率),从而使训练好的模型无法处理广泛云覆盖的实际情况(图1)。
- 一些现有的基准使用在与有云输入图像的时间差异较大的无云图像。这意味着在有云输入图像和无云图像之间可能发生了许多变化,从而在评估中引入了误差。
- 现有的数据集包含了一组非常有限的传感器(即Sentinel-2),限制了模型可获得的信息,无法真实地去除云层。
图1 左图:AllClear感兴趣区的地理分布;中间图:训练和测试集AllClear的土地覆盖分布;右图:整个AllClear数据集的云覆盖分布。
为了解决这些限制并促进去云的未来研究,我们引入了迄今为止最大和最全面的数据集AllClear。为了确保充分覆盖地球下垫面的多样性,AllClear包括了23,742个分散在全球各地的不同土地覆盖种类的感兴趣区域(roi),产生了400万张多光谱图像。AllClear包括来自三颗不同卫星(即Sentinel-1,Sentinel-2和landsat -8/9)在每个ROI捕获的一年(2022年)的数据,使模型能够更好地填补缺失的信息。我们使用这个数据集来创建一个更严格的sequence-to-point基准,具有更多的时间对齐的基础真值。最后,除了大量的原始卫星图像,我们还为每个单独的图像构建了一组丰富的元数据(地理位置、时间戳、土地覆盖图、云掩膜等),以支持构建未来的模型来应对去云的挑战,实现分层评估。
我们评估了AllClear上现有的先进技术,发现现有的模型训练不足。在我们更大、更多样化的训练集上进行训练可以显著提高性能。我们还发现,使用全套可用传感器以及较长时间序列的模型表现得更好。总的来说,我们的贡献是:
- 我们引入了迄今为止最大的云移除数据集,以及一个全面分层的评估基准
- 证明更大、更多样化的训练集显著提高了模型的性能
- 我们从经验上展示了利用多个传感器和更长的时间跨度的重要性
2 背景知识
2.1 现有去云数据集
卫星图像云去除研究的进展,促使了几个具有独特特征和独特局限性的数据集的发展。STGAN引入了两个去云数据集,并建立了使用三幅图像作为输入的多时间任务格式。然而,该数据集丢弃了所有云量超过30%的图像,导致只有3k幅图像。继STGAN之后,Huang和Wu发现STGAN中的注释可能是不正确的,并提出了四倍数量于STGAN的图像的Sen2_MTC。Sen_MTC数据集首先在全球范围内采样50个瓦片,然后将瓦片分成小块,限制采样的区域多样性。STGAN和Sen_ MTC也没有描述它们的数据处理水平(例如,1级大气顶部或2级表面反射图像),因此很难比较不同数据集上的模型。不同于STGAN和Sen2 MTC数据集。SEN12MS-CR数据集的特点是包含合成孔径雷达(SAR)图像,以增强光学图像,每个数据点有一个图像对。紧接着是SEN12MS-CR-TS ,具有多时间(每个位置多个图像)多模态配对图像。对于每个位置,将2018年的30张Sentinel-1和Sentinel-2图像进行时间对齐和配对,形成时空瓦片。然而,两种模式之间的时间差异可以大到14天,输入和目标之间的时间差异可以大到一年,从而导致评估中的误差。此外,作者构建了一个sequence-to-point的云去除任务,其中不包括该数据集中云覆盖率超过50%的图像。EarthNet2021还提供了精心整理的sentinel -2图像序列,空间分辨率为20米,波段为RGB和红外。然而,该数据排除了高云层覆盖率的时空瓦片,因此不是一个理想的云移除数据集。
2.2 去云方法
早期的去云工作使用条件GAN将单幅图像映射到其无云版本,在NlR通道上进行调节或SAR图像,这些早期的尝试无法推广到真实的多云图像。Singh和Komodakis以及Ebel等人通过使用循环一致性损失改进了这种设置。其他方法学习从SAR图像到其相应的多光谱波段的映射。最近,随着Transformer的出现和兴起,已经引入了多个头部关注模块用于云去除任务。Yu等将云视为图像失真,设计失真感知模块来恢复无云图像。Zou等人利用多时间输入和多尺度注意力自编码器来利用全局和局部上下文进行重建。Ebel等人也采用了多时间输入和注意力自编码器,但也提出估计预测的不确定性,这控制了风险缓解应用的重建质量。Jing,Zou等人提出利用扩散训练目标进行无云图像生成,其输入仅依赖于最优图像,不考虑SAR图像。Khanna等人提出了一种用于卫星图像的生成基础模型,但并不适合云移除任务。
3 数据集
3.1 感兴趣区的选择
我们选择roi来满足两个目标:
- 大部分地表的覆盖
- 土地覆盖类型的平衡采样
这种平衡的采样特别确保了像城市这样面积较小但更受关注的地方与大片荒野一样被很好地代表。为了获得这些ROI,我们遵循两个步骤:管理ROI候选对象池,然后构建跨土地覆盖类型平衡的训练/基准子组,如图1所示。这确保基准和训练集都包含足够数量的代表各种土地覆盖类型的数据。
为了管理ROI池,与之前随机选择ROI的工作不同,我们使用网格采样来选择每0.1°纬度和每0.1°经度的ROI,其中
是纬度,从90°S到90°N。这种方法背后的思想是,同样的0.1°经度在赤道上可以表示11.1公里,在67°纬度上可以表示4.35公里。这种加权为避免高纬度地区的过度采样提供了一种简单而有效的方法。通过使用GeoPandas包剔除海洋区域,我们共选择了1,087,947个roi。
接下来,我们从池中选择roi,在考虑地球表面土地覆盖分布的自然不平衡的情况下,实现更平衡的土地覆盖使用数据集。我们利用谷歌地球引擎的动态世界产品中的土地覆盖数据。这是一个10米分辨率的土地利用/土地覆盖(LULC)数据集,包含9个类别的类别概率和标签信息:水体、树木、草地、淹水植被、作物、灌木、建筑、裸地、冰雪。具体来说,我们计算了2022年LULC的全年中位数,作为每个ROl的土地利用和土地覆盖的估计。我们迭代地从候选池中选择roi,使得所有类别(雪和冰除外)的平均土地覆盖率在基准集中大于10%,在训练集中大于5%。
最后,为了与先前数据集训练的模型进行更公平的比较,我们采取了额外的措施来排除接近SEN12MS-CR-TS数据集的roi。具体来说,SEN12MS-TR-CS数据集中的瓦片大小为40 x 40 km²。因此,我们排除了在SEN12MS-CR-TS的roi半径50公里范围内的AllClear中的roi。
3.2 数据准备
AllClear包含由Google Earth Engine (GEE)平台提供的三种不同类型的开放获取卫星图像:Sentinel-2 A/B,sentinel - 1 A/B和Landsat 8/9。对于Sentinel-2,我们收集了所有13个波段的1c级正整流大气顶(TOA)反射率产品。对于Sentinel-1,我们获取了具有两个极化通道(VV和VH)的S1 Ground Range Detected (GRD) 产品。所有清晰系统的原始图像都被重新采样到10米分辨率。在所有下载过程中,我们都遵循默认的GEE预处理步骤。此外,我们还包括所有Sentinel-2图像的动态世界土地覆盖图。对于每个选定的ROI,我们的目标是在2022年以10米的空间分辨率收集所有2.56 x 2.56 km²的片。我们采用通用横墨卡托(Universal Transverse Mercator,简称UTM)坐标参考系(CRS),继Ebel、Zhao之后,将地球划分为60个带。每个跨越6度的经度,以确保最小的失真,特别是沿经度轴。由于卫星图像通常是在不一定符合UTM区域边界的大型图块中捕获的,因此在图块数据未覆盖整个ROI的地方可能会出现空白(NaN值)。在这种情况下,我们排除所有包含NaN值的图像以保持数据质量。
数据预处理
对于Sentinel-1,遵循Ebel等人,我们将S1的VV通道中的值削波为[-25,0],有VH通道的值削波为[-32.5,0]。对于 Sentinel-2和 Landsat8/9,我们将原始值裁剪为[0,10000]。然后将值规范化为 [0,1]的范围。
云和阴影遮罩计算
云和阴影掩码是该数据集不可或缺的,因为它们用于通过掩盖目标图像中存在云和阴影的区域来指导评估度量计算。为了获得云掩码,我们使用了谷歌地球引擎上的S2云概率数据集。该数据集使用S2cloudless构建,S2cloudless是一种基于梯度增强算法的Sentinel-2图像自动云检测算法,在Hollstein参考数据集和LCD PixBox数据集中,对不透明云和半透明云的整体云检测精度最好。
对于阴影掩码,理想情况下可以利用太阳方位角和云层高度来估计云的阴影,但后者的信息无法获得。因此,我们根据Google Earth Engine中的文档继续管理阴影掩码。通过计算暗像素和投影云区域来估计阴影。对于暗像素,我们使用来自Sentinel-2的场景分类图(SCL)波段值来去除水像素,因为水像素与阴影相似。然后,我们将NlR像素值的阈值设置为1e-4,以创建暗像素的地图。最后,取暗像素图与投影云区的交点,得到云阴影掩码。
3.3 基准任务设置和评估
为了评估,使用AllClear数据集构建了一个sequence-to-point的任务,该数据集分别具有278,613、14,215和55,317个样本的训练、验证和测试。每个实例包含三个输入图像(u1、u2、u3)、一个目标清晰图像(v)、输入云和阴影掩码、目标云和阴影掩码、时间戳以及诸如纬度、经度、太阳仰角和太阳方位角等元数据。Sentinel-2图像被认为是主要的传感器模态,而Sentinel-1和LandSat-8/9等传感器是辅助的。与以前的数据集不同,我们没有对输入图像中的云覆盖率设置阈值。我们还提供了不同阈值的云和阴影掩码选项供用户使用。
我们解决了在以前的数据集中发现的两个时间偏差问题:源和目标图像之间的偏差(其中差异可能相隔数月)以及主传感器与辅助传感器配对的时间偏差(其中差异最多可能为两周)。为了避免时间错位问题,从四个连续的时空块中选择目标清晰图像。特别是,输入图像和目标图像的时间戳的顺序为[u1,v,u2,u3]或顺序为[u1,u2,v,u3]。这确保了目标图像不包括在捕获浑浊图像后发生的任何新的或未见过的变化。对于辅助传感器,我们选择与各自的Sentinel-2图像相差两天的辅助卫星图像。如果没有可用的辅助传感器图像匹配,则用相应的通道填充。
请注意,我们的目标图像可能仍然有一些云(因为很难在每个时间跨度内获得无云图像)。为了在不同场景和限制度量不准确性之间达到平衡,我们将目标图像设置为云和阴影(组合)覆盖率小于10%,并在计算度量时排除多云像素。我们修改了各种基于像素的指标,只计算无云区域。我们采用了去云文献中常用的指标:平均绝对误差(MAE)、均方根误差(RMSE)、峰值信噪比(PSNR)、光谱角映射器(SAM)和结构相似指数测量(SSIM)。
4 实验
4.1 对AllClear测试集上的先前方法进行基准测试
选择SoTA模型体系结构
为了在数据集之间进行公平的比较,我们选择SoTA模型进行比较。具体来说,我们选择了在SEN12MS-CR-TS上预先训练过的最先进的模型作为基准,因为AllClear和SEN12MS-CR-TS都是大气层顶部图像,并且包含了Sentinel-2的所有波段。值得注意的是,其他以前的数据集,如STGAN和Sen2_MTC被排除在外,因为预处理方法和图像生产类型没有明确提到,这使得在AllClear数据集上直接部署以前的模型不公平,也不具有可比性。因此,我们排除了CTGAN、PMAA等模型。DiffCR使用这些数据集进行训练。相反,我们选择sequence-to-point模型UnCRtainTS模型,和sequence-to-sequence的模型U-TILISE,既在SEN12MS-TR-CS数据集上进行了预训练,也可用于我们的实验。对于这个评估,所有模型都接收三张图像作为输入。具体来说,它们同时接收沿通道维度连接的Sentinel-2和Sentinel-1图像。
结果
基准测试结果如表2所示。我们首先注意到,采样的基线云雾最少,拼接在数据集上表现良好。UnCRtainTS在SSIM和SAM方面的性能略好于这些采样基线。另一方面,U-TILISE模型无法达到采样基线的性能。由于U-TILISE是一个序列到序列的模型,我们采用它进行序列到点的评估,从输出序列中选择MAE得分最低的图像作为模型输出。值得注意的是,U-TlLISE的训练涉及到将采样的云掩模作为输入添加到无云图像中,并且训练它恢复原始的无云序列。以类似的方式对模型进行评估。采样云掩模与真实云的分布差异可能是导致真实场景中U-TILISE得分较低的原因。少混浊和拼接的良好性能令人感兴趣。我们推测部分原因可能是在AllClear中,输入图像和目标图像之间的时间差距较小,因此简单地对输入图像进行平均或选择可能会产生良好的结果。
表2 在我们的AllClear基准数据集上评估了以前的SoTA模型的基准性能。表现最好的值用粗体表示,第二好的值用下划线表示。
失败案例
为了更好地理解最先进技术的性能,我们将使用最先进模型UnCRtainTS生成的输出图像可视化,该模型是在SEN12MS-CR-TS数据集上训练的。在图2中,我们在AllClear测试用例上评估预训练模型,其中它接收三张浑浊图像作为输入。总的来说,我们观察到模型性能的三种主要失效模式:
- 模型不能从清晰的输入图像中提取,特别是当其他两个图像是浑浊的时候。正如作者所指出的那样,这个问题可能会出现,因为模型是专门针对云覆盖率低于50%的图像进行训练的。
- 即使输入的图像大部分是清晰的,该模型也经常难以恢复正确的光谱。我们假设这是由于相对较小的数据集大小,导致缺乏泛化能力。
- 模型往往不能推广到积雪覆盖地区。我们推测这是由于训练过程中对不同雪域的采样不足。
图2 在SEN12MS-CR-TS云移除数据集上训练的先前SOTA模型UnCRtainTS的失败案例。
4.2 在AllClear上训练
接下来,我们将评估在AlClear上进行培训的好处。出于这个目的,我们使用UnCRtainTS,因为它在之前的基准测试中表现良好。为了评估AllClear和之前的SEN12MS-TR-CS数据集之间是否存在域差异,我们首先运行一个相等训练集大小的比较。我们在AllClear的子集上训练UnCRtainTS,该子集的大小与UnCRtainTS训练中使用的训练集大小相同,即10,167个数据点。为了避免额外的调优,我们还遵循了原始论文中的训练超参数。如表3所示,当两个模型在AllClear上进行评估时(即表3中底部的两行),我们观察到在两个数据集上预训练的UnCRtainTS模型在四个指标上具有可比较的结果。这表明两个数据集之间没有明显的域差异。
表3 在AllClear上重新训练UnCRtainTs模型的基准性能.
使用AllClear进行缩放
接下来我们使用AllClear提供的大型训练集来评估我们可以缩放多少UnCRtainTS。具体来说,我们在同一验证集上进行评估时,使用来自训练数据集的随机抽样来管理各种规模的数据集。表4显示了结果。我们发现,更多的训练数据明显提高了所有指标的准确性,导致PSNR提高了10%以上。图5显示,使用更大的数据集,该模型能够更好地去除云并更好地保留颜色。这表明,在过去的数据集上训练的云移除模型通常训练不足,而AllClear的大型训练集对于帮助模型更好地拟合数据非常有用。
表4 我们的模型在以UnCRtainTS为骨干架构的AllClear数据集上的缩放规律。
图5 将训练数据集缩放10倍会得到更好的定性结果。
4.3 分层评价
我们使用AllClear中可用的土地覆盖类型标签对土地覆盖类型进行分层评估(图3)。我们通常发现,水体和积雪的PSNR和SSIM指标都要差得多。水体具有瞬态波型,积雪也常常是瞬态波型,这可能解释了预测这些波型的困难。雪也可能与云混淆。
图3 使用AllClear数据集的不同部分训练的模型的土地覆盖分层评估:1%、3.4%、10%和100%。
图4 在不同云和阴影覆盖水平下,通过PSNR(左列)和SSIM(右列)测量云的去除质量。上面一行表示在完整AllClear数据集上训练的模型,下面一行表示在SEN12MS-CR-TS数据集上训练的模型。
根据过去的工作,我们还对相对于云覆盖和阴影程度的精度进行了分层评估(图5)。对于云覆盖,通常性能随云百分比下降,这是预期内的。在更大的数据集(AllClear)上进行训练,大大提高了低云和中等云量的准确性,但对全云地区则没有提高。请注意,条纹图案是由于完全浑浊的图像,在附录中解释。阴影通常不是问题,阴影百分比似乎与性能无关。
4.4 不同时间跨度的影响
接下来,我们将使用基准测试来查看使用3个输入图像的常见做法是否足够。我们比较了两个模型,一个使用3张图像,另一个使用在该位置捕获的所有12张图像。这两个模型都是在AllClear的10k子集上训练的。结果如表5所示,表明事实上较长的时间跨度显著提高了准确性。因此,未来的云清除技术应该考虑更长的时间跨度。
表5 不同时间长度的影响
5 结论
本文介绍了AllClear,这是用于云清除研究的最广泛和最多样化的数据集。更大的训练集显著提高了最先进的性能。我们的数据集还可以对云覆盖和土地覆盖以及序列长度和传感器类型的消融进行分层评估。我们希望未来的研究可以建立在这个基准上,例如通过探索SAR和多光谱图像之间的动态,来推进云的去除。