Skip to content
ModelListedExternal
Browse files

GeoSynth ControlNets Location

> [!WARNING] we do not have a full checkpoint conversion validation, if you encounter pipeline loading failure and unsidered output, please contact me via [email protected]

KindOtherVersionRevision c161111Bgrade

Model source

Kind
Other
File size
1.70 MB–3.23 GB
Version
vRevision c161111
Updated
Oct 7, 2026
Downloads
5
Source
Hugging Face

Source description

[!WARNING] we do not have a full checkpoint conversion validation, if you encounter pipeline loading failure and unsidered output, please contact me via [email protected]

GeoSynth-ControlNets-Location

Repository for location-conditioned GeoSynth ControlNets.

Location (lon/lat) conditioning is the primary workflow for geo-aware synthesis. Default: St. Louis, MO (lon=-90.2, lat=38.6). Use SatCLIP + CoordNet for full diffusers-style location conditioning.

We maintain two repositories—one per base checkpoint—each with its compatible ControlNets:

RepoBase ModelControlNets
GeoSynth-ControlNetsGeoSynth (text encoder & UNet same as SD 2.1)GeoSynth-OSM, GeoSynth-Canny, GeoSynth-SAM
This repoGeoSynth-Location (adds CoordNet branch)GeoSynth-Location-OSM, GeoSynth-Location-SAM*, GeoSynth-Location-Canny

GeoSynth-Location-SAM controlnet ckpt is missing from source.

This repository

  1. GeoSynth-Location base — Converted from geosynth_sd_loc-v3.ckpt to diffusers format. Text encoder and UNet are the same as SD 2.1 (not fine-tuned). The original checkpoint also includes a CoordNet branch for [lon, lat] conditioning (see Architecture).
  2. ControlNet models — GeoSynth-Location-OSM, GeoSynth-Location-Canny (converted from SD-style checkpoints under MVRL/GeoSynth-Location-OSM and MVRL/GeoSynth-Location-Canny), and GeoSynth-Location-SAM, located under controlnet/.

Architecture

The full location pipeline adds a CoordNet branch to the base LDM:

  • Input: [lon, lat] → SatCLIP location encoder → CoordNet (13 stacked cross-attention blocks, inner dim 256, 4 heads) → conditioning injected into UNet
  • ControlNet and CoordNet jointly condition the UNet (see GeoSynth paper Figure 3)

ControlNet variants (this repo)

ControlSubfolderStatus
OSMcontrolnet/GeoSynth-Location-OSM✅ ready
Cannycontrolnet/GeoSynth-Location-Canny✅ ready
SAMcontrolnet/GeoSynth-Location-SAM⏳ ckpt pending

Model Sources

Usage

CLI:

python inference_demo.py --control demo_images/GeoSynth-Location-OSM/input.jpeg --control_type OSM --lon -90.2 --lat 38.6

Python:

import sys, os
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

import torch
from PIL import Image
from geosynth_pipeline import load_geosynth_pipeline_with_location, run_with_location

pipe = load_geosynth_pipeline_with_location(".", controlnet_subfolder="controlnet/GeoSynth-Location-OSM", local_files_only=True)
pipe = pipe.to("cuda")

img = Image.open("demo_images/GeoSynth-Location-OSM/input.jpeg").convert("RGB").resize((512, 512))
output = run_with_location(pipe, "Satellite image features a city neighborhood", image=img, lon=-90.2, lat=38.6)
output.images[0].save("generated_city.jpg")

Citation

If you use this model, please cite the GeoSynth paper. For location-conditioned variants, also cite SatCLIP.

@inproceedings{sastry2024geosynth,
  title={GeoSynth: Contextually-Aware High-Resolution Satellite Image Synthesis},
  author={Sastry, Srikumar and Khanal, Subash and Dhakal, Aayush and Jacobs, Nathan},
  booktitle={IEEE/ISPRS Workshop: Large Scale Computer Vision for Remote Sensing (EARTHVISION)},
  year={2024}
}

@article{klemmer2025satclip,
  title={{SatCLIP}: {Global}, General-Purpose Location Embeddings with Satellite Imagery},
  author={Klemmer, Konstantin and Rolf, Esther and Robinson, Caleb and Mackey, Lester and Ru{\ss}wurm, Marc},
  journal={Proceedings of the AAAI Conference on Artificial Intelligence},
  volume={39},
  number={4},
  pages={4347--4355},
  year={2025},
  doi={10.1609/aaai.v39i4.32457}
}

Sources

