OlmoEarth Studio推出可导出自定义嵌入向量,支持下游分析和RAG等场景。
OlmoEarth Studio 是我们构建地球观测模型的平台,现在可以让你计算并导出 embedding 向量——这是我们的开源 OlmoEarth 基座模型生成的地球观测数据的紧凑数值表示。源代码和模型权重与研究论文一同公开,社区可以严格审查这些 embedding 的生成方式。
Embedding 是一种快速、低成本切入 OlmoEarth 的方式:它们支持广泛的下游任务,从相似性搜索到分割再到无监督探索。地表特征相似的位置会得到相似的向量;不同的位置则相距甚远。OlmoEarth embedding 在我们的内部基准测试和独立评估中都表现出色。导出的 Cloud-Optimized GeoTIFF(COG)轻量且易于分享。通过 Studio 界面或 API 选择感兴趣区域、时间范围、编码器变体、分辨率和影像来源,即可获得一个可自由使用的 COG。如果应用需要更高性能,Studio 还支持监督微调(SFT)。
自定义计算的 embedding 现已向 OlmoEarth Studio 用户开放。如有兴趣获取访问权限,请与我们联系。使用公开可用的 OlmoEarth 模型自行计算 embedding 的说明在此。

使用 1.1M 样本的季节性 Sentinel-2 影像,OlmoEarth embedding 中的全局结构。颜色表示 PCA 降维后 embedding 空间中的 15 个 k-means 聚类。
在 Studio 中计算 embedding 与其他任何预测工作流程相同。首先配置模型并运行,然后下载结果。多个参数可定制输出:

同一 embedding 栅格应用的不同可视化选项。
Studio 交付一个 COG,每个 embedding 维度对应一个波段。向量存储为有符号 8 位整数(int8)。取值范围为 -127 到 +127,-128 保留为 nodata。如需恢复浮点向量,参见 olmoearth_pretrain 中的 dequantize_embeddings。
由于一切都是按需计算而非从预计算全局档案中提取,你的 embedding 精确反映你所关心的条件。你可以生成月度 embedding 来捕捉季节动态,而不仅仅是年度快照。
以下示例均使用 40 米分辨率的 OlmoEarth-v1-Tiny(192 维)embedding,搭配 Sentinel-2 L2A 合成影像(大多数示例为年度,变化检测为月度)。Tiny 是一个轻量级编码器,但性能仍然很高;对于自己的应用,你可以替换为更大的变体,代价是更高的计算和存储成本。
选择一个查询像素,提取其 embedding,然后与每个其他像素计算余弦相似度。结果是一张热力图,显示哪些地方与你的查询像素最相似、最不相似。

这个查询位于加利福尼亚州默塞德城区附近。城市建筑区和道路走廊连贯地亮起,而农业用地保持黑暗。模型无需任何标签即可区分建筑表面和农田。
将查询切换到一个小窗口农业区,我们将该窗口内 embedding 向量的均值定义为查询向量,然后拉取最高和最低相似度位置的 Sentinel-2 影像,看看模型认为什么是相似的、什么是不同的。

最相似的斑块(0.89 及以上)都是带有灌溉农田的农业地块。最不相似的(约等于零)是周围裸露地面的机场、有干旱地形的水库和干旱牧场。无需训练数据、无需标签,只是在 embedding 空间做一个点积。
相似性搜索告诉你"哪里与此类似?",但有时你需要对一个区域的离散标签。由于表征已经非常丰富,一个简单的线性分类器就能从极少的标注像素生成覆盖整个区域的土地覆盖图。
为测试这一点,我们在越南金瓯省(Ca Mau)——一个沿海红树林区域——仅标注了 60 个像素(每类 20 个)。以 ESA WorldCover 2021 作为三类(红树林、水体、其他)的标签源,随机采样每类 20 个像素,训练一个带逐特征标准化的逻辑回归,然后对该区域每个像素进行预测。

