News: MambaIRv2 is now available!

April 4, 2026 Β· View on GitHub

News: MambaIRv2 is now available!

The updated MambaIRv2 is totally compatible with the previous MambaIR. We also keep the code of MambaIR in another branch for your possible revisiting.

Check our paper collection of Awesome Mamba in Low-Level Vision :hugs:.

[ECCV24] MambaIR: A Simple Baseline for Image Restoration with State-Space Model

[CVPR25] MambaIRv2: Attentive State Space Restoration

arxiv TechBeat Huggingface google colab logo

Hang Guo*, Yong Guo* Yaohua Zha, Yulun Zhang Wenbo Li, Tao Dai, Shu-Tao Xia, Yawei Li

(*) equal contribution

Abstract: The Mamba-based image restoration backbones have recently demonstrated significant potential in balancing global reception and computational efficiency. However, the inherent causal modeling limitation of Mamba, where each token depends solely on its predecessors in the scanned sequence, restricts the full utilization of pixels across the image and thus presents new challenges in image restoration. In this work, we propose MambaIRv2, which equips Mamba with the non-causal modeling ability similar to ViTs to reach the attentive state space restoration model. Specifically, the proposed attentive state-space equation allows to attend beyond the scanned sequence and facilitate image unfolding with just one single scan. Moreover, we further introduce a semantic-guided neighboring mechanism to encourage interaction between distant but similar pixels. Extensive experiments show our MambaIRv2 outperforms SRFormer by even 0.35dB PSNR for lightweight SR even with 9.3% less parameters and suppresses HAT on classic SR by up to 0.29dB

⭐If this work is helpful for you, please help star this repo. Thanks!πŸ€—

πŸ“‘ Contents

πŸ” Real-world SR with MambaIR

:eyes:Visual Results On Classic Image SR

πŸ†• News

  • 2024-2-23: arXiv paper available.
  • 2024-2-27: This repo is released.
  • 2024-3-01: Pretrained weights for SR and realDN is available. :tada:
  • 2024-3-08: The code for ERF visualization and model complexity analysis can be found at ./analysis/ πŸ˜„
  • 2024-3-19: We have updated the code for MambaIR-light.
  • 2024-3-19: The FIRST Mamba-based Real-world SR Model is now available! Enjoy yourself 😊.
  • 2024-05-24:πŸ”ˆπŸ”ˆπŸ”ˆWe have released a new repository to collect recent works of Mamba in low-level-vision, please see here if you are instersted ;D
  • 2024-06-10: We have released the training and testing config files for Guassian Color Image Denoising, the pre-trained weights are coming soon πŸ‘
  • 2024-06-10: We have also updated the environments installation instruction here for fast building your own mamba environment for reproduce!
  • 2024-07-01: :fire: :fire: :fire: Congratulations! Our MambaIR has been accepted by ECCV 2024!
  • 2024-07-04: :kissing_heart: We have released the training and testing config files for JPEG compression artifact reduction tasks.
  • 2024-07-04: The pretrained weight for Guassian Color Image Denosing as well as JPEG Compression Artifact Reduction are now available here. The performance of these models is futher improved than the reported one in the paper. And we will update the Arxiv version in the future. Enjoy these new models! :yum:
  • 2024-08-19: The previous #params&MACs calculation for Mamba model using the thop library has a bug, which was also discussed in #issue44. We have updated the new accurate calculation code which uses fvcore and additionally registers the previous missing parameters. You can use this new code in ./analysis/flops_param_fvcore.pyfor complexity analysis. Note that the model complexity obtained from this code is lager than the reported one. We will release a new comparable MambaIR-light model soon, stay tuned!
  • 2024-10-15: We have updated a new arXiv version of our MambaIR paper, in which we have fixed the results on lightSR tasks.
  • 2024-10-15😍😍😍A brand new Mamba-base image restoration backbone MambaIRv2 is just around the corner, with significant performance and efficiency improvements. We will release the new paper and code soon~
  • 2024-12-04: πŸ€—The code of MambaIRv2 is now released, with significant gains on both performance and efficiency!
  • 2025-01-13: πŸ‘€ We have created an online jupyter notebook demo for fast inference to play with the MambaIR model. Check our online inference demo here πŸ‘‰ google colab logo
  • 2025-02-27: πŸŽ‰πŸŽ‰πŸŽ‰ Congrats! Our MambaIRv2 is accepted by CVPR2025!

β˜‘οΈ TODO

  • Build the repo
  • arXiv version
  • Release code
  • Pretrained weights&log_files
  • Add code for complexity analysis and ERF visualization
  • Real-world SR
  • Guassian Color Image Deniosing
  • Add Download Link for Visual Results on Common Benchmarks
  • JPEG Compression Artifact Reduction
  • Release MambaIRv2 Code
  • Release pre-trained MambaIRv2 weights
  • Online jupyter notebobk demo
  • Release U-shaped MambaIRv2 for more restoration tasks

