This is a implementation of "Accurate Image Super-Resolution Using Very Deep Convolutional Networks" (CVPR 2016 Oral Paper) in caffe.
VDSR (Very Deep network for Super-Resolution) is an end-to-end network with 20 convolution layers for single image super-resolution. The performance of VDSR is better than other state-of-the-art SISR methods, such as SRCNN, A+ and CSCN (My implementation of CSCN).
Place the "Train" folder into "($Caffe_Dir)/examples/", and rename "Train" to "VDSR"
Open MATLAB and direct to ($Caffe_Dir)/example/VDSR, run "generate_train.m" and "generate_test.m" to generate training and test data (Code from SRCNN)
To train VDSR, run ./build/tools/caffe train --solver examples/VDSR/VDSR_solver.prototxt
Set clip_gradients in VDSR_solver.prototxt to solve gradient explosion problem, 0.1 or 1 is a good choice
Change the learning rate when the error plateaus
After training, run "caffemodel2mat.m" to convert caffemodel to mat for testing (matcaffe is required)
"Demo_SR_Conv.m" is a simple test code. Just run it and you will get the result
"VDSR_170000.mat" is a model trained by myself
"VDSR_Official.mat" is an official model converted from Official Test Code
Different from original paper
Because of the limitation of hardware conditions，I didn't do completed training. So there are some differences between this implementation and original paper.
This implementation: 91 images (with data augumentation and only factor 2)
Original paper: 291 images (with data augumentation and factor 2, 3 and 4)
This implementation: Casade of 2x to generate 3x and 4x result
Original paper: Multi scale in one model
Training Time of Final Model
This implementation: about 30 epoch
Original paper: about 80 epoch
Performance in PSNR
Please cite  if you use this code in your work, thank you!
 Jiwon Kim, Jung Kwon Lee and Kyoung Mu Lee, "Accurate Image Super-Resolution Using Very Deep Convolutional Networks", Proc. of IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016