Anush Kumar

Logo


Research Projects | Mini Projects

Computer Vision | Robotics | Photography

LinkedIn | Resume | Instagram

View My GitHub Profile

Image Restoration Using Generative Adversarial Networks

Problem Statement

Given a distorted image from the Public Figures Dataset. Use a Deep Learning model to correct the distortions and restore the original image. While this is a fairly straightforward problem statement, the intention of the project is to analyse the performance of standard Fully Convolutional Neural Networks with/without Adversarial Training.

Method of Image Distortion

For every pixel in the image a 5x5 kernel is applied around it. The kernel randomly switches pixels positions while traversing the entire image. This results in visual artifacts similar to grain. There is no external noise component added to the image as such. Given this outline, we can control the rate at which the pixels are shuffled, therefore I had created two versions of the dataset. One with high distortion, and one with lower distortion.

Problems Faced while training GANs

Training GANs are quite tricky and involves multiple failed experiments before the model is able to acheive stability. Here are some of the things that I employed in order to train the GAN model.

Experiments

Quantitative Results

Ablation Studies for Loss Functions

Losses PSNR (High Distortion PSNR (Low Distortion)
L1 + Adversarial 31.66 dB 34.93 dB
L1 + MS-SSIM + Adversarial 34.30 dB 37.47 dB
L1 + MS-SSIM + Cosine + Adversarial 37.68 dB 40.67 dB

Adversarial Training contribution

Losses PSNR (High Distortion) PSNR (Low Distortion)
L1 + MS-SSIM + Cosine 35.67 dB 36.55 dB
L1 + MS-SSIM + Cosine + Adversarial 37.68 dB 40.67 dB

Qualitative Results

Low Distortion (L1 + MS-SSIM + Cosine + Adversarial)

High Distortion (L1 + MS-SSIM + Cosine + Adversarial)

Here is the Colab Notebook, with model implemented on Tensorflow