subpixel: A subpixel convolutional neural network implementation with Tensorflow
Left: input images / Right: output images with 4x super-resolution after 6 epochs:
See more examples inside theimages folder.
In CVPR 2016 Shi et. al. from Twitter VX (previously Magic Pony) published a paper called Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network . Here we propose a reimplementation of their method and discuss future applications of the technology.
But first let us discuss some background.
Convolutions, transposed convolutions and subpixel convolutions
Convolutional neural networks (CNN) are now standard neural network layers for computer vision. Transposed convolutions (sometimes refered as deconvolution) are the GRADIENTS of a convolutional layer. Transposed convolutions were, as far as we know first used by Zeiler and Fergus  for visualization purposes while improving their AlexNet model.
For visualization purposes let us check out that convolutions in the present subject are a sequence of inner product of a given filter (or kernel) with pieces of a larger image. This operation is highly parallelizable, since the kernel is the same throughout the image. People used to refer to convolutions as locally connected layers with shared parameters. Checkout the figure bellow by Dumoulin and Visin :