几十年来,地球观测卫星、飞机以及最近的无人机平台一直在收集越来越多的地球表面图像。遥感图像包含有关季节性和长期趋势的信息,对于解决人类面临的一些最大挑战,包括气候变化适应、自然灾害监测、水资源管理和全球人口增长的粮食安全,具有不可估量的价值。从计算机视觉的角度来看,这包括土地覆盖制图(语义分割)、森林砍伐和洪水监测(变化检测)、冰川流动(像素跟踪)、飓风跟踪和强度估计(回归)以及建筑物和道路检测(目标检测,实例分割)等应用。通过利用深度学习架构的最新进展、更便宜、更强大的 GPU 以及 PB 级的免费卫星图像数据集,我们可以更接近于解决这些重要问题。
然而,数据采集方法的差异以及地理空间元数据的处理使得将深度学习方法应用于遥感数据变得复杂。例如,卫星图像通常包含红、绿、蓝之外的额外光谱波段,并且必须与其他可能具有不同坐标系统、边界和分辨率的地理空间数据源结合。

为了实现深度学习在遥感应用中的潜力,微软人工智能研究院与美国伊利诺伊大学厄巴纳-香槟分校的研究人员联合推出了TorchGeo,这是一个用于将地理空间数据集成到PyTorch深度学习生态系统中的Python库。

TorchGeo提供了多种基准数据集的数据加载器、用于通用地理空间数据源的可组合数据集、地理空间数据的采样器,以及适用于多光谱图像的变换。TorchGeo还是首个提供多光谱卫星图像(例如,使用Sentinel 2卫星所有波段的模型)的预训练模型的库,这使得在有限标记数据的情况下,进行下游遥感任务的迁移学习取得进展。
TorchGeo 旨在使机器学习专家可以轻松地处理地理空间数据,并且遥感专家可以探索机器学习解决方案。
TorchGeo的安装与使用示例
TorchGeo 支持在不同的操作系统(Linux、macOS、Windows)上运行。它可以使用用户擅长的任何包管理器轻松安装,包括 pip、conda 和mamba。
$ pip install torchgeoTorchGeo 的设计目标是拥有与 torchvision、torchtext 和 torchaudio 等其他 PyTorch 领域库相同的 API。如果用户已经在工作流程中使用 torchvision 处理计算机视觉数据集,则只需更改几行代码即可切换到 TorchGeo。
所有 TorchGeo 数据集和采样器都与 PyTorch DataLoader 类兼容,这意味着用户可以利用 PyTorch Lightning 等包装库进行分布式训练。

