What if you could compare any pixel on the planet with millions of locations without training a model from scratch? OlmoEarth Studio has just added embedding export: compact numerical representations that turn satellite images into vectors ready for geospatial analysis.
The tool is designed for both researchers and teams that need to detect changes, classify land cover, or explore environmental patterns with less labeled data and lower computational cost.
What OlmoEarth embeddings are
An embedding transforms information about a location into a vector of numbers. In OlmoEarth’s case, that vector summarizes features observed in Earth data, such as vegetation, water, urban areas, crops, or bare soil.
The idea is simple: places with similar characteristics end up close to each other within the mathematical space of the embeddings. Different places end up farther apart. This means a similarity search can answer questions like: where does a landscape similar to this one exist?
OlmoEarth Studio generates these vectors from foundation models for Earth observation. Both the source code and model weights are publicly available, making it possible to inspect how the representations are produced.
Configure the analysis from Studio
The workflow is similar to any other prediction on the platform. First, you configure the model and area of interest, then run the analysis and finally download the results.
You can choose:
- Area of interest: a polygon drawn or uploaded by the user.
- Time period: between one and 12 monthly periods.
- Encoder variant: Nano, Tiny, or Base.
- Spatial resolution: 10, 20, 40, or 80 meters per pixel.
- Image sources: Sentinel-2 L2A, Sentinel-1 RTC, or both.
The available variants offer different trade-offs between capacity, storage, and speed:
- Nano: 128-dimensional vectors and 1.4 million parameters.
- Tiny: 192-dimensional vectors and 6.2 million parameters.
- Base: 768-dimensional vectors and 89 million parameters.
The result is a Cloud-Optimized GeoTIFF file, known as a COG. Each band represents one dimension of the embedding, and the file can be opened with tools such as QGIS, GDAL, or rasterio.
Values are stored as signed 8-bit integers, between -127 and 127. The value -128 is reserved for missing data. If you need to recover the vectors in floating-point format, you can use the dequantize_embeddings function from the olmoearth_pretrain package.
Four practical uses for embeddings
1. Find visually similar places
You can select a reference pixel and calculate cosine similarity against every other pixel in the region. The result is a heat map showing where the landscape looks more or less similar to the selected point.
In a test near Merced, California, urban areas and road corridors appeared grouped together, while agricultural plots stood apart. The model identified these differences without using specific labels for each type of terrain.
You can also select an entire agricultural window and calculate the average vector of its pixels. In the example presented by the Allen Institute for AI, the most similar locations corresponded to irrigated plots, with cosine similarity values of 0.89 or higher. The least similar sites included an airport, a reservoir, and arid areas.
There was no need to train a classifier. Just compare vectors.
2. Create maps with few labels
Embeddings can also serve as the foundation for a simple supervised classification. Because the representations already contain useful information about the terrain, a linear model can learn to separate classes using only a few examples.
To test this, the team labeled 60 pixels in Ca Mau, Vietnam: 20 for mangroves, 20 for water, and 20 for other land covers. It then trained a logistic regression with feature standardization and predicted the class of every pixel in the region.
The result reached a weighted F1 score of 0.84. The map distinguished mangroves, tidal channels, and bodies of water using a very small number of labels.
The core code can be summarized like this:
import rasterio
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
with rasterio.open("embeddings.tif") as ds:
emb = ds.read().astype(np.float32)
C, H, W = emb.shape
X = emb.reshape(C, -1).T
clf = make_pipeline(
StandardScaler(),
LogisticRegression(max_iter=2000)
)
clf.fit(X[train_idx], labels[train_idx])
prediction = clf.predict(X).reshape(H, W)
This approach is known as a linear probe: the model’s representations remain frozen, and only a simple classifier is trained on top of them. If you have field points, reference polygons, or an existing map, you can apply the same strategy to your own region.
3. Detect changes between dates
Because Studio can generate monthly or yearly embeddings, you can compare two periods and calculate the distance between their vectors. This helps locate changes on the surface without needing labels or additional training.
In one demonstration, the team compared embeddings from September 2023 and September 2024 in California. The scar left by the Park Fire, which occurred between July and September 2024, stood out clearly when measuring cosine distance pixel by pixel.
This method can be useful for monitoring fires, deforestation, urban expansion, floods, or agricultural transformations. The key is to keep the image sources and generation parameters comparable.
4. Explore patterns without labels
When you do not have a query point or labeled data, you can use unsupervised analysis. One option is to apply PCA, or principal component analysis, to reduce hundreds of dimensions to three and assign them to the red, green, and blue channels.
The result is a false-color image in which locations with similar embeddings acquire similar colors. In Flevoland, the Netherlands, this visualization clearly reproduced the regular boundaries of agricultural plots and separated crops, bodies of water, and urban areas.
This does not mean the model understands these concepts the way a person would. It means that its representation space preserves consistent patterns that can reveal geographic structures without explicit instructions.
Frozen embeddings or supervised fine-tuning
The examples in the post use frozen embeddings, without task-specific training. This is a quick and affordable way to get started, especially when you have limited resources or need to share the results as standard geospatial files.
If an application requires greater accuracy, OlmoEarth Studio also offers supervised fine-tuning. In this case, the model can train a task-specific head using your own labels. This approach usually outperforms a linear probe over frozen features, although it requires more data, time, and computing capacity.
Embeddings do not eliminate the need to validate results. The quality of the input images, persistent cloud cover, atmospheric artifacts, and missing observations can directly affect the generated vectors.
A practical entry point to geospatial AI
The main advantage of this feature is that it shortens the distance between a foundation model and a concrete analysis. Instead of training a complete architecture for every use case, you can export a COG, connect it to your usual tools, and start searching for similarities, classifying pixels, or comparing dates.
OlmoEarth Studio provides customized access to these embeddings, while instructions for calculating them with the public models are available in its documentation. There is also a code tutorial for reproducing the examples and a Colab notebook for experimenting without setting up a local environment.
AI for Earth observation does not have to begin with a massive project. Sometimes all you need is an area of interest, two dates, and a well-formed question: which places look similar?, what changed?, which land cover dominates here? With embeddings, those questions can become reproducible and relatively lightweight analyses.
