Remote Sensing Visual Generative Models
Collection
diffusers implementation • 24 items • Updated
• 1
we do not have a full checkpoint conversion validation, if you encounter pipeline loading failure and unsidered output, please contact me via bili_sakura@zju.edu.cn
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}
}