This is the official PyTorch implementation of the paper FusionRegister: Every Infrared and Visible Image Fusion Deserves Registration [paper] [arxiv].
The model is built in PyTorch 2.1.0 (Python3.9.19, CUDA12.8).
For installing, follow these intructions:
conda create -n pytorch python=3.9
conda activate pytorch
conda install pytorch==2.1.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
pip install requirements.txt
Install warmup scheduler
cd pytorch-gradual-warmup-lr
python setup.py install
cd ..
-
Download dataset from the Registered dataset .
-
Unzip files
datasetfolder. -
Make Infrared and Visible image fusion dataset structure be:
Registration Dataset
├─ dataset
│ ├─ ir
│ │ ├─ img1.png
│ │ ├─ ......
│ ├─ vi
│ │ ├─ img1.png
│ │ ├─ ......
├─ ......
Pre-trained models can be downloaded from google drive.
- fr.pth: trained for MMDRFuse (ACMM 24) (Main Version).
- fr_hcl.pth: trained for HCLFuse (NeurIPS 25) (Additional Version).
- fr_s4.pth: trained for S4Fusion (TIP 25) (Additional Version).
- Clone this github repo
git clone https://github.com/bociic/FusionRegister.git
cd FusionRegister
- Prepare testing dataset and modify "input_dir", "target_dir", and "weights" in
./test.py - Run test
python test.py --save_result #test MMDRFuse (Main Version)
- The original fused result are saved in
./fused_results. The registered result are saved in./registered_results
- Download the pretrained weight of image fusion from S4Fusion, and download the pretrained weight of FusionRegister(S4-Version). Put them under
./checkpoints. - Prepare testing dataset and modify "input_dir", "register_weights", and "fusion_weights" in
./test_s4.py - Run test
python test_s4.py --save_result #test S4Fusion (TIP 2025)
- The original fused result of S4Fusion are saved in
./fused_results. The registered result of S4Fusion are saved in./registered_results
- Download the pretrained weight of image fusion from HCLFuse, and download the pretrained weight of FusionRegister(HCL-Version). Put them under
./checkpoints. - Prepare testing dataset and modify "input_dir", "register_weights", and "fusion_weights" in
./test_hcl.py - Run test
python test_hcl.py --save_result #test HCLFuse(NeurIPS 2025)
- The original fused result of HCLFuse are saved in
./fused_results. The registered result of HCLFuse are saved in./registered_results
- Clone this github repo
git clone https://github.com/ChengxuLiu/MISCFilter.git
cd MISCFilter
pip install requirements.txt
- Prepare training dataset and modify "input_dir" and "fusion_weights" in
./train.py. If you want to finetune from the pretrained weight you can modify "pretrained_weights" in./train.py - If you want to train your own version, modify
Load the Fusion NetandGet the Original Fused Imagein Line 106 and Line 175 intrain.py - Run training
python train.py
- The models are saved in
./experiments
If you find the code and pre-trained models useful for your research, please consider citing our paper. 😊
@misc{bian2026fusionregisterinfraredvisibleimage,
title={FusionRegister: Every Infrared and Visible Image Fusion Deserves Registration},
author={Congcong Bian and Haolong Ma and Hui Li and Zhongwei Shen and Xiaoqing Luo and Xiaoning Song and Xiao-Jun Wu},
year={2026},
eprint={2603.07667},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2603.07667},
}
If you meet any problems, please describe them in issues or contact:
- Congcong Bian: bociic_jnu_cv@163.com
The code of FusionRegister is built upon MISCFilter,and we express our gratitude to this awesome projects.