PyTorch Implementation of Learning a Single Convolutional Super-Resolution Network for Multiple Degradations (CVPR 2018)
All the files in the directory kernels
are from [1].
python 3.6
pytorch==0.4.0
visdom
pillow
h5py
First, download images from the Internet and put them into a folder Database
as follows:
+---SRMD-pytorch
+---Database
+---train # For training
| 1.png
| 10.jpg
| ...
\---test # For testing
5.png
10.bmp
...
Second, train the network
$ python main.py --scale_factor=2 --mode='train'
Third, do testing (Not implemented yet)
$ python main.py --scale_factor=2 --mode='test'
- First column: LR image, Second column: SR image, Third column: HR image
- The implementation is slightly different with one in original paper.
- I put a
sigmoid
function right after the last convolutional layer.- No sigmoid resulted in unstable results (bouncing pixels even after large iterations)
- To implement method
test()
ofclass Solver
considering users' favor (specific blur kernel as input) - To train on the other scale factors (SRMDNFx3, SRMDNFx4)
- To consider additive noise after downsampling (SRMDx2, SRMDx3, SRMDx4)
- To evaluate quantitative performances of the trained networks
[1] MatConvNet implementation of one author of the paper (only test code available, as of June 27, 2018)