Officical code for "Semantic Guided Large Scale Factor Remote Sensing Image Super-resolution with Generative Diffusion Prior", ISPRS-JPRS, 2025
PS: we have opened source the model parameters and configuration in the absence of vector maps. Welcome to quote and compare
# clone this repo
git clone https://github.com/wwangcece/SGDM.git
# create an environment with python >= 3.9
conda create -n SGDM python=3.9
conda activate SGDM
pip install -r requirements.txtDownload the model and place it in the checkpoints/ folder
For copyright reasons, we can only provide the geographic sampling points in the data and the download scripts of the remote sensing images. To download vector maps, you need to register a maptiler account and subscribe to the package.
In order to make it easier for you to understand our method, we have provided some toy examples for you to use! Google Drive.
First please modify the validation data set configuration files at configs/dataset
python inference_refsr_batch_simu.py \
--ckpt checkpoints/SGDM-syn.ckpt \
--config configs/model/refsr_simu.yaml \
--val_config configs/dataset/reference_sr_val_simu.yaml \
--output path/to/your/outpath \
--steps 50 \
--device cuda:0Meanwhile, our model also supports inference in the absence of vector maps. All you need to do is set the use_map of the model configuration file (configs/model/refsr_simu.yaml) to False and inference using the sync_x32_no_map.ckpt pre-training weight.
For style sampling
python inference_refsr_batch_real.py \
--ckpt checkpoints/SGDM-real.ckpt \
--config configs/model/refsr_real.yaml \
--val_config configs/dataset/reference_sr_val_real.yaml \
--sample_style true \
--ckpt_flow_mean checkpoints/flow_mean \
--ckpt_flow_std checkpoints/flow_std \
--output path/to/your/outpath \
--steps 50 \
--device cuda:0For style guidance
python inference_refsr_batch_real.py \
--ckpt checkpoints/SGDM-real.ckpt \
--config configs/model/refsr_real.yaml \
--val_config configs/dataset/reference_sr_val_real.yaml \
--output 50 path/to/your/outpath \
--steps 50 \
--device cuda:0Firstly load pretrained SD parameters:
python scripts/init_weight_refsr.py \
--cldm_config configs/model/refsr_simu.yaml \
--sd_weight checkpoints/v2-1_512-ema-pruned.ckpt \
--output checkpoints/init_weight/init_weight-refsr-simu.ptSecondly please modify the training configuration files at configs/train_refsr_simu.yaml. Finally you can start training:
python train.py \
--config configs/train_refsr_simu.yamlFor training SGDM+ (real-world version), you just need to replace the model configuration file with configs/model/refsr_real.yaml and the training configuration file with configs/train_refsr_real.yaml. And one more step is to train the style normalizing flow model. Firstly please collect all the style vectors in the training dataset for model training:
python model/Flows/save_mu_sigama.py \
--ckpt path_to_saved_ckpt \
--data_config configs/dataset/reference_sr_train_real.yaml \
--savepath model/Flows/results \
--device cuda:1Then you can train the style normalizing flow model:
python model/Flows/mu_sigama_estimate_normflows_single.pyThe saved model parameters can be used for style sampling.
Please cite us if our work is useful for your research.
@article{wang2025semantic,
title={Semantic guided large scale factor remote sensing image super-resolution with generative diffusion prior},
author={Wang, Ce and Sun, Wanjie},
journal={ISPRS Journal of Photogrammetry and Remote Sensing},
volume={220},
pages={125--138},
year={2025},
publisher={Elsevier}
}
This project is based on Diffbir. Thanks for their awesome work.
If you have any questions, please feel free to contact with me at [email protected].