Downloads · 30 days
0
jessholbrook/deepsky-128px
deepsky-128px is a unconditional image generation model from jessholbrook. Use it for the unconditional image generation task on the model card, and read the license before you ship it in a product. It is set up for pytorch. The card lists the license as cc-by-4.0.
A from-scratch denoising diffusion probabilistic model (DDPM) that unconditionally generates 128×128 deep-sky astronomical images — nebulae, galaxies, and star clusters. Every pixel is generated; nothing is retrieved…
Downloads · 30 days
0
Access
Public
Updated Jul 12, 2026
Repo size
1.4 GB
Likes
0
Public
Click a slice to open those files.
.pt1.4 GB · 100%
From the Hugging Face model README
A from-scratch denoising diffusion probabilistic model (DDPM) that unconditionally generates 128×128 deep-sky astronomical images — nebulae, galaxies, and star clusters. Every pixel is generated; nothing is retrieved or composited.
Everything is hand-written PyTorch — the U-Net, the noise schedules, the forward
process, the training loop, and both samplers. No diffusers dependency.

Random, uncurated samples — the honest output distribution, not a hand-picked best-of.
| File | Description |
|---|---|
ckpt_0200000.pt | Training checkpoint (1.39 GB). EMA weights live at state["ema"]["shadow"]. |
samples_0200000.png | DDIM (100-step) sample grid rendered during training. |
final.png | DDPM (1000-step) ancestral sample grid. |
The model is a plain nn.Module from the deepsky
package (no from_pretrained):
import torch
from huggingface_hub import hf_hub_download
from deepsky.config import ModelCfg
from deepsky.diffusion.gaussian import GaussianDiffusion
from deepsky.diffusion.samplers import ddim_sample
from deepsky.diffusion.schedule import make_schedule
from deepsky.models.unet import UNet
cfg = ModelCfg(
base_channels=128, channel_mults=(1, 2, 3, 4), num_res_blocks=2,
attn_resolutions=(16, 8), time_emb_dim=512,
)
model = UNet(cfg, 128)
state = torch.load(hf_hub_download("jessholbrook/deepsky-128px", "ckpt_0200000.pt"),
map_location="cpu")
model.load_state_dict(state["ema"]["shadow"]) # EMA weights = best quality
model.eval()
diffusion = GaussianDiffusion(make_schedule("cosine", 1000))
img = ddim_sample(model, diffusion, (1, 3, 128, 128), torch.device("cpu"), steps=50)
The model learns genuine astronomical structure on its own: point stars sharpen into crisp cores, dust lanes cut across edge-on galaxies, globular clusters resolve into thousands of colored points, and bright stars even grow the four-pointed diffraction spikes characteristic of Hubble's optics — learned purely from data, never hard-coded.
Intended for research, education, and art: exploring how a small, from-scratch diffusion model behaves, and generating decorative astronomical imagery.
Not for scientific use. Outputs are hallucinated — they resemble real deep-sky objects statistically but depict nothing real. They must not be used as astronomical data, measurements, or evidence.
Limitations:
Weights and samples are released under CC BY 4.0. Training data derives from:
Per-image credits are preserved in data/crops256/manifest.csv in the
code repository. If you publish
samples or weights, please retain this attribution.