This team project's goal was to perform multiclass change detection on aerial satellite images. The model performs segmentation, identifying different types of changes including reconstruction, renewal, and demolition.
The project was mainly implemented by using change_detection.pytorch
Our team experimented multiple methods to solve the problem.
- Filtering insignificant images(excluding images without change) during data preprocessing for training
- One hot encoding
- Various albumentations (cropping, gaussian blur etc.)
- Using shadow removal libraries
- Using different losses(Jaccard Loss, Dice Loss, Jaccard Loss + Dice Loss, Cross Entropy Loss etc.)
- Using different LR Schedulers (CosineAnnealing LR, Step LR)
- Increasing the batch size
In conclusion, 1, 2, 3, 5, and 7 seemed to give meaningful effect on the result of this project. Filtering images allowed the model to be trained on meaningful datasets. One hot encoding increased the accuracy by allowing the model to decipher demolition and renewal. Various albumentation prevented the model from being overtrained on particular set of images. Hybrid loss increased the accuracy by 0.1~0.5%. Batch size seems to be the most significant factor.
-
Our team could have improved the accuracy and implementation if we have used SDACD It resolves the problem related to shadow and error created by time-varying land cover changes. The link for research paper is here
-
Automatic Mixed Precision allows GPU acceleration, increasing the limit of available batch size for training.