Post

Post-Disaster Damage Assessment with CNN

GitHub Repository

This project is still under development.

Exploratory Data Analysis (EDA)

The dataset is obtained from xBD: A Dataset for Assessing Building Damage from Satellite Imagery. arXiv

These data contains satellite imagery datasets around the world taken by various satellites.

xBD provides pre- and post-event multi-band satellite imagery from a variety of disaster events with building polygons, classification labels for damage types, ordinal labels of damage level, and corresponding satellite metadata. Furthermore, the dataset contains bounding boxes and labels for environmental factors such as fire, water, and smoke. xBD will be the largest building damage assessment dataset to date, containing ∼700,000 building annotations across over 5,000 km2 of imagery from 15 countries.

Reference:

Gupta, R., Hosfelt, R., Sajeev, S., Patel, N., Goodman, B., Doshi, J., Heim, E., Choset, H., & Gaston, M. (2019, November 21). xBD: A Dataset for Assessing Building Damage from Satellite Imagery.

Data Preparation

The data is being labeled semi-manually and split into training, validation and testing. Holdout test set will also be added if needed later after evaluating the model performance

1
2
3
4
5
6
7
8
9
10
data/
├── train/
│   ├── visible_damage/
│   └── no_damage/
├── validation/
│   ├── visible_damage/
│   └── no_damage/
└── test/
    ├── visible_damage/
    └── no_damage/

Compare “No damage” and “Visible Damage” Images

Displaying different images before and after the earthquake and check how the affected area look by using the widget to look at different image equals. This is helful for Disaster Management Project even though the model does not specifically need this.

The Image Num parameter corresponds to the index number of each image in the no_damage training directory.

Pre Post Disaster Comparing “No damage” and “Visible Damage” labelled images

1
2
3
4
5
6
7
8
9
10
dataset = 'test'
# Match images in the no damage and damage dataset based on the location coordinates in the file name
matches = list(set(metadata.query(f'subset == "{dataset}" & label == "visible_damage"')['filename'])
               .intersection(metadata.query(f'subset == "{dataset}" & label == "no_damage"')['filename']))

# Load index slider to navigate between the paired images
file_index_widget = widgets.IntSlider(min=0, max=len(matches)-1, value=0, description='Image Num')

# Load visualizer to match paired images
interact(utils.interactive_plot_pair(f'../../data/{dataset}/', matches), file_index=file_index_widget);

Leaflet Locator

Leaflet locator is used to locate the coordinate using metadata latitude and longitude for each image so it might be helpful for related disaster volunteer to assess priority aid distribution/activity

Leaflet Folium is used to visualize

Leaflet Folium Geolocator using leaflet folium

Detailed Leaflet Locating specific pin

This post is licensed under CC BY 4.0 by the author.