遥感时序模型最常见的失真,不一定来自网络结构,而来自训练样本怎样跨空间和时间被抽取。TorchGeo 0.10.0 的官方发布说明把完整时序支持、空间/时间采样器重构、PyTorch batch 统一和下载校验放进同一版本。对做作物分类、变化检测和时空分割的团队,这意味着升级不应只跑通 notebook,而要重新核验样本单位、时间窗口、划分方式和数据供应链。
本文依据 TorchGeo v0.10.0 官方 GitHub Release 整理。版本说明里的功能和数字是上游事实;具体模型精度、吞吐与泛化能力仍需由项目在自身区域、传感器和标注条件下测量。
可核查事实
-
TorchGeo v0.10.0 于 2026 年 8 月 14 日发布;官方称这是其历史上最大的 release,过去 6 个月合并了 220 个 PR、来自 29 位贡献者。
-
该版本宣布完整 time series support,并列出数十个时序 benchmark dataset 和十余个时序模型。
-
发布说明将 CropHarvest 列为 temporal classification,将 Air Quality 列为新增 temporal regression 数据集;变化检测名单包括 BRIGHT、LEVIR-CD、OSCD、xBD 和新增的 xBD DistShift。
-
新版本提供 temporal regression、change detection、spatiotemporal segmentation 与 spatiotemporal pixelwise regression 等 PyTorch Lightning task 集成。
-
为支持时序,TorchGeo 重新设计 samplers:旧的 file-based sampler 被空间 sampler 和时间 sampler 分离的方案替代。
-
官方示例把
RandomPatchSampler或GriddedPatchSampler与RandomPeriodSampler或SequentialPeriodSampler通过交叉组合使用,形成时空采样。 -
所有 TorchGeo dataset 返回的
Sample被统一为dict[str, Tensor];非 Tensor 值会在可能时转为 Tensor,否则移除,以兼容 PyTorch 默认collate_fn与 Lightning 默认transfer_batch_to_device。 -
该 release 将
torchgeo.trainers改名为torchgeo.tasks,并移除 Task 后缀;例如ClassificationTask迁移为Classification。 -
发布说明列出安全加固:dataset 和 model 默认 checksum、许多数据集从 MD5 改为 SHA256,以及始终使用
torch.load(weights_only=True)。
这些变化共同指向同一个工程事实:时空样本不是普通图片 batch 加一个时间维度。时间选择、空间划分、默认 collate 行为、权重加载与数据校验都会进入结果的可重复性边界。
核心机制
空间 sampler 决定从哪里取 patch,时间 sampler 决定从何时取观测;将两者拆开,才能清楚表达“随机空间、固定年度”与“规则网格、连续时期”这两类完全不同的实验设计。官方示例用 @ 组合两类 sampler,这种组合不是为了让 API 更花哨,而是让每一批训练数据的空间范围与时间窗可以分别记录、替换和复测。
静态标签与动态影像也要分清。官方示例中 Landsat 7/8 以 B × T × C × H × W 作为动态时序输入,CDL 则是 B × H × W 的静态 mosaic。若把标签时间、影像时间和预测目标混在一起,模型可能学习到泄漏的时间信息,离线指标却仍然漂亮。统一为 Tensor 字典后,batch 合并更稳定,但也要求团队明确每个 key 的维度、单位、nodata 和时间语义。
checksum 默认开启与 weights_only=True 是另一条必要边界。下载到本地的影像、标签和模型权重应按已记录的散列校验;不可信 checkpoint 不能仅因扩展名正确就被反序列化。它们不替代供应商信誉、访问控制或隔离执行,但能把数据和权重篡改变成可检测事件。
GIS 场景
以年度作物制图为例,可把训练区按空间格网划分,训练样本使用随机 patch 与随机年度窗口,测试样本使用未重叠格网和连续年度窗口。影像时段、云掩膜、传感器、标签版本和 patch 坐标必须一同保存;否则“测试集”可能只是同一田块相邻 patch 或同一年相近日期的重复。
变化检测项目也需要双时相或多时相的明确合同。对每个 sample 记录早晚期时间、空间 footprint、传感器和重采样方法;将 xBD、OSCD 等公开 benchmark 的评测结果与本地灾害或城市更新数据分开报告。训练脚本能运行不代表模型理解了变化,而不是成像季节、云量或标签生产差异。
技术路径
先为数据模块定义样本 schema:dynamic imagery 的 T/C/H/W 含义、static label 的空间对齐、时间窗规则、nodata 策略和输出任务类型。将 spatial sampler、temporal sampler、随机种子、训练/验证/测试的空间分割和时间分割写入实验配置;每次运行保存实际抽到的格网或 scene ID 摘要。
升级到 0.10 时,先在固定小样本上替换已弃用的 file-based sampler,并检查新 sampler 是否改变了 patch 数、重叠率、年度覆盖或 batch shape。随后替换 torchgeo.trainers imports,断言每个 dataset 的 Sample 都符合 dict[str, Tensor] 约定,再运行一次训练、验证、导出和推理的最小端到端测试。
最后把数据和权重校验加入训练入口:记录预期 SHA256、下载来源、校验结果和 weights_only=True 加载路径。校验失败、样本维度不符或分割重叠时停止运行,而不是继续产出看似有效的指标。
风险边界
更多时序数据集和模型不保证某个区域的作物、灾害或气候任务得到更高精度。随机空间/时间采样也无法自动消除标签偏差、传感器不一致、CRS 重投影误差和空间自相关。默认 checksum 只能验证所用文件与预期散列一致,不能证明预期文件的许可、标注质量或业务适用性。升级中的弃用 API 与新 batch schema 可能影响既有训练、导出和服务代码,必须保留可回退环境。
检查清单
-
为每个任务写清动态与静态输入的维度、时间语义、CRS、nodata 与标签版本。
-
分别记录空间 sampler、时间 sampler、随机种子、patch 覆盖和训练/测试分割。
-
检查测试区与测试时段是否真正独立,避免相邻 patch 或近日期泄漏。
-
将所有 dataset 输出断言为
dict[str, Tensor],并对 batch shape 做固定样本检查。 -
升级 imports 时将
torchgeo.trainers和旧 Task 后缀逐项替换并跑端到端 smoke test。 -
对影像、标签与权重记录 SHA256、来源和校验结果,使用
weights_only=True加载不可信来源的权重。 -
将数据版本、采样配置、环境版本、评测空间范围和失败原因随实验结果保存。
结论
时序遥感训练的可信度从样本被选择的那一刻就开始形成。TorchGeo 0.10 的价值在于让空间、时间、batch 和校验能够被单独声明和复测。把这些合同固化下来,团队才有资格讨论模型指标是否真的代表未来时相与新区域。
参考来源
- TorchGeo v0.10.0 Release Notes:https://github.com/torchgeo/torchgeo/releases/tag/v0.10.0