:page_with_curl: Model Summary

We also host our MambaIR and MambIRv2 weights on HuggingFace ;D Huggingface

ModelTaskTest_datasetPSNRSSIMmodel_weightslog_files
MambaIR_SR2Classic SR x2Urban10034.150.9446linklink
MambaIR_SR3Classic SR x3Urban10029.930.8841linklink
MambaIR_SR4Classic SR x4Urban10027.680.8287linklink
MambaIR_light2Lightweight SR x2Urban10032.920.9356linklink
MambaIR_light3Lightweight SR x3Urban10029.000.8689linklink
MambaIR_light4Lightweight SR x4Urban10026.750.8051linklink
MambaIR_realDNReal image DenoisingSIDD39.890.960linklink
MambaIR_realSRReal-world SRRealSRSet--linklink
MambaIR_guassian15Guassian DenoisingUrban10035.17-linklink
MambaIR_guassian25Guassian DenoisingUrban10032.99-linklink
MambaIR_guassian50Guassian DenoisingUrban10030.07-linklink
MambaIR_JEPG10JPEG CARClassic530.270.8256linklink
MambaIR_JPEG30JPEG CARClassic533.740.8965linklink
MambaIR_JPEG40JPEG CARClassic534.530.9084linklink
--------------------------------------------
MambaIRv2_light2lightSR x2Urban10033.260.9378linklink
MambaIRv2_light3lightSR x3Urban10029.010.8689linklink
MambaIRv2_light4lightSR x4Urban10026.820.8079linklink
MambaIRv2_SR2classicSR x2Urban10034.490.9468linklink
MambaIRv2_SR3classicSR x3Urban10030.280.8905linklink
MambaIRv2_SR4classicSR x4Urban10027.890.8344linklink
MambaIRv2_guassian15Guassian DenoisingUrban10035.42-linklink
MambaIRv2_JPEG10JPEG CAR q10Classic530.370.8269linklink
MambaIRv2_JPEG30JPEG CAR q30Classic533.810.8970linklink
MambaIRv2_JPEG40JPEG CAR q40Classic534.640.9093linklink

πŸ₯‡ Results with MambaIRv2

We achieve state-of-the-art performance on various image restoration tasks. Detailed results can be found in the paper.

Evaluation on Classic SR (click to expand)

Evaluation on Lightweight SR (click to expand)

Evaluation on Gaussian Color Image Denoising (click to expand)

Evaluation on JPEG CAR (click to expand)

Evaluation on Effective Receptive Filed (click to expand)

:wrench: Installation

This codebase was tested with the following environment configurations. It may work with other versions.

  • Ubuntu 20.04
  • CUDA 11.7
  • Python 3.9
  • PyTorch 2.0.1 + cu117

(Note: If you uses a newer cuda version, say 12.x, you may refer to the official github page of causal_conv_1d and mamba_ssm to find a matched version.)

The following give three possible solution to install the mamba-related libraries.

Previous installation

To use the selective scan with efficient hard-ware design, the mamba_ssm library is needed to install with the folllowing command.

pip install causal_conv1d==1.0.0
pip install mamba_ssm==1.0.1

One can also create a new anaconda environment, and then install necessary python libraries with this requirement.txt and the following command:

conda install --yes --file requirements.txt

Updated installation

One can also reproduce the conda environment with the following simple commands (cuda-11.7 is used, you can modify the yaml file for your cuda version):

cd ./MambaIR
conda env create -f environment.yaml
conda activate mambair

Backup installation

If you encounter difficulties installing causal_conv1d or mamba_ssm, e.g. the network can't link to github, it's recommended to use an offline whl install.

Datasets

The datasets used in our training and testing are orgnized as follows:

TaskTraining SetTesting SetVisual Results(v2)
image SRDIV2K (800 training images) + Flickr2K (2650 images) [complete dataset DF2K download]Set5 + Set14 + BSD100 + Urban100 + Manga109 [download]Google Drive
gaussian color image denoisingDIV2K (800 training images) + Flickr2K (2650 images) + BSD500 (400 training&testing images) + WED(4744 images) [complete dataset DFWB_RGB download]CBSD68 + Kodak24 + McMaster + Urban100 [download]Google Drive
real image denoisingSIDD (320 training images) [complete dataset SIDD download]SIDD + DND [download]Google Drive
grayscale JPEG compression artifact reductionDIV2K (800 training images) + Flickr2K (2650 images) + BSD500 (400 training&testing images) + WED(4744 images) [complete dataset DFWB_CAR download]Classic5 + LIVE1 [download]Google Drive

:hourglass: Training

Train on SR

  1. Please download the corresponding training datasets and put them in the folder datasets/DF2K. Download the testing datasets and put them in the folder datasets/SR.

  2. Follow the instructions below to begin training our model.