从 60 个标注像素,分类器生成了加权 F1 = 0.84 的连贯地图。整个区域都勾勒出了红树林群落、潮汐水道和开阔水体。分类器很快就会饱和:从 30 个标签增加到 300 个标签,准确率几乎不变,因为 embedding 承担了大部分工作。
分析的核心只有几行 Python 代码:
import rasterio
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
# Load the 192-band embedding COG exported from Studio
with rasterio.open("embeddings.tif") as ds:
emb = ds.read().astype(np.float32) # (192, H, W)
C, H, W = emb.shape
X = emb.reshape(C, -1).T # (H*W, 192)
# Train on labeled pixels, predict everywhere
clf = make_pipeline(StandardScaler(), LogisticRegression(max_iter=2000))
clf.fit(X[train_idx], labels[train_idx])
prediction = clf.predict(X).reshape(H, W)
这是一个线性探测(linear probe),是评估基座模型的标准方法。一个仅用 192 维的逻辑回归能从如此少的标签中恢复土地覆盖边界,这意味着 Tiny 编码器在预训练期间已经组织好了这些生态区分。更大的变体(Base,768 维)编码了更丰富的表征。
如果你有地面真实多边形、实地调查点或粗糙的现有地图,你可以训练一个类似的分类器,为自己的感兴趣区域生成覆盖全区域的地图。
由于 Studio 可以以任意时间分辨率(月度到年度)生成 embedding,你可以直接比较两个时间段来识别地表条件发生变化的位置。下面,我们为同一区域计算了 2023 年 9 月和 2024 年 9 月的月度 Sentinel-2 embedding,并测量了每个像素的余弦距离。加利福尼亚州比尤特县 2024 年 7-9 月的帕克大火(Park Fire)烧毁疤痕立刻显现出来。

无需标签或训练——只需两个 embedding COG 和几行 Python 代码。
有时候你没有查询位置或参考标签,只是想了解 embedding 中存在什么结构。主成分分析(PCA)是做这件事的一个简洁方式:降维到三维,映射到 R/G/B,作为伪彩色图像显示。相似的 embedding 自动获得相似的颜色。

荷兰的弗莱福兰是一片围海造陆的圩田景观,有着规则排列的农业地块网格。PCA 伪彩色图像高保真地重现了这些边界。不同作物类型、水体和城市区域各自获得不同的色调。Embedding 无需被告知什么是地块或作物,就已经将景观结构内化了。
这种无监督视角是快速查看模型在你感兴趣的区域捕捉到了什么结构的好方法。
相似性搜索、小样本分割、变化检测和 PCA 探索都是对标准栅格数据的简单操作,耗时仅需数秒。力量来自于 embedding:学习到的表征,将地球观测数据压缩成向量,从多个传感器和数百万训练样本中捕捉每个位置的丰富信息。
自定义 embedding 导出现已可用。创建一个项目,配置一个 embedding 模型,计算你的 embedding。导出的 GeoTIFF 可与任何地理空间工具配合使用:QGIS、GDAL、rasterio 或你自己的脚本。重现本文示例的端到端代码参见 embeddings 教程,其中包含相似性搜索、小样本分割、变化检测和 PCA 可视化的工作代码。如需无需本地设置即可动手尝试,请试用 Colab notebook。
本文所有示例都使用冻结的 embedding,没有任务特定的训练。Embedding 是切入 OlmoEarth 的绝佳入口:它们能快速、低成本地生成结果,在资源受限的环境中表现出色,且易于分享。对于需要更高性能的应用,OlmoEarth Studio 还支持 SFT,在你自己的标签上训练一个任务特定的模型头,通常优于冻结特征的线性探测。
虽然我们始终在努力改进预训练方法,但用上述一些技术检查 embedding 对你使用场景的质量是很重要的。性能还取决于输入影像的质量——合成期间持续的云层、大气伪影或缺失观测都会影响生成的向量。
Sentinel-2 L2A 影像来自欧洲航天局,通过 Microsoft Planetary Computer 访问。ESA WorldCover 2021 v200 用于红树林参考。全球聚类可视化使用 OlmoEarth-v1-Base(768 维),季节性 Sentinel-2 合成影像,patch size 8,1.1M 预训练样本上的实例级 embedding。