Image Enhancement with ESRGAN using TensorFlow¶
Generative Adversarial Networks (GANs) are a branch of deep learning used for generative modeling. They consist of 2 neural networks that act as adversaries, the Generator and the Discriminator. The Generator is assigned to generate fake images that look real, and the Discriminator needs to correctly identify the fake ones.
In this example, you will learn how to use a ESRGAN generator to upscale images x4 better than any upscaling algorithm like bicubic or bilinear, using the generator available on TensorFlow Hub. ESRGAN is short for Enhanced Super-Resolution Generative Adversarial Networks.
The source code for this example can be found in the examples/sr package.
Setup guide¶
To configure your development environment, follow setup.
Run Generation¶
Introduction¶
ESRAGN is trained on the DIV2K dataset. The model is very simple to interact with, the input is a batch of images and so is the output.
Thus, the input to the translator will be a list of images like so:
List<Image> input = Arrays.asList(
ImageFactory.getInstance().fromFile(Paths.get("src/test/resources/fox.png"))
);
Build the project and run¶
Use the following commands to run the project:
cd examples
./gradlew run -Dmain=ai.djl.examples.inference.sr.SuperResolution
Output¶
Here is an example, we compare the original image to the traditional Bicubic upscaling algorithm
Original | Bicubic | Super Resolution |
---|---|---|