/ImageDenoisingAE

Image Denoising Autoencoder implemented in Pytorch for IvLabs Summer Intern 2021

Primary LanguageJupyter Notebook

Image Denoising AutoEncoder

Dataset

Model was trained on MNIST dataset containing 60000 training images and 10000 test images.

Model Architecture

The model is a convolutional neural network (CNN) consisting of 6 layers.

Conv2d(input_channels,output_channels,kernel_size,padding,stride)
tConv2d(input_channels,output_channels,kernel_size,padding,stride,output-padding)

Encoding Layers

Layer 1: Conv2d(1,32,3,p=1,s=2)
Layer 2: Conv2d(32,64,3,p=1,s=2) 
Layer 3: Conv2d(64,128,5) 

Decoding Layers

Layer 4: tConv2d(128,64,5) 
Layer 5: tConv2d(64,32,3,p=1,s=2,op=1) 
Layer 6: tConv2d(32,1,3,p=1,s=2,op=1) 

Loss Function and Optimization

Hyperparameter value
Batch-Size 32
Learning-rate 0.001
num of Epochs 10
Loss MSE Loss
Optimizer Adam Optimizer

Loss Plot

lossgraph

Noise

Gaussian noise was added via torch.randn() with a tunable noise factor variable.

def add_noise(inputs,noise_factor=0.3):  
  noisy = inputs + (torch.randn_like(inputs) * noise_factor)  
  noisy = torch.clip(noisy,0.,1.)  
  return noisy 

Result

This project was built as a part of IvLabs Summer Internship 2021. You can refer to the IvLabs repository here