社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

地理空间深度学习python库:TorchGeo

GISerlast • 4 月前 • 208 次点击  

点击下面卡片,快速关注本公众号


几十年来,地球观测卫星、飞机以及最近的无人机平台一直在收集越来越多的地球表面图像。遥感图像包含有关季节性和长期趋势的信息,对于解决人类面临的一些最大挑战,包括气候变化适应、自然灾害监测、水资源管理和全球人口增长的粮食安全,具有不可估量的价值。从计算机视觉的角度来看,这包括土地覆盖制图(语义分割)、森林砍伐和洪水监测(变化检测)、冰川流动(像素跟踪)、飓风跟踪和强度估计(回归)以及建筑物和道路检测(目标检测,实例分割)等应用。通过利用深度学习架构的最新进展、更便宜、更强大的 GPU 以及 PB 级的免费卫星图像数据集,我们可以更接近于解决这些重要问题。

然而,数据采集方法的差异以及地理空间元数据的处理使得将深度学习方法应用于遥感数据变得复杂。例如,卫星图像通常包含红、绿、蓝之外的额外光谱波段,并且必须与其他可能具有不同坐标系统、边界和分辨率的地理空间数据源结合。

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

TorchGeo提供了多种基准数据集的数据加载器、用于通用地理空间数据源的可组合数据集、地理空间数据的采样器,以及适用于多光谱图像的变换。TorchGeo还是首个提供多光谱卫星图像(例如,使用Sentinel 2卫星所有波段的模型)的预训练模型的库,这使得在有限标记数据的情况下,进行下游遥感任务的迁移学习取得进展。

TorchGeo 旨在使机器学习专家可以轻松地处理地理空间数据,并且遥感专家可以探索机器学习解决方案。

TorchGeo的安装与使用示例

TorchGeo 支持在不同的操作系统(Linux、macOS、Windows)上运行。它可以使用用户擅长的任何包管理器轻松安装,包括 pip、conda 和mamba。

$ pip install torchgeo

TorchGeo 的设计目标是拥有与 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

其中一个新模型DOFA(https://arxiv.org/abs/2403.15356)支持RGB、SAR、MSI和HSI,且可以处理任意数量的光谱波段。这与TorchGeo的RasterDatasets的灵活性相结合,使用户几乎可以开箱即用地测试预训练模型在他们的下游应用中的表现。

  • 主页https://github.com/microsoft/torchgeo

  • 文档https://torchgeo.readthedocs.io/

  • PyPIhttps://pypi.org/project/torchgeo/

  • 论文https://arxiv.org/abs/2111.08872


新版本数据、预训练模型与代码:
  • https://github.com/xiong-zhitong/DOFA-pytorch

  • https://huggingface.co/XShadow/DOFA

  • https://arxiv.org/abs/2403.15356

  • https://github.com/microsoft/torchgeo/releases/tag/v0.6.0


本公众号相关内容推荐



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/174141
 
208 次点击