SphereLatent: Efficient Image Synthesis with Sphere Latent Encoder
Weights for Efficient Image Synthesis with Sphere Latent Encoder (arXiv:2605.15592), by Tung Do, Thuan Hoang Nguyen and Hao Li.
A frozen representation autoencoder (RAE: DINOv2-B encoder with registers + ViT-XL decoder) maps 256x256 images to 16x16x768 latents. A SiT-XL/1 denoiser trained on spherified, noised latents generates ImageNet-1K 256x256 images in a few steps, entirely in latent space. The decoder runs once, at the end. The paper's two small-dataset models, SiT-B/1 for Animal-Faces and Oxford-Flowers (Table 1), are here too (below).
| Model | Steps | NFE | FID (paper, Table 2) | FID (code release, measured) |
|---|---|---|---|---|
| SiT-XL/1 on RAE (DINOv2-B) latents, 675M | 4 | 4x2 | 2.25 | not measured |
| SiT-XL/1 on RAE (DINOv2-B) latents, 675M | 6 | 6x2 | 2.11 | 2.096 |
The measured column was sampled and scored with the code release on one AMD MI210 (50,000
class-balanced samples, one GPU x 512, seed 0, raw final step, tensorflow-rocm ADM evaluator):
sFID 7.47, IS 293.2. Section 8 of the code repository's docs/DETAILS.md lists the settings and FDr6.
Files
The layout matches the code repository, so downloading into the repo root puts every file where its configs expect it.
| File | What it is | Source / license |
|---|---|---|
checkpoints/sphere_latent_sit_xl1_imagenet256.pt |
SiT-XL/1 denoiser, EMA weights, fp32 state dict (401 tensors, 675,160,896 params) | this work |
checkpoints/sphere_latent_sit_b1_afhq256.pt |
SiT-B/1 denoiser for Animal-Faces (AFHQ, 3 classes), EMA weights (177 tensors, 130,086,144 params) | this work |
checkpoints/sphere_latent_sit_b1_flowers256.pt |
SiT-B/1 denoiser for Oxford-Flowers (102 classes), EMA weights (177 tensors, 130,162,176 params) | this work |
models/dinov2-with-registers-base/ |
frozen DINOv2-B encoder with registers | facebook/dinov2-with-registers-base @ a1d738cc, Apache-2.0 |
models/decoders/dinov2/wReg_base/ViTXL_n08/model.pt |
frozen RAE ViT-XL decoder | nyu-visionx/RAE-collections @ 1be4f032, MIT |
models/stats/dinov2/wReg_base/imagenet1k/stat.pt |
RAE latent normalization statistics | nyu-visionx/RAE-collections @ 1be4f032, MIT |
The encoder, decoder and statistics are unmodified, byte-identical copies of the upstream files that were used to train and evaluate the model. They are redistributed under their original licenses.
SHA-256:
9e57d4609c322b3503f8487aaf1c2061b92e5db6969cc499a0483e7f8a20280a checkpoints/sphere_latent_sit_xl1_imagenet256.pt
b8c7de52157f749785fe3df3b65ea4fab7a160dfd48ed9914fc26e3246ce43da checkpoints/sphere_latent_sit_b1_afhq256.pt
5240c75d97b348a518e488edf81015a4f6476a3e8bce6cbb30aa280786f54f84 checkpoints/sphere_latent_sit_b1_flowers256.pt
7a6f7b3b9fa4b8732e707476a03cd6cdce210048582f21aafb7991c17d98e362 models/dinov2-with-registers-base/model.safetensors
5fedf7c9660476a709e122cef18385c917532914a23f034388e1c1a52bde2be6 models/decoders/dinov2/wReg_base/ViTXL_n08/model.pt
84ede66def5e6e3f25679334dc89cf63b12aacb99cbf0f5ae7ed4ad3187f7e59 models/stats/dinov2/wReg_base/imagenet1k/stat.pt
Animal-Faces and Oxford-Flowers models
The paper's two small-dataset models (Table 1). Both use the same frozen RAE as the ImageNet model (DINOv2-B encoder, ViT-XL decoder, ImageNet latent statistics) and a SiT-B/1 denoiser: depth 12, width 768, 12 heads, patch size 1, no timestep input. Each was trained from scratch for 2,000 epochs on one node of 8 MI210 GPUs, global batch 256, AdamW lr 1e-4 (10-epoch warmup), EMA 0.9995. The released weights are the EMA at the epoch listed.
| File | Dataset | Classes | Epoch | Sampling (paper setting) | FID 2 / 4 / 6 steps (paper, Table 1) | FID 2 / 4 / 6 steps (measured) |
|---|---|---|---|---|---|---|
checkpoints/sphere_latent_sit_b1_afhq256.pt |
Animal-Faces (AFHQ v1) | 3 | 400 | CFG 1.0 (none), sigma 24, gamma 0.75 | 10.63 / 6.89 / 6.18 | 10.74 / 6.91 / 6.18 |
checkpoints/sphere_latent_sit_b1_flowers256.pt |
Oxford-Flowers 102 | 102 | 2,000 | CFG 4.8, sigma 24, gamma 0.75 | 12.22 / 8.61 / 7.85 | 12.19 / 8.55 / 7.81 |
- Configs. The code repository holds the model configs
configs/afhq_sit_b1.yamlandconfigs/flowers_sit_b1.yaml(frozen RAE + SiT-B/1 and the training recipe) and the inference configsconfigs/sample_afhq.yamlandconfigs/sample_flowers.yaml(the paper sampling settings, 6 steps). - Samples. FID uses 50,001 class-balanced samples for AFHQ and 49,980 for Flowers, so that the count divides by the number of classes.
- FID references. The reference set is the full dataset at 256x256 with the ADM center crop: AFHQ v1
train+val (16,130 images) and all 8,189 Flowers images. The images are not redistributed here.
data/eval/afhq256_ref_stats.npzanddata/eval/flowers256_ref_stats.npzhold only their Inception statistics (mu,sigma,mu_s,sigma_s). These give IS, FID and sFID, but not Precision/Recall. - Measured. The released Flowers weights at the settings above: one GPU x 128, seed 0, compile, raw
final step, scored with the
tensorflow-rocmADM evaluator against the full 8,189-image reference (sFID 27.10 / 24.61 / 23.81, IS 3.80 / 3.80 / 3.89). The AFHQ weights have not been re-measured yet.
bash scripts/download_models.sh afhq flowers encoder decoder stats # weights + FID references + frozen RAE
bash scripts/sample_imagenet.sh configs/sample_flowers.yaml 0 # 49,980 samples, 6 steps, GPU 0
bash scripts/eval_fid.sh samples/flowers256_sit_b1_6steps.npz data/eval/flowers256_ref_stats.npz # spherelatent-eval env
Evaluation statistics
Reference statistics to evaluate 256x256 samples, under data/eval/ (where the code's evaluation
scripts look for them):
| File | Used for | Source / license |
|---|---|---|
data/eval/VIRTUAL_imagenet256_labeled.npz (2.0 GB) |
ImageNet: FID, sFID, IS, Precision/Recall with the ADM evaluator (scripts/eval_fid.sh) |
openai/guided-diffusion reference batch, MIT |
data/eval/afhq256_ref_stats.npz |
AFHQ: FID, sFID, IS with the ADM evaluator (scripts/eval_fid.sh); Inception statistics only, no images |
this work: AFHQ v1 train+val, 16,130 images |
data/eval/flowers256_ref_stats.npz |
Oxford-Flowers: FID, sFID, IS with the ADM evaluator (scripts/eval_fid.sh); Inception statistics only, no images |
this work: all 8,189 Oxford-Flowers images |
data/eval/fd_stats/guided_diffusion_stats.npz, jit_in256_stats.npz |
Inception FD (FID(ADM), FID(JiT)) in FDr6 | jjiaweiyang/FD-Loss paper_ref_stats.pkl, MIT |
data/eval/fd_stats/convnext_in256_t224_stats.npz |
ConvNeXtV2-B FD | FD-Loss, MIT |
data/eval/fd_stats/vit_large_patch14_dinov2_lvd142m_in256_t256_stats.npz |
DINOv2-L FD | FD-Loss, MIT |
data/eval/fd_stats/vit_large_patch16_224_mae_in256_t224_stats.npz |
MAE-L FD | FD-Loss, MIT |
data/eval/fd_stats/vit_large_patch14_clip_224_openai_in256_t256_stats.npz |
CLIP-L FD | FD-Loss, MIT |
data/eval/fd_stats/vit_so400m_patch16_siglip_256_v2_webli_in256_t224_stats.npz |
SigLIP FD (FD-Loss paper stats) | FD-Loss, MIT |
data/eval/fd_stats/vit_so400m_patch16_siglip_256_v2_webli_in256_t224_VAL50k_stats.npz |
SigLIP FD, alternative (see below) | this work: the 50k ImageNet validation images |
The FD files are the reference statistics of the FD-Loss evaluator
(Jiawei-Yang/FD-loss, eval_all_fds.py). FDr divides each
raw FD by a fixed validation-set FD (Inception 1.68, ConvNeXt 56.87, DINOv2 14.19, MAE 0.04, SigLIP
0.60, CLIP 5.60), and FDr6 is the mean over the six spaces. The code repository vendors that evaluator:
bash scripts/eval_fdr6.sh <samples.npz> reads these files from data/eval/fd_stats/ and reports
FDr6, FDr6 with the VAL50k file, and the five-space mean FDr5. With upstream FD-Loss, put the files
in its data/fid_stats/ (the VAL50k file under the name of the paper SigLIP file, if you want that
variant).
SigLIP caveat. With timm 1.0.15-1.0.26, our SigLIP features do not reproduce FD-Loss's SigLIP
statistics: real ImageNet validation images score an FD of about 352 against them, where FD-Loss
reports 0.60. The VAL50k file is our own SigLIP statistics of the 50k validation images (the same
model, 224 px and bf16 as FD-Loss). Against it, the SigLIP term ranks models differently from the other
five spaces, so treat SigLIP-based numbers with care. An FDr6 that uses the VAL50k file is not
comparable to the FD-Loss paper. The mean FDr over the other five spaces is.
SHA-256:
b32732719497e42660a9affb4a966068cba0855ac449b82015e34ec376d20758 data/eval/VIRTUAL_imagenet256_labeled.npz
ba6373dd55d3672aa1691efc2b8d12e2a34bed9e68dea11337b6f3f1169569f0 data/eval/afhq256_ref_stats.npz
6a111ffa692878bbf74947783f15c5dc8c0af108d823195d055afa997312164a data/eval/flowers256_ref_stats.npz
f70a7b30c86269ad6b43cd4ea147f2e293e4f4c96a8f881114f82392ff2921bb data/eval/fd_stats/guided_diffusion_stats.npz
925e8b5b4ced42137f9847f97a63250a2bd59b70f33f3f356e03453d0775f1ac data/eval/fd_stats/jit_in256_stats.npz
5b9be5c8425c785e2a4650496ab7a03d2795be0eb530f7d9afa6f9ab785ab386 data/eval/fd_stats/convnext_in256_t224_stats.npz
fca8c89fe1c82fae9717c1a6a5b0860b9cf8ac5d3ae5a9bd9513c4685a3291f3 data/eval/fd_stats/vit_large_patch14_dinov2_lvd142m_in256_t256_stats.npz
f9f2c09cf9fc2f13cbd31d6fa56dec41c8e98baa8d6f79171c9bec020fdb9f9a data/eval/fd_stats/vit_large_patch16_224_mae_in256_t224_stats.npz
e13f614d184492a1232382b6e819a81cbd25a1cb5ddd303716a552e2f64a2df0 data/eval/fd_stats/vit_large_patch14_clip_224_openai_in256_t256_stats.npz
a0d16403d3901e6575a25ca877d2fe9e98b69e4fb690fd2e82360eb2c1965584 data/eval/fd_stats/vit_so400m_patch16_siglip_256_v2_webli_in256_t224_stats.npz
61302294b4ecb8caad39beb4cf06e94d2cbfbfecaa087a86a8104811bb8c2228 data/eval/fd_stats/vit_so400m_patch16_siglip_256_v2_webli_in256_t224_VAL50k_stats.npz
Baseline samples
For side-by-side evaluation, samples/ holds 50,000 ImageNet 256x256 class-conditional samples per baseline
(arr_0, uint8 50000 x 256 x 256 x 3, the format the ADM and FDr6 evaluators read). They are not part of
the SphereLatent model. The MeanFlow and alpha-Flow batches were generated with the alpha-Flow codebase at
1 NFE; the GAE batch with the GAE codebase (LightningDiT-XL/1, 800 epochs, Euler 250 steps, CFG 3.3 with
guidance interval 0.30, shift 0.40).
| File | Model | SHA-256 |
|---|---|---|
samples/meanflow_xl2_1nfe.npz (9.8 GB) |
MeanFlow-XL/2, 1 NFE | 82bb9b490015ee3fb3f627cc02d6f7f0fad1f9eaed2aca4977bef793cf571218 |
samples/alphaflow_xl2plus_1nfe.npz (9.8 GB) |
alpha-Flow-XL/2+, 1 NFE | b2db6787b3e6a6c9e1960a96b58b2655858ec5b4596427ec9e12e9a9ffb95466 |
samples/gae_lightningdit_xl1_800ep_euler250_interval0.30_cfg3.30_shift0.40.npz (9.8 GB) |
GAE + LightningDiT-XL/1, 250 steps | 40ec8f039e8a9ae545a51b492d794a3f763408bd491881d6fae35e871c59ec23 |
hf download itsthanhtung/SphereLatent --include 'samples/*' --local-dir .
bash scripts/eval_fid.sh samples/meanflow_xl2_1nfe.npz # FID / sFID / IS (spherelatent-eval env)
bash scripts/eval_fdr6.sh samples/meanflow_xl2_1nfe.npz # FDr6 (spherelatent env)
Usage
From the root of the SphereLatent code repository, with its spherelatent environment:
bash scripts/download_models.sh # the ImageNet files above, checked against their SHA-256
bash scripts/download_models.sh afhq flowers # opt-in: the AFHQ / Flowers weights and FID references
bash scripts/sample_imagenet.sh # configs/sample_imagenet_6steps.yaml on GPU 0: 50k samples, 6 steps
bash scripts/sample_imagenet.sh configs/sample_imagenet_4steps.yaml 0,1,2,3 # 4 steps on 4 GPUs
bash scripts/eval_fid.sh samples/imagenet256_sit_xl1_6steps.npz # in the spherelatent-eval env
or download the files directly (only the asset folders, so the code's README is not overwritten; no SHA-256 check):
hf download itsthanhtung/SphereLatent --include 'checkpoints/*' 'models/*' 'data/*' --local-dir .
ImageNet paper sampling settings: CFG 3.2, sigma_max 24, decay power gamma 0.5, 4 or 6 steps, 50,000
class-balanced samples (50 per class), global seed 0. They are stored in the inference configs
configs/sample_imagenet_6steps.yaml and configs/sample_imagenet_4steps.yaml of the code
repository; any src/sample.py flag given after the config and GPU list overrides them.
Notes
- The ImageNet denoiser checkpoint is the EMA at epoch 350 of the final phase of a three-phase warm-started training run on ImageNet-1K (about 850 epochs in total, 64 AMD MI210 GPUs, global batch 512).
- The ImageNet model was trained on ImageNet-1K; use of its weights is also subject to the ImageNet terms of access. The AFHQ and Oxford-Flowers models were trained on those datasets, whose own terms apply.
Citation
@article{do2026spherelatent,
title = {Efficient Image Synthesis with Sphere Latent Encoder},
author = {Do, Tung and Nguyen, Thuan Hoang and Li, Hao},
journal = {arXiv preprint arXiv:2605.15592},
year = {2026}
}