TerraDiT-diffusers

Self-contained Diffusers checkpoints for TerraDiT-α, TerraDiT-Σ, and TerraDiT-Ω (ECCV 2026): satellite image synthesis at 256×256 from text, geolocation, point prompts, and arbitrary geospatial primitives.

Converted from MVRL/TerraDiT with scripts/convert_to_diffusers.py. Each subfolder is a SiT-diffusers-style repo (pipeline.py + family transformer + optional geolocation_encoder/) and loads without installing the training code.

Code · Collection · Data · TerraDiT-Ω paper · TerraDiT paper

Subfolder Model Conditioning Backbone Params
TerraDiT-Alpha-XL TerraDiT-α text SiT-XL/2 828M
TerraDiT-Sigma-XL TerraDiT-Σ text + geolocation + point prompts SiT-XL/2 1.10B
TerraDiT-Omega-XL TerraDiT-Ω text + geolocation + polygons / polylines / boxes / points SiT-XL/2 1.18B
TerraDiT-Omega-B TerraDiT-Ω base same as Ω SiT-B/2 299M

Shared components in every variant: SDXL VAE (scaling_factor=0.13025), LongCLIP text encoder (zer0int/LongCLIP-KO-LITE-TypoAttack-Attn-ViT-L-14, 144 tokens), FlowMatchEulerDiscreteScheduler (100 Euler steps, no CFG). Σ / Ω also ship RANGE+ under geolocation_encoder/ (SatCLIP location encoder + range_db.npz).

Demo

256×256, 100 Euler steps, guidance_scale=0.0, seed 42. α is text-only; Σ adds St. Louis lat/lon plus point prompts; Ω / Ω-B add Paris lat/lon plus mixed geospatial primitives.

α XL Σ XL Ω XL Ω B
Alpha Sigma Omega XL Omega B

Load a local subfolder

import torch
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(
    "./TerraDiT-Alpha-XL",
    trust_remote_code=True,
).to("cuda")

image = pipe(
    prompt="The satellite image shows a coastal town with a marina and red-roofed houses.",
    height=256,
    width=256,
    num_inference_steps=100,
    guidance_scale=0.0,
    generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]
image.save("terradit_alpha.png")

TerraDiT-Σ — text + lat/lon + point prompts

import torch
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(
    "./TerraDiT-Sigma-XL",
    trust_remote_code=True,
).to("cuda")
image = pipe(
    prompt="The satellite image shows a suburban neighborhood with a school and a pond.",
    lat=38.65,
    lon=-90.31,
    points=[
        [40, 40, "building house"],
        [90, 170, "amenity school"],
        [205, 215, "natural water"],
    ],
    height=256,
    width=256,
    num_inference_steps=100,
    generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]

Coordinates are tile pixels in [0, 256), x right and y down. Tags follow the OSM "<key> <value>" convention.

TerraDiT-Ω — any geospatial primitive

import torch
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(
    "./TerraDiT-Omega-XL",  # or ./TerraDiT-Omega-B
    trust_remote_code=True,
).to("cuda")
image = pipe(
    prompt="A small town crossed by a river and a road bridge.",
    lat=48.86,
    lon=2.35,
    instances=[
        {"type": "polygon",  "coords": [[20, 20], [110, 15], [120, 90], [30, 100]], "tag": "leisure park"},
        {"type": "polyline", "coords": [[0, 30], [60, 110], [140, 170], [255, 235]], "tag": "waterway river"},
        {"type": "bbox",     "coords": [[20, 170], [70, 215]], "tag": "building house"},
        {"type": "point",    "coords": [200, 200], "tag": "amenity parking"},
    ],
    condition_type="omega",
    height=256,
    width=256,
    num_inference_steps=100,
    generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]

Sources

Component Source
Transformers MVRL/TerraDiT (alpha_xl, sigma_xl, omega_xl, omega_base)
VAE stabilityai/sdxl-vae
Text encoder / tokenizer zer0int/LongCLIP-KO-LITE-TypoAttack-Attn-ViT-L-14
Location encoder MVRL/satclip-loc-enc-vit16-l40
RANGE+ database mvrl/RANGE-database (range_db_large.npz)

License

Weights: CC-BY-NC-4.0 (non-commercial research), because the training imagery (Git-10M) is CC-BY-NC-ND-4.0. Code: Apache 2.0. Conditioning data derives from OpenStreetMap (ODbL, © OpenStreetMap contributors). SDXL VAE and LongCLIP are MIT.

@inproceedings{wei2026terraditomega,
  title     = {TerraDiT-{\Omega}: Unified Spatial Control for Satellite Image Synthesis with Any Geospatial Primitive},
  author    = {Wei, Brian and Sastry, Srikumar and Cher, Daniel and Xing, Eric and Jacobs, Nathan},
  booktitle = {European Conference on Computer Vision},
  year      = {2026}
}
@article{sastry2026terradit,
  title   = {TerraDiT: Point-Conditioned Diffusion Transformer for Satellite Image Synthesis},
  author  = {Sastry, Srikumar and Cher, Daniel and Wei, Brian and Dhakal, Aayush and Khanal, Subash and Gupta, Dev and Jacobs, Nathan},
  journal = {arXiv:2603.02172},
  year    = {2026}
}
Downloads last month
-
Inference Examples
Examples
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train BiliSakura/TerraDiT-diffusers

Papers for BiliSakura/TerraDiT-diffusers