Super-Resolution of Digital Elevation Models using Adverserially Trained U-Net based Convolutional Residual Network with Attention.
This repository contains the code and notebooks for the project that competed at the Grand Finale of Smart India Hackathon 2022 for Department of Space, Indian Space Research Organisation (ISRO)'s probelm statement on Super-Resolution of Digital Elevation Models (SS600). The project was developed by team sCUDA_Divers from Jamia Millia Islamia, New Delhi.
- Mohammed Abbas Ansari (Team Leader)
- Mohammed Azhan (Team Mentor)
- Uzma Firoz Khan
- Mohammad Kashif
- Md Haider Zama
- Saquib Ali
- Mohammad Aatir Nadim
Dataset was created by taking DEMs captured by USGS's LiDAR, NASA's ASTER and ISRO's CartoSAT at multiple resolutions of varying terrains.
The dataset was then split into training and validation sets. The training set was used to train the model and the validation set was used to evaluate the model. The model was trained for 500 epochs with a batch size of 4. The model was trained on Google Colab's GPU.
Training data was created by considering the captured DEMs as the ground truth and the downsampled versions of the same DEMs as the input. The downsampled versions were created by using the bilinear interpolation method. The downsampled versions were then passed through the model to generate the super-resolved versions of the same DEMs. The super-resolved versions were then compared with the ground truth to evaluate the model.
The model architecture used for this project is a combination of the U-Net and ResNet architectures. ResNet blocks were used in both the encoder and decoder part of the U-Net. Efficient Attention was used after each ResNet block in the encoder. Channel and Spatial Attention is used after each ResNet block in the decoder. The output image is two times larger the input image. The model was trained using the Adversarial Loss to improve the quality of the super-resolved images. A combination of L1 Loss, SSIM Loss and Edge Loss was used to train the model.
Edge loss is computed using the Sobel Edge Detector. The Sobel Edge Detector is used to detect the edges in the ground truth and the super-resolved images. The edge loss is then computed by taking the difference between the edges detected in the ground truth and the super-resolved images.
The model was able to generate super-resolved images of high quality. The results are shown below.
SuperResolution of a 90m DEM to a 30 m DEM:
Network-Defintion-Training.ipynb contains the code for training the model. You can run the notebook on Google Colab, but may need to curate the dataset yourself. Dataset and replicating code is not yet released since research work is still underway.