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
- Visual Results
- To Do
- Environment
- Installation
- Training Instruction
- Testing Instruction
- Results
- Citation
- 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:
| Task | Training Set | Testing Set |
|---|---|---|
| Classical Image SR | DIV2K (800 images) + Flickr2K (2650 images) | Set5 + Set14 + B100 + Urban100 + Manga109 [download] |
| Lightweight Image SR | DIV2K (800 images) | Set5 + Set14 + B100 + Urban100 + Manga109 [download] |
| Color Gaussian Image Denoising | DIV2K (800 images) + Flickr2K (2650 images) + WED (4744 images) + BSD500 (500 images) | CBSD68 + Kodak24 + McMaster + Urban100 [download] |
| Grayscale JPEG CAR | DIV2K (800 images) + Flickr2K (2650 images) + WED (4744 images) + BSD500 (500 images) | Classic5 + LIVE1 + Urban100 [download] |
| Image Deraining | Rain13K (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
| Model | Task | Scale | Download |
|---|---|---|---|
| LSM-S | Classical Image SR | ×2 | Download |
| LSM-S | Classical Image SR | ×3 | Download |
| LSM-S | Classical Image SR | ×4 | Download |
| LSM | Classical Image SR | ×2 | Download |
| LSM | Classical Image SR | ×3 | Download |
| LSM | Classical Image SR | ×4 | Download |
| LSM-light | Lightweight Image SR | ×2 | Download |
| LSM-light | Lightweight Image SR | ×3 | Download |
| LSM-light | Lightweight Image SR | ×4 | Download |
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.