[ICML2025] Task-Gated Multi-Expert Collaboration Network for Degraded Multi-Modal Image Fusion

March 12, 2026 · View on GitHub

Yiming Sun, Xin Li, Pengfei Zhu, Qinghua Hu, Dongwei Ren, Huiying Xu, Xinzhong Zhu


Abstract

DeMMI-RF Dataset


Preview

The preview of our dataset is as follows.


Five different degradations were set for visible light images, and suitable scenes were selected for each degradation, as shown in the following figure.

previewvis

Stripe noise was applied to the infrared image in different scenes as shown in the figure.

previewir

Details

Total distribution of training images:

  • 35418 (for image restoration)
DegradationBoschM3FDFMBLLVIPMSRSRoadSceneDroneVehicleDroneRGBTAll
Gaussian Noise
(Sigma=15)
17621301332261927003005270
Gaussian Noise
(Sigma=25)
17561291322251927003005261
Gaussian Noise
(Sigma=50)
17591291322261927003005265
Haze196817335827003075506
DefocusBlur1528162238815527003006693
Stripe Noise3900509
(same as EMS)
27003007409

  • 26631 (for image fusion)
DegradationM3FDFMBLLVIPMSRSRoadSceneDroneVehicleDroneRGBTAll
Gaussian Noise
(Sigma=15)
1301332261927003003508
Gaussian Noise
(Sigma=25)
1291322251927003003505
Gaussian Noise
(Sigma=50)
1291322261927003003506
Haze17335827003073538
DefocusBlur162238815527003005165
Stripe Noise3900509
(same as EMS)
27003007409

Total distribution of test images:

  • 9895 (for image restoration or fusion)
DegradationM3FDFMBLLVIPMSRSRoadSceneDroneVehicleDroneRGBTAll
Gaussian Noise
(Sigma=15)
565797810003001518
Gaussian Noise
(Sigma=25)
565797810003001518
Gaussian Noise
(Sigma=50)
565797810003001518
Haze7515315010003001678
DefocusBlur6961676610003002229
Stripe Noise845010003001434

  • 510 (for Multi-Task image restoration or fusion)
Degradation TypeNumDegradation TypeNum
Haze and Gaussian Noise(Sigma=15)30Haze and DefocusBlur30
Haze and Gaussian Noise(Sigma=25)30Haze and Stripe Noise30
Haze and Gaussian Noise(Sigma=50)30DefocusBlur and Stripe Noise30
DefocusBlur and Gaussian Noise(Sigma=15)30Haze, Stripe Noise and DefocusBlur30
DefocusBlur and Gaussian Noise(Sigma=25)30Haze, Stripe Noise and Gaussian Noise(Sigma=50)30
DefocusBlur and Gaussian Noise(Sigma=50)30Haze, DefocusBlur and Gaussian Noise(Sigma=50)30
Stripe and Gaussian Noise(Sigma=15)30DefocusBlur, Stripe Noise and Gaussian Noise(Sigma=50)30
Stripe and Gaussian Noise(Sigma=25)30Haze, DefocusBlur, Stripe Noise and Gaussian Noise(Sigma=50)30
Stripe and Gaussian Noise(Sigma=50)30

Download

If you have any question or suggestion about the dataset, please email to leexin_seu@seu.edu.cn.


TG-ECNet


Set Up on Your Own Machine


When you want to dive deeper or apply it on a larger scale, you can configure our TarDAL on your computer following the steps below.

We strongly recommend that you use Conda as a package manager.

# create virtual environment
conda create -n tgecnet 
conda activate tgecnet
# select pytorch version yourself
# install tgecnet requirements
pip install -r requirements.txt

Quick Start


If you want to test the performance of fusion using this method, ensure stage2/ckpt/stage2_pretrained.ckpt. Place your data in stage2/test.py to test your own data. You need to place the data as follows:

data
└── test
    ├── denoise
    |   ├── your dataname1
    |   |   ├── input # images with degradations
    |   |   ├── visible # clean visible images to provide color information
    |   |   └── infrared # infrared images
    |   └── your dataname2
    |       └──...
    ├── dehaze
    |   ├── your dataname3
    |   |   ├── input # images with degradations
    |   |   ├── visible # clean visible images to provide color information
    |   |   └── infrared # infrared images
    |   └── your dataname4
    |       └──...
    ├── deblur
    |   └── ...
    └── stripe
        └── ...

Then, modify stage2/test.py to test your own data.

conda activate tgecnet
python stage2/test.py

And the result will be in stage2/output/.

Train

Data Preparation

You should put the data in the correct place in the following form.

data
└── Train
    ├── degrad
    |   ├── noise15
    |   |   ├── Bosch
    |   |   ├── M3FD
    |   |   └── ...
    |   ├── noise25
    |   ├── noise50
    |   ├── haze
    |   ├── DefocusBlur
    |   └── stripe
    |       └──...
    ├── visible
    |   └── ...
    └── infrared
        └── ...

Stage Ⅰ

Before training the model, you need to modify the stage1/options.py and the txt file in stage1/data_dir.

conda activate tgecnet
python stage1/train.py

And then you should run stage1/test.py with the obtained stage1/ckpt/stage1_pretrained.ckpt to obtain the stage1.pth which can be used in Stage Ⅱ. We also offer a pretrained edition as stage2/stage1.pth.


Stage Ⅱ

Before training the model, you need to modify the stage2/options.py and the txt file in stage2/data_dir.

conda activate tgecnet
python stage2/train.py

And then you should run stage2/test.py with the obtained stage2/ckpt/stage2_pretrained.ckpt to obtain the outputs.


We offer the pretrained model parameters, you can place them like this:

TG-ECNet
├── stage1
|   ├── ckpt
|   |   └── stage1_pretrained.ckpt
└── stage2
    ├── ckpt
    |   └── stage2_pretrained.ckpt
    └── stage1.pth

Any Question

If you have any other questions about the code, please email leexin_seu@seu.edu.cn.

Citation

If this work has been helpful to you, please feel free to cite our paper!

@inproceedings{sun2025task,
  title={Task-gated multi-expert collaboration network for degraded multi-modal image fusion},
  author={Sun, Yiming and Li, Xin and Zhu, Pengfei and Hu, Qinghua and Ren, Dongwei and Xu, Huiying and Zhu, Xinzhong},
  booktitle={International Conference on Machine Learning},
  pages={57571--57586},
  year={2025},
  organization={PMLR}
}