This solution was the result of the combined efforts of @koleshjr and I.
Our solution consists of a two stage approach: object detection to detect buildings in pre-disaster images and image classification, comparing patches and pre- and post-disaster images. The classification part makes use of ASDI datasets.
Combine tier1 and tier3 images and labels into a common directory and convert the provided *.tif files to *.png.
Train Yolo11l model on pre-disaster images only from the tier1 and tier3 xview2 dataset. We used "test" as validation data.
The aim here is to train a model that is able to detect buldings in an image. This is a single class detection problem. The model is trained for 60 epochs with an image resolution of 800x800 and achieved an F1 score of 0.72.
Inference was done at a resolution of `(928, 448)` using WBF ensemble to eliminate duplicate detections, etc... Essentially, inference is done on pre-disaster images only and then coordinates of found buildings are used to create crops in pre- and post-disaster images.
- The first step is to extract pairs of pre- and post-disaster buildings using the yolo model - done on the training xview2 data for training the classifier and on test (Malawi) images.
- Next, we generate NDVI metrics from downloaded ASDI datasets.
- We then train a classifier for different classes. We found that training classifiers for `minor_damage` and `major_damage` were not accurate enough with AUC scores of ~0.8, and the vast distribution shift between xview2 and test data. We therefore only considered a classifier for the `destroyed` class which had an AUC score of ~0.93 in training. We used a Siamese neural network where the pre- and post-disaster images share the same weights. We used `efficientvit_b0.r224_in1k` from `timm` as the backbone.
We use the "destroyed" building classifier to check whether the building has been destroyed, otherwise we classify the build as "no damage". We essentially use crops generated from the yolo inference stage to feed the classifier and generate the submission *.csv file.