# Claissc SR task (Base model as default), cropped input=64Γ—64, 8 GPUs, batch size=4 per GPU
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_SR_x2.yml --launcher pytorch
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_SR_x3.yml --launcher pytorch
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_SR_x4.yml --launcher pytorch

# for training our Small or Large model, use the following command
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_SRSmall_x4.yml --launcher pytorch
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_SRLarge_x4.yml --launcher pytorch
# Lightweight SR task, cropped input=64Γ—64, 2 GPUs, batch size=16 per GPU
python -m torch.distributed.launch --nproc_per_node=2 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_lightSR_x2.yml --launcher pytorch
python -m torch.distributed.launch --nproc_per_node=2 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_lightSR_x3.yml --launcher pytorch
python -m torch.distributed.launch --nproc_per_node=2 --master_port=1234 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_lightSR_x4.yml --launcher pytorch
  1. Run the script then you can find the generated experimental logs in the folder experiments.

Train on Gaussian Color Image Denosing

  1. Download the corresponding training datasets here and put them in the folder ./datasets/DFWB_RGB. Download the testing datasets and put them in the folder ./datasets/ColorDN.

  2. Follow the instructions below to begin training:

# train on denosing15
python -m torch.distributed.launch --nproc_per_node=8 --master_port=2414 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_ColorDN_level15.yml --launcher pytorch
  1. Run the script then you can find the generated experimental logs in the folder ./experiments.

Train on JPEG Compression Artifact Reduction

  1. Download the corresponding training datasets here and put them in the folder ./datasets/DFWB_CAR. Download the testing datasets and put them in the folder ./datasets/JPEG_CAR.

  2. Follow the instructions below to begin training:

# train on jpeg10
python -m torch.distributed.launch --nproc_per_node=8 --master_port=2414 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_CAR_q10.yml --launcher pytorch

# train on jpeg30
python -m torch.distributed.launch --nproc_per_node=8 --master_port=2414 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_CAR_q30.yml --launcher pytorch

# train on jpeg40
python -m torch.distributed.launch --nproc_per_node=8 --master_port=2414 basicsr/train.py -opt options/train/mambairv2/train_MambaIRv2_CAR_q40.yml --launcher pytorch
  1. Run the script then you can find the generated experimental logs in the folder ./experiments.

:smile: Testing

Test on SR

  1. Please download the corresponding testing datasets and put them in the folder datasets/SR. Download the corresponding models and put them in the folder experiments/pretrained.

  2. Follow the instructions below to begin testing our MambaIRv2 model.

# test for image SR (we use the Base model as default). 
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_SR_x2.yml
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_SR_x3.yml
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_SR_x4.yml

# if you want to test our Small or Large model, you can use the following command
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_SRSmall_x4.yml
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_SRLarge_x4.yml
# test for lightweight image SR. 
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_lightSR_x2.yml
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_lightSR_x3.yml
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_lightSR_x4.yml

Test on Gaussian Color Image Denoising

  1. Please download the corresponding testing datasets and put them in the folder datasets/ColorDN.

  2. Download the corresponding models and put them in the folder experiments/pretrained_models.

  3. Follow the instructions below to begin testing our model.

# test on denosing15
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_ColorDN_level15.yml

Test on JPEG Compression Artifact Reduction

  1. Please download the corresponding testing datasets and put them in the folder datasets/JPEG_CAR.

  2. Download the corresponding models and put them in the folder experiments/pretrained_models.

  3. Follow the instructions below to begin testing our model.

# test on jpeg10
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_CAR_q10.yml

# test on jpeg30
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_CAR_q30.yml

# test on jpeg40
python basicsr/test.py -opt options/test/mambairv2/test_MambaIRv2_CAR_q40.yml

πŸ₯° Citation

Please cite us if our work is useful for your research.

@inproceedings{guo2025mambair,
  title={MambaIR: A simple baseline for image restoration with state-space model},
  author={Guo, Hang and Li, Jinmin and Dai, Tao and Ouyang, Zhihao and Ren, Xudong and Xia, Shu-Tao},
  booktitle={European Conference on Computer Vision},
  pages={222--241},
  year={2024},
  organization={Springer}
}
@article{guo2024mambairv2,
  title={MambaIRv2: Attentive State Space Restoration},
  author={Guo, Hang and Guo, Yong and Zha, Yaohua and Zhang, Yulun and Li, Wenbo and Dai, Tao and Xia, Shu-Tao and Li, Yawei},
  journal={arXiv preprint arXiv:2411.15269},
  year={2024}
}

License

This project is released under the Apache 2.0 license.

Acknowledgement

This code is based on BasicSR, ART ,and VMamba. Thanks for their awesome work.

Contact

If you have any questions, feel free to approach me at cshguo@gmail.com