Sandstone is a clastic sedimentary rock composed mainly of sand-sized (0.0625 to 2 mm) silicate grains. It comprises about 20โ25% of all sedimentary rocks. In this project, I have implemented and trained the Super Resolution GAN (SRGAN) deep learning model for performing image upscaling from the resolution of 64x64 to 256x256.
- Tensorflow
- Numpy
- Pandas
- Matplotlib
- Seaborn
- Sklearn
Super-resolution GAN applies a deep network in combination with an adversary network to produce higher resolution images. During the training, A high-resolution image (HR) is downsampled to a low-resolution image (LR). A GAN generator upsamples LR images to super-resolution images (SR). We use a discriminator to distinguish the HR images and backpropagate the GAN loss to train the discriminator and the generator.
It uses a perceptual loss function which consists of an adversarial loss and a content loss. The adversarial loss pushes the solution to the natural image manifold using a discriminator network that is trained to differentiate between the super-resolved images and original photo-realistic images. In addition, the authors use a content loss motivated by perceptual similarity instead of similarity in pixel space.
The model has been trained on a sandstone micro-ct image dataset for 30 epochs. The dataset comprises downscaled images of sandstone with the shape of (64,64,3) and upscaled images of (256,256,3). The model used binary cross entropy and mean squared error as a loss function and Adam as the optimizer.
The generator loss was 13.67 discriminator loss for fake images was 0.46 and for real images was 0.98.
In this project, I have implemented and trained SRGAN deep learning model for performing sandtone image upscaling from the resolution of 64x64 to 256x256.