/UnetResnet-Pytorch

UnetResnet built from scratch in Pytorch to perform sUAV images segmentation

Primary LanguageJupyter Notebook

UnetResnet for sUAV Image Segmentation (Pytorch)

Context

A Kaggle competition was held at CentraleSupélec between teams of students; the goal was to provide the best algorithm possible to reach highest accuracy (computed with the Dice coefficient) while segmenting images taken from small UAVs.

We had toimplement and solve a remote sensing problem using recent deep learning techniques. In particular, the main objective of this challenge is to segment images acquired by a small UAV (sUAV) at the area on Houston, Texas. These images were acquired in order to assess the damages on residential and public properties after Hurricane Harvey. In total there are 25 categories of segments (e.g. roof, trees, pools etc.).

The task was to design and implement a deep learning model in order to perform the automatic segmentation of such images. The model could be trained using the train images which contain pixel-wise annotations. Using the trained model, a prediction on the test images had to be performed and submitted on the platform. Depending on the performance of the submitted file and the leaderboard you would be ranked accordingly using macro F1 score.

Following classes are present in the dataset.

  1. Background
  2. Property Roof
  3. Secondary Structure
  4. Swimming Pool
  5. Vehicle
  6. Grass
  7. Trees / Shrubs
  8. Solar Panels
  9. Chimney
  10. Street Light
  11. Window
  12. Satellite Antenna
  13. Garbage Bins
  14. Trampoline
  15. Road/Highway
  16. Under Construction / In Progress Status
  17. Power Lines & Cables
  18. Water Tank / Oil Tank
  19. Parking Area - Commercial
  20. Sports Complex / Arena
  21. Industrial Site
  22. Dense Vegetation / Forest
  23. Water Body
  24. Flooded
  25. Boat

Model

The model architecture used was based on the following architecture.

Unet Resnet

Results

Model achieved 71% accuracy on a train dataset of ~250 images, without using any pre-trained ResNet network inside the Unet network.

The "accuracy" was computed accordingly to the Sørensen-Dice Coefficient. $$Dice = \frac{2 \mid A \cap B \mid}{\mid A \mid + \mid B \mid}$$