以下示例应用程序中,我们组合了 A) 来自 Landsat 8 的场景和 B) 农田数据层标签,即使这些文件位于不同的 EPSG 投影中。我们希望使用地理空间边界框作为索引,从这些数据集中采样补丁 C) 和 D)。许多遥感应用都涉及处理 地理空间数据集(具有地理元数据的数据集)。在 TorchGeo 中定义了一个GeoDataset类来表示这类数据集。每个GeoDataset不是由整数索引,而是由时空边界框索引,这意味着可以智能地组合覆盖不同地理范围的两个或多个数据集。在这个例子中展示使用 TorchGeo 处理地理空间数据以及从 Landsat 和农田数据层 (CDL) 数据的组合中采样小图像块是多么容易。首先,假设用户已经下载了 Landsat 7 和 8 图像。由于 Landsat 8 比 Landsat 7 具有更多的光谱波段,因此只使用这两颗卫星共有的波段。然后将通过取这两个数据集的并集来创建一个包含Landsat 7和8数据的所有图像的单个数据集。
from torch.utils.data import DataLoaderfrom torchgeo.datasets import CDL, Landsat7, Landsat8, stack_samplesfrom torchgeo.samplers import RandomGeoSampler
landsat7 = Landsat7(root=”…“)landsat8 = Landsat8(root=”…”, bands=Landsat8.all_bands[1:-2])landsat = landsat7 | landsat8
接下来,我们取这个数据集和 CDL 数据集的交集。我们想要取交集而不是并集,以确保我们只从同时拥有 Landsat 和 CDL 数据的区域采样。请注意,我们可以自动下载和校验 CDL 数据。另请注意,这些数据集中的每一个都可能包含不同 CRS 或分辨率的文件,但 TorchGeo 会自动确保使用匹配的 CRS 和分辨率。
cdl = CDL(root="...", download=True, checksum=True)dataset = landsat & cdl该数据集现在可以与 PyTorch 数据加载器一起使用。与基准数据集不同,地理空间数据集通常包含非常大的图像。例如,CDL 数据集由覆盖整个美国本土的单一图像组成。为了使用地理空间坐标从这些数据集中采样,TorchGeo 定义了许多采样器。在本例中,我们将使用一个随机采样器,它返回 256 x 256 像素的图像,每个时期返回1万个样本。我们还将使用自定义整理函数将每个样本字典组合成一个样本的 mini-batch。
sampler = RandomGeoSampler(dataset, size=256, length=10000)dataloader = DataLoader(dataset, batch_size=128, sampler=sampler, collate_fn=stack_samples)这个数据加载器现在可以在用户正常的模型训练/评估流程中使用。
for batch in dataloader: image = batch["image"] mask = batch["mask"] # train a model, or make predictions using a pre-trained model许多应用程序需要根据像这样的地理空间元数据智能地组合数据集。例如,用户可能希望:
- 组合多个图像源的数据集并将它们视为等效的(例如,Landsat 7 和 8)
- 组合不同地理位置的数据集(例如,切萨皮克纽约州和宾夕法尼亚州)
这些组合要求所有查询都存在于至少一个数据集中,并且可以使用 UnionDataset 创建。
- 组合图像和目标标签并同时从两者中采样(例如,Landsat 和 CDL)
- 组合多个图像源的数据集以进行多模态学习或数据融合(例如,Landsat 和 Sentinel)
这些组合要求所有查询都存在于两个数据集中,并且可以使用 IntersectionDataset 创建。当您使用交集(&)和并集(|)运算符时,TorchGeo 会自动为您组合这些数据集。
TorchGeo升级至版本0.6.0
近期,TorchGeo升级到了版本0.6.0,此次大型更新包含了新的数据集、基础模型等。具体来说,此次发布包含18个新数据集、15个新的Lightning数据模块(使得在给定数据集上训练/验证/测试模型变得简单),以及27个新的预训练模型(针对不同类型的地球观测数据进行专业化设计)。
- AgriFieldNet Competition Dataset
- Smallholder Cashew Plantations in Benin
- Sentinel-2 Cloud Cover Segmentation Dataset
- CV4A Kenya Crop Type Competition
- Tropical Cyclone Wind Estimation Competition
- Marine Debris Dataset for Object Detection in Planetscope Imagery
- Rwanda Field Boundary Competition Dataset
- South Africa Crop Type Competition
- SpaceNet Datasets
- Western USA Live Fuel Moistur


- 主页:https://github.com/microsoft/torchgeo
- 文档:https://torchgeo.readthedocs.io/
- PyPI:https://pypi.org/project/torchgeo/
- 论文:https://arxiv.org/abs/2111.08872
新版本数据、预训练模型与代码:
本公众号相关内容推荐
- 遥感数据分析python库scikit-eo
- 图网络的应用场景及图分析python库
- 使用Python和NetworkX创建并可视化图网络(Graph Network)
- OpenResearcher:一个开源科学研究AI助理
- NeuralGCM: 一种融合机器学习与物理原理来模拟地球大气的新方法
- Transformer Explainer:文本生成模型交互式可视化工具
- 用于探索性数据分析(EDA)的开源python库
- 分享一个构建交互式D3js可视化的Python库
- 推荐15个图网络可视化python软件包
- 9个提升科研效率的软件工具
- 生成式人工智能模型颠覆传统天气预报
- 分享5个python可视化图表工具
- 分享17个网络(Network)数据可视化工具
- Napari:一个支持分析大型多维图像数据集的python工具
- 地理空间数据分析可视化R软件包汇总
- 大气海洋科学数据可视化案例集#2
- 一个快速检索和下载NASA地球科学数据的Python软件包
- 可视化呈现海洋洋流-墨西哥湾流
- 探索NOAA提供的数据产品资源
- 全球海洋船舶定位数据交互式可视化(附数据)
- 地球科学领域开源python包#1
- 地球科学领域开源python包#2
- 大规模空间矢量数据可视化Python库-lonboard
- 可视化呈现2023年是有气象记录以来最热的一年
- 大气海洋科学数据可视化案例集#1
- 地球科学领域计算分析开源Julia软件包
- 地球观测数据可视化工具
- 地球科学领域计算分析开源Julia软件包