Text-to-Image
Diffusers
Safetensors
English
remote-sensing
earth-observation
satellite-imagery
flow-matching
diffusion-transformer
geospatial
Instructions to use BiliSakura/GeoCore-9B-diffusers with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use BiliSakura/GeoCore-9B-diffusers with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("BiliSakura/GeoCore-9B-diffusers", dtype=torch.bfloat16, device_map="cuda") prompt = "A parking lot full of cars is located next to some trees." image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
File size: 4,011 Bytes
89d4944 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | ---
license: apache-2.0
library_name: diffusers
pipeline_tag: text-to-image
tags:
- diffusers
- remote-sensing
- earth-observation
- satellite-imagery
- text-to-image
- flow-matching
- diffusion-transformer
- geospatial
datasets:
- lcybuaa/Git-10M
inference: true
language:
- en
widget:
- text: A parking lot full of cars is located next to some trees.
output:
url: demo/parking.png
- text: Many buildings are located in a commercial area.
output:
url: demo/commercial.png
- text: A roundabout is surrounded by grass.
output:
url: demo/roundabout.png
- text: Two tennis courts are semi-surrounded by several green trees.
output:
url: demo/tennis.png
---
# BiliSakura/GeoCore-9B-diffusers
Self-contained [Diffusers](https://github.com/huggingface/diffusers) checkpoint for **GeoCore-9B**: 256×256 optical satellite generation from text, with optional GSD, latitude, and longitude.
Converted from [`JeonghyeokDo/GeoCore-9B`](https://huggingface.co/JeonghyeokDo/GeoCore-9B). `DiffusionPipeline.from_pretrained` loads the DiT, Flux.2 VAE, CLIP-L, T5-XXL, and `FlowMatchEulerDiscreteScheduler` from this repo (`trust_remote_code=True`).
[Project](https://kaist-viclab.github.io/GeoCore-9B_site/) ·
[Code](https://github.com/KAIST-VICLab/GeoCore-9B) ·
[Original weights](https://huggingface.co/JeonghyeokDo/GeoCore-9B)
<Gallery />
## Demo
256×256, 50 Euler steps, `guidance_scale=4.0`, seed `42`, `lon=126.97`, `lat=37.56`, `res=0.0` (Seoul).
| Parking lot | Commercial | Roundabout | Tennis courts |
| --- | --- | --- | --- |
|  |  |  |  |
## Model details
| Field | Value |
| --- | --- |
| Pipeline | `GeoCorePipeline` (`pipeline.py`) |
| Transformer | Flow-matching DiT, 8 double-stream + 24 single-stream blocks, hidden 4096, 32 heads, **9.24B** |
| Text encoders | CLIP ViT-L/14 + T5-XXL (bundled) |
| VAE | Flux.2 `AutoencoderKLFlux2` (Apache-2.0, bundled) |
| Scheduler | `FlowMatchEulerDiscreteScheduler`, `shift=1.0` |
| Resolution | 256×256 |
| Training data | [Git-10M](https://huggingface.co/datasets/lcybuaa/Git-10M) |
| License | Apache-2.0 |
## Load from Hugging Face
```python
import torch
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained(
"BiliSakura/GeoCore-9B-diffusers",
trust_remote_code=True,
torch_dtype=torch.bfloat16,
).to("cuda")
image = pipe(
prompt="A parking lot full of cars is located next to some trees.",
lon=126.97,
lat=37.56,
res=0.0,
height=256,
width=256,
num_inference_steps=50,
guidance_scale=4.0,
generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]
image.save("demo.png")
```
The DiT is ~18.5 GB in bf16. A 24 GB GPU is tight; on two GPUs, split only the transformer with Accelerate and keep CLIP, T5, and the VAE on one device.
## Conditioning
Captions follow the Git-10M style (short scene descriptions). Geospatial fields are optional.
| Argument | Meaning |
| --- | --- |
| `prompt` | Natural-language description |
| `res` | Resolution index `17 - z` for Google XYZ zoom `z`. `0` ≈ 1.2 m/px at the equator; each `+1` doubles GSD |
| `lon`, `lat` | Degrees |
| `-999.0` | Learned null embedding — any of `res` / `lon` / `lat` may be omitted |
## License
DiT weights © 2026 Jeonghyeok Do and Munchurl Kim, Apache-2.0. VAE is an unmodified Apache-2.0 Flux.2 autoencoder from [`black-forest-labs/FLUX.2-klein-base-4B`](https://huggingface.co/black-forest-labs/FLUX.2-klein-base-4B); see [`LICENSE-FLUX2-VAE.md`](LICENSE-FLUX2-VAE.md). [Git-10M](https://huggingface.co/datasets/lcybuaa/Git-10M) is CC BY-NC-ND 4.0 (non-commercial retraining).
## Citation
```bibtex
@article{do2026geocore,
title = {GeoCore-9B: Towards Geo-Aware Generative Foundation Models in Earth Observation},
author = {Do, Jeonghyeok and Kim, Munchurl},
year = {2026}
}
```
|