OlmoEarth: exporta embeddings personalizados para EO | Keryc
OlmoEarth Studio ahora te permite calcular y exportar embeddings personalizados para observación de la Tierra. ¿Qué significa eso en la práctica? Significa vectores compactos que capturan características del paisaje a partir de imágenes satelitales, listos para búsquedas por similitud, segmentación con pocas etiquetas, detección de cambios y exploración no supervisada.
Qué son los embeddings y por qué te sirven
Un embedding es simplemente un vector numérico que representa la información local de una píxel o parche: tipos de superficie, textura, señales espectrales y más. OlmoEarth produce estos vectores con modelos foundation abiertos y publica tanto el código como los pesos, así que puedes inspeccionar exactamente cómo se generan.
¿Por qué usar embeddings en vez de un modelo entrenado para cada tarea? Porque son rápidos, baratos y muy versátiles. Generas una sola vez la representación y luego aplicas métodos simples —producto punto, regresión lineal, PCA— para tareas distintas sin volver a entrenar toda la red.
Cómo calcular embeddings en OlmoEarth Studio
El flujo en Studio es el mismo que para cualquier inferencia: configuras un modelo, lo ejecutas y descargas el resultado. Estos son los parámetros clave que puedes controlar:
Area of interest: dibuja o sube cualquier polígono; Studio gestiona la adquisición y teselado de imágenes.
Time span: de 1 a 12 periodos mensuales, así puedes capturar variación estacional.
Spatial resolution: 10 m, 20 m, 40 m o 80 m por píxel.
Imagery sources: Sentinel-2 L2A, Sentinel-1 RTC o ambos.
Studio entrega un GeoTIFF optimizado para la nube (COG) con una banda por dimensión del embedding. Los vectores se almacenan como enteros con signo de 8 bits (int8) en el rango -127 a +127, y -128 reservado para nodata. Para recuperar vectores en punto flotante usa la función dequantize_embeddings en el repo olmoearth_pretrain.
Un punto importante: los embeddings se calculan bajo demanda, no sacados de un archivo global precomputado. Eso quiere decir que reflejan exactamente el periodo temporal y la condición que has solicitado, por ejemplo mensuales para detectar estacionalidad.
Ejemplos prácticos y líneas de código
Los ejemplos usan OlmoEarth-v1-Tiny (192 dim) a 40 m con composites Sentinel-2 L2A, salvo que se indique lo contrario. Tiny es ligero y sorprendentemente potente; si necesitas más fidelidad puedes probar Base a costa de más cómputo y almacenamiento.
Búsqueda por similitud
Seleccionas un píxel consulta, extraes su embedding y calculas similaridad coseno contra todos los demás píxeles. El resultado es un mapa que muestra dónde el paisaje es más parecido al de la consulta. Es útil para encontrar patrones repetidos como parcelas irrigadas, franjas urbanas o humedales semejantes.
Segmentación few-shot
Con muy pocas etiquetas puedes entrenar un clasificador lineal sobre embeddings y producir mapas wall-to-wall. En un experimento con 60 píxeles etiquetados en una zona de manglares se alcanzó weighted F1=0.84 con una regresión logística.
Ejemplo mínimo en Python para entrenar y predecir sobre un COG de embeddings:
import rasterio
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
# Cargar COG exportado desde Studio
with rasterio.open('embeddings.tif') as ds:
emb = ds.read().astype(np.float32) # (C, H, W)
C, H, W = emb.shape
X = emb.reshape(C, -1).T # (H*W, C)
# train_idx y labels son índices y etiquetas de píxeles muestreados
clf = make_pipeline(StandardScaler(), LogisticRegression(max_iter=2000))
clf.fit(X[train_idx], labels[train_idx])
prediction = clf.predict(X).reshape(H, W)
Ese flujo es un linear probe. Si un clasificador lineal ya separa bien las clases, significa que las representaciones aprendidas contienen la estructura necesaria.
Detección de cambios
Genera embeddings para dos periodos (por ejemplo septiembre 2023 y septiembre 2024) y mide distancia coseno por píxel. Cambios fuertes como cicatrices de incendios o inundaciones aparecen con alta distancia sin necesidad de etiquetas.
Exploración no supervisada
Aplica PCA para reducir dimensiones a tres y mapea a R/G/B. Es una forma rápida de visualizar qué estructura ha aprendido el modelo: cultivos, agua y zonas urbanas tienden a colorearse distinto.
De la exportación al análisis reproducible
Los COGs exportados funcionan con QGIS, GDAL, rasterio o tus scripts. OlmoEarth publica código y pesos, y en el post original hay tutoriales y un notebook Colab para ejecutar los ejemplos sin setup local.
Si necesitas más performance para una tarea concreta, Studio también soporta supervised fine-tuning (SFT): entrenas una cabeza de tarea sobre tus etiquetas y normalmente superas al probe lineal sobre features congeladas.
Limitaciones y recomendaciones prácticas
Calidad de entrada importa: nubes persistentes, artefactos atmosféricos o faltantes en el composite afectan los embeddings.
Valida con un pequeño conjunto de referencia: 30 a 100 etiquetas te dará una idea rápida de calidad.
Ten en cuenta la cuantización int8: usa dequantize_embeddings para recuperar flotantes cuando necesites precisión numérica.
Para series temporales, genera embeddings mensuales en vez de un resumen anual si buscas detectar fenómenos estacionales o eventos abruptos.
Cómo acceder
Los embeddings personalizados ya están disponibles en OlmoEarth Studio. Si necesitas acceso a la funcionalidad de exportación ponte en contacto con el equipo de Studio. El código y los pesos del modelo son públicos, y el post original incluye instrucciones para calcular embeddings por tu cuenta usando los modelos abiertos.
Piensa en esto como una caja de herramientas: los embeddings te dan una representación densa y compartible del territorio, y con unas pocas operaciones clásicas —similaridad, regresión lineal, PCA— puedes resolver muchas tareas prácticas sin tener que entrenar un modelo desde cero.