1 source
Hugging FacePrimaryVersion c161111771b82618a89a0bcf5544427f7d2e0ffc
huggingface.co/BiliSakura/GeoSynth-ControlNets-Location/tree/c161111771b82618a89a0bcf5544427f7d2e0ffc

Verified Oct 7

Download files

Model artifacts

7 artifacts

controlnet/GeoSynth-Location-Canny/diffusion_pytorch_model.safetensors

safetensors · 1.36 GB · SHA-256 22f7bab41c6a…0508 · Hugging Face

Download file

controlnet/GeoSynth-Location-OSM/diffusion_pytorch_model.safetensors

safetensors · 1.36 GB · SHA-256 5119803f858a…80f4 · Hugging Face

Download file

coordnet/diffusion_pytorch_model.safetensors

safetensors · 62.7 MB · SHA-256 757124ffa275…3576 · Hugging Face

Download file

satclip_location_encoder/diffusion_pytorch_model.safetensors

safetensors · 1.70 MB · SHA-256 4a04fc24fd0e…bcb5 · Hugging Face

Download file

text_encoder/model.safetensors

safetensors · 1.27 GB · SHA-256 67e013543d4f…9d15 · Hugging Face

Download file

unet/diffusion_pytorch_model.safetensors

safetensors · 3.23 GB · SHA-256 f349f136057c…db64 · Hugging Face

Download file

vae/diffusion_pytorch_model.safetensors

safetensors · 319 MB · SHA-256 2aa1f43011b5…83ec · Hugging Face

Download file

Source excerpts

3 excerpts

--- license: apache-2.0 library_name: diffusers pipeline_tag: image-to-image tags: - controlnet - remote-sensing - arxiv:2404.06637 widget: # GeoSynth-Location-OSM: OSM tile -> satellite image (default lon=-90.2, lat=38.6) - src: demo_images/GeoSynth-Location-OSM/input.jpeg prompt: Satellite image features a city neighborhood output: url: demo_images/GeoSynth-Location-OSM/output.jpeg # GeoSynth-Location-Canny: Canny edges -> satellite image (default lon=-90.2, lat=38.6) - src: demo_images/GeoSynth-Location-Canny/input.jpeg prompt: Satellite image features a city neighborhood output: url: demo_images/GeoSynth-Location-Canny/output.jpeg --- > [!WARNING] we do not have a full checkpoint conversion validation, if you encounter pipeline loading failure and unsidered output, please contact me via [email protected] # GeoSynth-ControlNets-Location Repository for location-conditioned GeoSynth ControlNets. **Location (lon/lat) conditioning** is the primary workflow for geo-aware synthesis. Default: St. Louis, MO (`lon=-90.2`, `lat=38.6`). Use SatCLIP + CoordNet for full diffusers-style location conditioning. We maintain **two repositories**—one per base checkpoint—each with its compatible ControlNets: | Repo | Base Model | ControlNets | |------|------------|-------------| | **[GeoSynth-ControlNets](https://huggingface.co/BiliSakura/GeoSynth-ControlNets)** | GeoSynth (text encoder & UNet same as SD 2.1) | GeoSynth-OSM, GeoSynth-Canny, GeoSynth-SAM | | **This repo** | GeoSynth-Location (adds CoordNet branch) | GeoSynth-Location-OSM, GeoSynth-Location-SAM*, GeoSynth-Location-Canny | *[GeoSynth-Location-SAM](https://huggingface.co/MVRL/GeoSynth-Location-SAM) controlnet ckpt is missing from source.* ### This repository 1. **GeoSynth-Location base** — Converted from `geosynth_sd_loc-v3.ckpt` to diffusers format. Text encoder and UNet are the same as SD 2.1 (not fine-tuned). The original checkpoint also includes a CoordNet branch for `[lon, lat]` conditioning (see Architecture). 2. **ControlNet models** — GeoSynth-Location-OSM, GeoSynth-Location-Canny (converted from SD-style checkpoints under `MVRL/GeoSynth-Location-OSM` and `MVRL/GeoSynth-Location-Canny`), and GeoSynth-Location-SAM, located under [`controlnet/`](controlnet/). ### Architecture The full location pipeline adds a **CoordNet** branch to the base LDM: - **Input**: `[lon, lat]` → **SatCL...

Source context: 5 downloads · 1 likes · Pipeline image-to-image · Library diffusers · Repo BiliSakura/GeoSynth-ControlNets-Location

Source context: 3 downloads · 1 likes · Pipeline image-to-image · Library diffusers · Repo BiliSakura/GeoSynth-ControlNets-Location