Downloads · 30 days
7
9% of all-time downloads
BiliSakura/ddpm-cd
ddpm-cd is a machine learning model from BiliSakura. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for diffusers. The card lists the license as mit.
[!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]
Downloads · 30 days
7
9% of all-time downloads
All-time downloads
76
Public
Parameters
391M
3.8 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors3.8 GB · 100%
From the Hugging Face model README
[!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]
Consolidated DDPM-CD change detection — Single repo with shared UNet backbone and multiple cd_head variants (trained on different datasets and timestep configs).
cd_head/{variant}/| Variant | Dataset | Timesteps | Path |
|---|---|---|---|
| cdd-50-100 | CDD | [50, 100] | cd_head/cdd-50-100/ |
| cdd-50-100-400 | CDD | [50, 100, 400] | cd_head/cdd-50-100-400/ |
| cdd-50-100-400-650 | CDD | [50, 100, 400, 650] | cd_head/cdd-50-100-400-650/ |
| dsifn-50-100 | DSIFN | [50, 100] | cd_head/dsifn-50-100/ |
| dsifn-50-100-400 | DSIFN | [50, 100, 400] | cd_head/dsifn-50-100-400/ |
| dsifn-50-100-400-650 | DSIFN | [50, 100, 400, 650] | cd_head/dsifn-50-100-400-650/ |
| levir-50-100 | LEVIR | [50, 100] | cd_head/levir-50-100/ |
| levir-50-100-400 | LEVIR | [50, 100, 400] | cd_head/levir-50-100-400/ |
| levir-50-100-400-650 | LEVIR | [50, 100, 400, 650] | cd_head/levir-50-100-400-650/ |
| whu-50-100 | WHU | [50, 100] | cd_head/whu-50-100/ |
| whu-50-100-400 | WHU | [50, 100, 400] | cd_head/whu-50-100-400/ |
| whu-50-100-400-650 | WHU | [50, 100, 400, 650] | cd_head/whu-50-100-400-650/ |
Load with explicit custom_pipeline (pipeline.py is in the repo, use relative path) and cd_head_subfolder:
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained(
"BiliSakura/ddpm-cd",
custom_pipeline="pipeline",
trust_remote_code=True,
cd_head_subfolder="levir-50-100",
).to("cuda")
# Images in [-1, 1], shape (B, 3, H, W)
change_map = pipe(image_A, image_B, timesteps=[50, 100])
pred = change_map.argmax(1) # (B, H, W), 0=no-change, 1=change
Important: Pass the same timesteps used during training for each variant (see table above).
pipe = DiffusionPipeline.from_pretrained(
"BiliSakura/ddpm-cd",
custom_pipeline="pipeline",
trust_remote_code=True,
cd_head_subfolder="levir-50-100",
).to("cuda")
# Load different cd_head
pipe.load_cd_head(subfolder="whu-50-100-400")
change_map = pipe(image_A, image_B, timesteps=[50, 100, 400])
@inproceedings{bandaraDDPMCDDenoisingDiffusion2025,
title = {{{DDPM-CD}}: {{Denoising Diffusion Probabilistic Models}} as {{Feature Extractors}} for {{Remote Sensing Change Detection}}},
shorttitle = {{{DDPM-CD}}},
booktitle = {Proceedings of the {{Winter Conference}} on {{Applications}} of {{Computer Vision}}},
author = {Bandara, Wele Gedara Chaminda and Nair, Nithin Gopalakrishnan and Patel, Vishal},
year = 2025,
pages = {5250--5262},
urldate = {2025-12-28}
}