This is the code of ACM Multimedia 2021 Paper: Information-Growth Attention Network for Image Super-Resolution
Abstract: It is widely believed that a high-resolution (HR) image contains more productive information compared with its low-resolution (LR) versions, so image super-resolution (SR) satisfies an information-growth process. Considering the property, we attempt to exploit the growing information via a particular attention mechanism. In this paper, we propose a concise but effective Information-Growth Attention Network (IGAN) that shows the incremental information is beneficial for SR. Specifically, a novel information-growth attention mechanism is proposed. It aims to pay attention to features involving large information-growth capacity by assimilating the difference from current features to the former features. We also illustrate its effectiveness contrasted by widely-used self-attention mechanism using entropy and generalization bound analysis. Besides, existing channel-wise attention generation modules (CAGMs) have large information attenuation due to directly calculating global mean for feature maps. To solve it, we present an innovative CAGM that progressively decreases feature maps' sizes. Extensive experiments conducted on publicly available datasets demonstrate IGAN outperforms state-of-the-art attention-aware SR approaches.
PyTorch 1.4.0
Torchvision 0.5.0
Scikit-image 0.15.0
Numpy 1.18.5
Tqdm 4.50.0
You can download our trained model by following links:
4x Model: https://drive.google.com/file/d/12IKFNnjtfRauoR3hcuiq9OAxJvQsH0Bb/view?usp=sharing
8x Model: https://drive.google.com/file/d/19u1O1vtzql4zx78EtVgB9XSBj4vj3zyA/view?usp=sharing
The training setting is in optionIGAN.py.
The testing setting is in optionTest.py.
You need change some file path according to your environment including "dir_data", "data_train", "data_test" "pre_train".
Using "python mainIGAN4.py" for training
Using "python TestModel.py" for testing. Before testing, you should change the "pre_train" in optionTest for load the correctly trained model.
Using "python outputTest.py" for generating SR output.
We use the Div2k dataset for training. its webpage is available at: DIV2K
- Size of Dataset: Total 900 2k images about 7.12 GB
- Training: 800 images
- Testing: 100 images
- Benchmark dataset:
- Data format: .png
The Div2k images shuould be put as follows:
DIV2K
├── DIV2K_train_HR
│ ├── 0001.png
│ ├─ ...
│ └── 0900.png
├── DIV2K_train_LR_bicubic
│ ├── X2
│ │ ├── 0001x2.png
│ │ ├─ ...
│ │ └── 0900x2.png
│ ├── X3
│ │ ├── 0001x3.png
│ │ ├─ ...
│ │ └── 0900x3.png
│ └── X4
│ ├── 0001x4.png
│ ├─ ...
│ └── 0900x4.png
if you test result on Set5, the file should be listed as:
Set5
├── HR
│ ├── baby.png
│ ├─ ...
│ └── butterfly.png
├── BicDown
│ ├── X2
│ │ ├── X2down_baby.png
│ │ ├─ ...
│ │ └── X2down_butterfly.png
│ ├── X4
│ │ ├── X4down_baby.png
│ │ ├─ ...
│ │ └── X4down_butterfly.png
│ └── X8
│ ├── X8down_baby.png
│ ├─ ...
│ └── X8down_butterfly.png
The references introduced by .bib can be written as:
@inproceedings{Liz2021,
title={Information-Growth Attention Network for Image Super-Resolution.},
author={Zhuangzi Li, Ge Li, Thomas Li, Shan Liu and Wei Gao},
booktitle={Proceedings of the 29th ACM International Conference on Multimedia},
pages={544--552},
year={2021}
}