Galileo:一台真正“全能”的遥感预训练模型

给地球做一次多维度体检,只需要一个模型


目录

  1. 为什么要用 Galileo?
  2. Galileo 到底“看”到了什么
  3. 模型结构:像搭积木一样灵活
  4. 自监督学习:两套任务,一张答卷
  5. 预训练数据:127 155 个真实场景
  6. 实测结果:11 个基准任务全面领先
  7. 上手即用:3 行代码跑起来
  8. 常见疑问(FAQ)

1. 为什么要用 Galileo?

遥感领域一直面临两个老大难问题:

问题 场景举例
数据类型太多 光学、雷达、高程、天气、夜间灯光……
目标尺度差异大 一艘小船 1–2 像素,一座冰川上万像素

过去的做法是给每种任务、每种分辨率单独训练一个模型——成本高、迁移差、维护难。
Galileo 用一个统一的 Transformer 框架同时解决“多模态 + 多尺度”两大难题。


2. Galileo 到底“看”到了什么

下图把支持的 9 类遥感输入一次性列清:

数据类别 具体来源 变化维度
光学 Sentinel-2 全波段(除 B1/B9/B10) 空间 × 时间
雷达 Sentinel-1 VV/VH 极化 空间 × 时间
植被指数 Sentinel-2 NDVI 空间 × 时间
高程 & 坡度 SRTM 30 m DEM 空间
地表覆盖概率 Dynamic World 10 m 空间
农作物分布 World Cereal 10 m 空间
气象 ERA5 降水/气温,TerraClimate 蒸散发等 时间
夜光 VIIRS Nightlights 时间
人口密度 LandScan 1 km 静态

一句话:只要你在论文里见过的主流遥感产品,Galileo 都能吃。


3. 模型结构:像搭积木一样灵活

3.1 输入怎么变成 token?

Vision Transformer 的第一步是把图像切成 patch。
Galileo 把“空间 patch”概念扩展到“空间 × 时间 × 通道组”:

  • 一个 token = 一块 10 m 像素 × 一个月 × 一组光谱通道
  • 通道组举例:RGB、红边、近红外、SAR 双极化……

这样既能处理单幅图像,也能处理 24 个月的时间序列,甚至能降到单个像素的时间序列。

3.2 规模选择

版本 参数 GPU 时间 (H100) 适用场景
Nano 0.8 M 200 h 边缘设备、实时推理
Tiny 5.3 M 259 h 个人工作站
Base 85 M 573 h 服务器、研究级

4. 自监督学习:两套任务,一张答卷

4.1 全局任务:抓“大”特征

  • 掩码策略:在空间或时间维度上挖掉大片区域
  • 预测目标:用深层的 Transformer 输出做对比学习
  • 适合任务:整幅图像分类、跨场景迁移

4.2 局部任务:抓“小”特征

  • 掩码策略:随机打散,只遮 5 % token
  • 预测目标:直接把原始像素或浅层特征做对齐
  • 适合任务:细粒度分割、小目标检测

4.3 一起训练

把两个损失简单平均,模型在一次前向里同时学“上下文”和“细节”。
实验显示:

  • 单独全局任务 → 分类好,分割掉 9 % mIoU
  • 单独局部任务 → 分割好,分类掉 18 % Top-1
  • 联合训练 → 两者都接近最优,训练稳定性 ↑

5. 预训练数据:127 155 个真实场景

5.1 采样思路

  1. 把全球 WorldCover 10 m 土地覆盖图切成 10 km × 10 km 瓦片
  2. 用 k-means 聚类 150 000 个中心,保证地理 + 语义多样性
  3. 成功导出 127 155 个实例,每个实例覆盖 96 × 96 像素 × 24 个月

5.2 实例长什么样?

输入张量维度:
• space_time_x : [B, 96, 96, 24, 17]   # 17 组时空波段
• space_x      : [B, 96, 96, 4]        # 高程、坡度、土地覆盖
• time_x       : [B, 24, 8]            # 气象、夜光
• static_x     : [B, 5]                # 人口、坐标、均值类别

6. 实测结果:11 个基准任务全面领先

6.1 图像分类(Top-1 Accuracy)

数据集 训练数据量 Galileo-Base 最强对比模型
EuroSat 100 % 93.0 % CROMA 85.6 %
EuroSat 1 % 56.6 % SoftCon 27.2 %

在 1 % 标签的低资源场景,优势最大。

6.2 语义分割(mIoU)

数据集 模态 Galileo-Base 次优模型
MADOS 海洋垃圾 光学 67.6 % CROMA 64.2 %
Sen1Floods11 洪水 SAR 79.4 % CROMA 78.9 %

6.3 时间序列作物分类

任务 Galileo-Tiny Presto
Togo 作物 vs 非作物 74.7 % 75.5 %
Brazil 咖啡 vs 其他 97.2 % 98.8 %
Kenya 玉米 vs 其他 85.4 % 84.0 %

时间序列专用模型 Presto 只略胜 1–2 个点,而 Galileo 还能顺手做图像任务。


7. 上手即用:3 行代码跑起来

7.1 安装

git clone https://github.com/nasaharvest/galileo.git
cd galileo
pip install -e .

7.2 加载模型

from single_file_galileo import Encoder
model = Encoder.load_from_folder("data/models/nano", device="cpu")

7.3 构造输入

from src.data.utils import S2_BANDS, construct_galileo_input
s2 = torch.randn(2, 4, 4, len(S2_BANDS))  # 2 个月, 4×4 像素
inputs = construct_galileo_input(s2=s2, normalize=True)

7.4 获取嵌入

with torch.no_grad():
    emb = model(inputs)  # [B, L, D]

8. 常见疑问(FAQ)

Q1:我只用光学和雷达,Galileo 会不会太重?

A:不会。

  • 预训练时用了 9 类输入,推理时你完全可以只喂光学 + 雷达,其余填 0 即可。
  • Nano 版 0.8 M 参数,树莓派也能跑。

Q2:模型输出的 token 怎么对应回原图?

A:token 顺序 = 逐行扫描的空间 patch × 时间步 × 通道组。

  • 空间 patch 编号容易反算:
    row = token_id // (W/P)
    col = token_id % (W/P)

Q3:我想微调自己的 1 m 无人机数据,该怎么办?

A:

  1. 把 1 m 图像重采样到 10 m(或把 patch 大小改成 1 m 对应像素)。
  2. 保留原有通道顺序,缺失波段补 0。
  3. 用 1 %–5 % 标签做线性探测或微调即可,Galileo 在低资源场景优势明显。

Q4:如何引用?

@misc{tseng2025galileolearninggloballocal,
  title={Galileo: Learning Global and Local Features in Pretrained Remote Sensing Models},
  author={Gabriel Tseng and Anthony Fuller and Marlena Reil and Henry Herzog and Patrick Beukema and Favyen Bastani and James R. Green and Evan Shelhamer and Hannah Kerner and David Rolnick},
  year={2025},
  eprint={2502.09356},
  archivePrefix={arXiv},
  primaryClass={cs.CV},
  url={https://arxiv.org/abs/2502.09356}
}

结语

Galileo 把遥感领域长期割裂的“图像 vs 时间序列”“光学 vs 雷达 vs 气象”统一到一个模型里,而且小到一个 USB 棒都能跑。
无论你是做农作物监测、洪水预警还是海洋垃圾检测,都可以先用 Galileo 跑一次,拿到 90 % 基线,然后再按需微调。
代码、权重、数据全部开源,地球观测的门槛,从今天开始又低了一点。