Low Resolution Image & Detection |
Super Resolved Image & Detection |
High Resolution Ground Truth Image & Bounding Box |
---|---|---|
- Python 3 (Recommend to use Anaconda)
- PyTorch >= 1.0
- NVIDIA GPU + CUDA
- Python packages:
pip install -r path/to/requirement.txt
python train.py -c config_GAN.json
python test.py -c config_GAN.json
Download dataset from here. Here is a GitHub repo to create custom image patches. Download pre-made dataset from here and this script can be used with pre-made dataset to create high/low-resolution and bicubic images. Make sure to copy annotation files (.txt) in the HR, LR and Bic folder.
The directory of the following JSON file is needed to be changed according to the user directory. For details see config_GAN.json and pretrained weights are uploaded in google drive
{
"data_loader": {
"type": "COWCGANFrcnnDataLoader",
"args":{
"data_dir_GT": "/Directory for High-Resolution Ground Truth images/",
"data_dir_LQ": "/Directory for 4x downsampled Low-Resolution images from the above High-Resolution images/"
}
},
"path": {
"models": "saved/save_your_model_in_this_directory/",
"pretrain_model_G": "Pretrained_model_path_for_train_test/170000_G.pth",
"pretrain_model_D": "Pretrained_model_path_for_train_test/170000_G.pth",
"pretrain_model_FRCNN": "Pretrained_model_path_for_train_test/170000_G.pth",
"data_dir_Valid": "/Low_resoluton_test_validation_image_directory/"
"Test_Result_SR": "Directory_to_store_test_results/"
}
}
Find the published version on Remote Sensing.
Find the preprints of the related paper on preprints.org, arxiv.org and researchgate.net.
The detection performance of small objects in remote sensing images has not been satisfactory compared to large objects, especially in low-resolution and noisy images. A generative adversarial network (GAN)-based model called enhanced super-resolution GAN (ESRGAN) showed remarkable image enhancement performance, but reconstructed images usually miss high-frequency edge information. Therefore, object detection performance showed degradation for small objects on recovered noisy and low-resolution remote sensing images. Inspired by the success of edge enhanced GAN (EEGAN) and ESRGAN, we applied a new edge-enhanced super-resolution GAN (EESRGAN) to improve the quality of remote sensing images and used different detector networks in an end-to-end manner where detector loss was backpropagated into the EESRGAN to improve the detection performance. We proposed an architecture with three components: ESRGAN, EEN, and Detection network. We used residual-in-residual dense blocks (RRDB) for both the ESRGAN and EEN, and for the detector network, we used a faster region-based convolutional network (FRCNN) (two-stage detector) and a single-shot multibox detector (SSD) (one stage detector). Extensive experiments on a public (car overhead with context) dataset and another self-assembled (oil and gas storage tank) satellite dataset showed superior performance of our method compared to the standalone state-of-the-art object detectors.
object detection; faster region-based convolutional neural network (FRCNN); single-shot multibox detector (SSD); super-resolution; remote sensing imagery; edge enhancement; satellites
Some code segments are based on ESRGAN
@article{rabbi2020small,
title={Small-Object Detection in Remote Sensing Images with End-to-End Edge-Enhanced GAN and Object Detector Network},
author={Rabbi, Jakaria and Ray, Nilanjan and Schubert, Matthias and Chowdhury, Subir and Chao, Dennis},
journal={Remote Sensing},
volume={12},
number={9},
pages={1432},
year={2020}
publisher={Multidisciplinary Digital Publishing Institute}
}
Rabbi, Jakaria; Ray, Nilanjan; Schubert, Matthias; Chowdhury, Subir; Chao, Dennis. 2020. "Small-Object Detection in Remote Sensing Images with End-to-End Edge-Enhanced GAN and Object Detector Network." Remote Sens. 12, no. 9: 1432.
- Refactor and clean the code.
- Add more command line option for training and testing to run different configuration.
- Fix bug and write important tests.