把一个遥感基础模型从原来的传感器迁到新的多光谱、SAR 或专题数据时,最容易出现一种难以解释的结果:模型变差了,却不知道是波段不匹配、训练样本不同,还是微调策略不合适。若把所有问题都塞进一次全量微调,最终得到的只是一个分数,无法形成可复现的 GIS 产品决策。

开源项目 SPECTRA 将自己定位为地理空间基础模型的分割微调实现。它把跨传感器适配拆成两个部分:BRE(Band-Routed Embedding) 处理输入波段,ST-LoRA(Stage-wise Transferability-aware LoRA) 决定各网络阶段如何分配低秩适配能力。对 GIS 团队,最值得借鉴的是这种拆法:先确认模型实际看到了什么波段,再讨论给哪些层多少可训练参数。

SPECTRA GitHub 仓库预览图SPECTRA GitHub 仓库预览图

图:SPECTRA GitHub 仓库预览图,来源:项目仓库页面。

核心机制:波段适配和参数适配不是同一件事

SPECTRA 的 BRE 保持预训练的 patch embedding 冻结,先选择与预训练兼容的目标波段,再从所有可用源波段学习一个零初始化残差校正。这意味着训练起点尽量保留原模型的输入语义,只有在数据支持时再逐步校正。对于更换传感器或只拥有部分波段的任务,这比直接改写第一层权重更容易追溯:团队可以明确记录哪些目标波段被选中、哪些源波段参与残差,以及这种映射是否与业务含义相符。

ST-LoRA 则回答另一个问题:模型不同阶段对当前任务的可迁移性是否相同。仓库中的 STPlanner 会剖析分阶段的可迁移性,在总的 LoRA rank budget 下为每个阶段选择 rank,并提供 transferrepair 两种规划模式。无论最终采用哪种模式,rank 分配都应被视为一次实验配置,而不是隐藏在训练脚本里的常数。

先做波段账本,再比较微调方法

跨传感器分割的第一份交付物应是一张波段账本。每一行写清目标波段名称、中心波长或物理含义、单位、空间分辨率、缺失值规则、重采样方式,以及它在预训练模型中的对应关系。若没有直接对应,应说明是排除、复制、合成还是交给残差校正。把这张表和训练输出一起保存,才能解释某一次结果是否因输入变化而改变。

随后再建立小型方法矩阵。SPECTRA 的公开训练 CLI 列出 lplora8lora16lora32lora64last_stagesurgicalfull_ftspectra;其中 spectra 是 BRE 与 ST-LoRA 的组合。实践中不必一开始把所有方法跑遍,但至少应保留一个冻结或线性探测基线、一个固定 rank LoRA 基线,以及目标方案。这样能够分别看到输入适配和参数适配带来的变化。

数据根目录和骨干依赖也属于实验事实

SPECTRA 使用环境变量指定 FireScars、Sen1Floods11、Landslide4Sense 与 GEO-Bench SA Crop Type 的数据根目录,而不将私有路径写死。这是可复现实验的重要细节:脚本可共享,数据位置和访问权限留在运行环境;同时,数据布局、训练验证测试划分和版本都应被记录。

仓库还要求在活动环境中安装 TerraTorch、Prithvi 等 backbone 依赖,并允许通过 TERRATORCH_ROOTPRITHVI_EO_ROOT 指向本地检出。不能只记录“使用 Prithvi”这类笼统标签。应固定 backbone 的 commit 或权重版本、解码器实现、依赖版本和配置文件哈希。否则一次微调成功很难被另一台机器重现,更无法辨别框架升级与 SPECTRA 策略本身的影响。

技术路径:让每次微调都能重跑

在训练前固定波段账本、数据根目录、依赖版本和配置哈希;训练时分别输出 BRE 的启用状态、波段映射、STPlanner 的 rank 计划和随机种子;训练后将模型权重与 AOI、空间划分、类别口径和分割统计一起归档。这样,数据变化、输入适配和参数适配可以被分开复验,而不会在一次分数波动中混为一谈。

可核查事实

  • SPECTRA 将 BRE 与 ST-LoRA 组合为其 spectra 方法。
  • BRE 冻结预训练 patch embedding,并以零初始化残差校正适配输入波段。
  • STPlanner 在 LoRA rank budget 下分配各阶段的 rank,并提供 transfer 与 repair 模式。
  • 公开 CLI 同时提供线性探测、不同固定 rank LoRA、末阶段、surgical、全量微调和 spectra 基线。
  • 项目以环境变量配置数据根目录,并提供多种 backbone 与分割数据集配置。

GIS 场景:洪水、火烧迹地和滑坡要分别验边界

项目为 Prithvi-EO-2.0 600M、ScaleMAE 与 SatMAE 提供了在 Sen1Floods11、FireScars、Landslide4Sense 和 GEO-Bench SA Crop Type 上的配置。它们覆盖洪水、火烧迹地、滑坡和作物类型,恰好提醒我们:同一个“分割精度”不等于同一种空间质量。

洪水任务应把水边界、云影和常年水体分开抽样;火烧迹地要检查时间窗和烟云影响;滑坡任务需观察细长或破碎斑块是否被平滑掉;作物类型还要按地块和生长季分层。每个任务都应在独立空间单元上验证,避免同一地点的相邻切片同时出现在训练与验证集,从而把空间自相关误判为泛化能力。

仓库还说明:当 Prithvi + FireScars 的目标输入已匹配预训练的 6 波段 patch embedding 时,spectra 会自动绕过 BRE,改用原生 patch embedding 加 ST-LoRA。这是一个很好的条件检查示例。波段已经匹配时,继续引入波段校正未必有益;系统应记录“为何跳过 BRE”,而不是让不同实验走出看不见的分支。

最小验收清单

  1. 建立波段账本,记录目标与预训练波段的映射、单位、分辨率和重采样。
  2. 固定数据集版本、空间划分、随机种子、backbone/权重 commit 与配置文件哈希。
  3. 至少比较冻结或线性探测、固定 rank LoRA 与目标方法三组基线。
  4. 单独保存 BRE 是否启用、残差输入和 STPlanner 的 rank 计划。
  5. 按灾害事件、区域或地块做空间独立验证,不只报告随机切片结果。
  6. 对输出检查类别面积、斑块数、边界长度、拓扑有效性和关键 AOI 的人工样本。
  7. 把模型结果标为候选分割层,经过业务审核后再写入权威 GIS 图层。

风险边界

SPECTRA 的仓库说明了实现和公开实验配置,并不保证每种传感器、每个地区或每套标签体系都能获得相同收益。BRE 的兼容波段选择受预训练模型和目标数据限制;ST-LoRA 的 rank 规划也依赖训练数据和可迁移性估计。更高的像元指标不能替代坐标、时间、类别定义和空间边界的核验。对灾害响应、监管或资产更新,仍需保留人工复核与原始观测证据。

结论

SPECTRA 的关键启发不是“再加一种 LoRA”,而是把输入波段与网络适配分别管理。先用波段账本确认模型看到的物理信息,再用受控基线比较分阶段 LoRA,最后按业务对象验证空间边界,跨传感器微调才会成为可解释、可重跑的 GIS 工程过程。

资料来源