input size = 64x64, x2 scratch

June 19, 2026 · View on GitHub

Linear Recurrent Unit with Semantic Modulation for Image Super-Resolution

Mingyu Choi · Woo Kyoung Han · Sunghoon Im · Kyong Hwan Jin

CVPR 2026 Findings

Abstract: Linear recurrent unit (LRU), designed with a principled formulation for stable linear recurrence, has demonstrated promising accuracy and robustness on long-range dependency tasks. However, its static parameterization and single-scan method limits its applicability to 2D vision tasks. In this study, we propose a LRU-based restoration network with a semantic modulating unit (SMU) to achieve a harmonious balance between performance and efficiency in single-image super-resolution. The SMU plays three key roles: LRU modulation, spatial categorization, and feature enhancement through learned prototype. Extensive experiments demonstrate that our method quantitatively and qualitatively surpasses recent state-of-the-art methods. Notably, our approach achieves superior performance with computational complexity on par with existing methods.

Contents

  1. Visual Results
  2. To Do
  3. Environment
  4. Installation
  5. Training Instruction
  6. Testing Instruction
  7. Results
  8. Citation
  9. Acknowledgements

Visual Results

TO DO

  • Build the repository
  • Release the source code
  • Add installation instructions
  • Add dataset preparation guidelines
  • Add training commands for SR
  • Add testing commands for SR
  • Add SR quantitative results
  • Add SR visual comparison figures
  • Upload pretrained weights
  • Add Gaussian Color Image Denoising code, configs, and results
  • Add JPEG Compression Artifact Removal code, configs, and results
  • Add Image Deraining code and configs, and results
  • Upload visual results

Environment

  • Ubuntu 20.04
  • CUDA 12.1
  • Python 3.8
  • PyTorch 2.0.1

Installation

git clone https://github.com/MingyuChoi-run/LSM.git
cd LSM

conda create -n lsm python=3.8
conda activate lsm

pip install -r requirements.txt

Training Instruction

Datasets

Used training and testing sets can be downloaded as follows:

TaskTraining SetTesting Set
Classical Image SRDIV2K (800 images) + Flickr2K (2650 images)Set5 + Set14 + B100 + Urban100 + Manga109 [download]
Lightweight Image SRDIV2K (800 images)Set5 + Set14 + B100 + Urban100 + Manga109 [download]
Color Gaussian Image DenoisingDIV2K (800 images) + Flickr2K (2650 images) + WED (4744 images) + BSD500 (500 images)CBSD68 + Kodak24 + McMaster + Urban100 [download]
Grayscale JPEG CARDIV2K (800 images) + Flickr2K (2650 images) + WED (4744 images) + BSD500 (500 images)Classic5 + LIVE1 + Urban100 [download]
Image DerainingRain13K (13,712 clean/rain image pairs)Test2800 [download]

Commands

Follow the instructions in options/train folder to begin training our model.

Classical Image Super-Resolution
# 8 GPUs, batch size=4 per GPU

# input size = 64x64, x2 scratch
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_S_SR_x2_scratch.yml --launcher pytorch
# input size = 96x96, x2 finetune
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_S_SR_x2_finetune.yml --launcher pytorch
# input size = 96x96, x3 finetune
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_S_SR_x3_finetune.yml --launcher pytorch
# input size = 96x96, x4 finetune
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_S_SR_x4_finetune.yml --launcher pytorch
Lightweight Image Super-Resolution
# 2 GPUs, batch size=32 per GPU

# input size = 64x64, x2 scratch
CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_light_lightSR_x2_scratch.yml --launcher pytorch
# input size = 96x96, x2 finetune
CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_light_lightSR_x2_finetune.yml --launcher pytorch
# input size = 96x96, x3 finetune
CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_light_lightSR_x3_finetune.yml --launcher pytorch
# input size = 96x96, x4 finetune
CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 --master_port=1111 basicsr/train.py -opt options/train/train_LSM_light_lightSR_x4_finetune.yml --launcher pytorch
Gaussian Color Image Denosing
# To be updated soon.
JPEG Compression Artifact Removal
# To be updated soon.
Image Deraining
# To be updated soon.

Testing Instruction

Pretrained Models

Pretrained models are available at Hugging Face.

After downloading the pretrained models, put them into the experiments/pretrained_models folder

ModelTaskScaleDownload
LSM-SClassical Image SR×2Download
LSM-SClassical Image SR×3Download
LSM-SClassical Image SR×4Download
LSMClassical Image SR×2Download
LSMClassical Image SR×3Download
LSMClassical Image SR×4Download
LSM-lightLightweight Image SR×2Download
LSM-lightLightweight Image SR×3Download
LSM-lightLightweight Image SR×4Download

Commands

Follow the instructions in options/test folder to begin testing our model.

Classical Image Super-Resolution
python basicsr/test.py -opt options/test/test_LSM_S_SR_x2_finetune.yml
python basicsr/test.py -opt options/test/test_LSM_S_SR_x3_finetune.yml
python basicsr/test.py -opt options/test/test_LSM_S_SR_x4_finetune.yml
Lightweight Image Super-Resolution
python basicsr/test.py -opt options/test/test_LSM_light_lightSR_x2_finetune.yml
python basicsr/test.py -opt options/test/test_LSM_light_lightSR_x3_finetune.yml
python basicsr/test.py -opt options/test/test_LSM_light_lightSR_x4_finetune.yml
Gaussian Color Image Denoising
# To be updated soon.
JPEG Compression Artifact Removal
# To be updated soon.
Image Deraining
# To be updated soon.

Results

Classic Image Super-Resolution

Lightweight Image Super-Resolution

Gaussian Color Image Denoising
# To be updated soon.
JPEG Compression Artifact Removal
# To be updated soon.
Image Deraining
# To be updated soon.

Citation

If you find this work useful, please consider citing:

@InProceedings{Choi_2026_CVPR,
    author    = {Choi, Mingyu and Han, Woo Kyoung and Im, Sunghoon and Jin, Kyong Hwan},
    title     = {Linear Recurrent Unit with Semantic Modulation for Image Super-Resolution},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Findings},
    month     = {June},
    year      = {2026},
    pages     = {4950-4960}
}

Acknowledgements

This code is built on BasicSR. We thank the authors for their valuable contributions.