DSPFusion

June 10, 2026 · View on GitHub

DSPFusion

Image Fusion via Degradation and Semantic Dual-Prior Guidance

IEEE TIP arXiv Python PyTorch

Linfeng Tang, Chunyu Li, Yeda Wang, Guoqing Wang, Yixuan Yuan, and Jiayi Ma

[Paper] [arXiv] [Pretrained Models]

This repository is the official PyTorch implementation of DSPFusion, accepted as a regular paper by IEEE Transactions on Image Processing (IEEE TIP) on June 2, 2026.

News

  • 2026-06-10: Released the cleaned training/testing code, pretrained models, and reproducibility documentation.
  • 2026-06-02: DSPFusion was accepted by IEEE TIP.
  • 2025-03-30: The preprint was released on arXiv.

Overview

DSPFusion jointly suppresses degradations and aggregates complementary infrared-visible information. It learns modality-specific degradation priors and a shared semantic prior, restores the high-quality semantic prior through a compact latent diffusion model, and uses both priors to guide enhancement and fusion.

Key properties:

  • Handles common degradations including blur, rain, low light, over-exposure, random noise, low contrast, and stripe noise.
  • Uses modality-specific degradation priors to adapt restoration to each source image.
  • Restores high-quality scene semantics with a lightweight semantic prior diffusion model.
  • Performs restoration and fusion in one unified network without text prompts or external pre-enhancement at inference time.

Framework

DSPFusion framework

Results

Quantitative Comparison

Quantitative comparison with state-of-the-art image fusion methods under different degraded scenarios with pre-enhancement. The best and second-best values are highlighted in red and purple, respectively.

Quantitative comparison under different degraded scenarios

Qualitative Comparison

Representative results under single and mixed degradations. More comparisons are available in the paper and supplementary material.

Qualitative comparison under degraded scenarios

Environment

The released code has been tested with Python 3.9, PyTorch 2.3.1, and CUDA-enabled NVIDIA GPUs.

git clone https://github.com/Linfeng-Tang/DSPFusion.git
cd DSPFusion

conda create -n DSPFusion python=3.9 -y
conda activate DSPFusion
pip install -r requirements.txt

Pretrained Models

Download the four files from the v1.0 release and place them in ckpt/:

FileComponent
net_g.pthRestoration and fusion network
net_dp.pthDegradation prior embedding network
net_sp.pthSemantic prior embedding network
net_dm.pthSemantic prior diffusion model

The expected layout is:

DSPFusion/
└── ckpt/
    ├── net_g.pth
    ├── net_dp.pth
    ├── net_sp.pth
    └── net_dm.pth

Data Preparation

The included sample data illustrates the required directory and filename organization. Prepare the complete dataset as follows:

datasets/Hybrid_Datasets/
├── train/
│   ├── IR/
│   ├── IR_enhanced/
│   ├── VI/
│   └── VI_enhanced/
├── val/
│   ├── IR/
│   ├── IR_enhanced/
│   ├── VI/
│   └── VI_enhanced/
└── test/
    ├── ir/
    ├── vi/
    ├── ir_LC/
    ├── ir_RN/
    ├── ir_SN/
    ├── vi_Blur/
    ├── vi_LL/
    ├── vi_OE/
    ├── vi_Rain/
    └── vi_RN/

Update the dataset paths in options/train/*.yml or options/test/*.yml when using a different location.

Testing

Run inference on all configured degradation conditions:

CUDA_VISIBLE_DEVICES=0 python test.py -opt options/test/DSPF_S2.yml

Fusion results are written to Results/DSPF/<condition>/.

Training

DSPFusion uses two-stage training.

Stage I: Prior Embedding and Fusion

CUDA_VISIBLE_DEVICES=0 python train.py -opt options/train/DSPF_S1.yml

After training, copy the latest Stage I checkpoints into ckpt/:

mkdir -p ckpt
cp experiments/DSPF_S1/models/net_g_latest.pth ckpt/net_g.pth
cp experiments/DSPF_S1/models/net_dp_latest.pth ckpt/net_dp.pth
cp experiments/DSPF_S1/models/net_sp_latest.pth ckpt/net_sp.pth

Stage II: Semantic Prior Diffusion

CUDA_VISIBLE_DEVICES=0 python train.py -opt options/train/DSPF_S2.yml

Stage II loads the three Stage I networks from ckpt/ and optimizes the semantic prior diffusion model. Training outputs, logs, and checkpoints are saved under experiments/.

Repository Structure

DSPF/        # DSPFusion architectures, datasets, models, and utilities
basicsr/     # Vendored BasicSR runtime used by the project
ldm/         # Latent diffusion components
options/     # Training and testing configurations
datasets/    # Small data samples and expected directory structure
Results/     # Representative inference outputs
train.py     # Two-stage training entry point
test.py      # Inference entry point

Citation

@article{Tang2026DSPFusion,
  title   = {DSPFusion: Image Fusion via Degradation and Semantic Dual-Prior Guidance},
  author  = {Tang, Linfeng and Li, Chunyu and Wang, Yeda and Wang, Guoqing and Yuan, Yixuan and Ma, Jiayi},
  journal = {IEEE Transactions on Image Processing},
  year    = {2026},
  doi     = {10.1109/TIP.2026.3700938}
}

Acknowledgements

This codebase builds on BasicSR. We also thank the authors of Restormer and related diffusion-based restoration projects for their excellent work.