Tag Archives: Deep Learning

Ship or iceberg, can you decide from space?

Statoil/C-CORE Iceberg Classifier Challenge

Quoting the Kaggle website:

“Drifting icebergs present threats to navigation and activities in areas such as offshore of the East Coast of Canada.

Currently, many institutions and companies use aerial reconnaissance and shore-based support to monitor environmental conditions and assess risks from icebergs. However, in remote areas with particularly harsh weather, these methods are not feasible, and the only viable monitoring option is via satellite.

Statoil, an international energy company operating worldwide, has worked closely with companies like C-CORE. C-CORE have been using satellite data for over 30 years and have built a computer vision based surveillance system. To keep operations safe and efficient, Statoil is interested in getting a fresh new perspective on how to use machine learning to more accurately detect and discriminate against threatening icebergs as early as possible.

In this competition, you’re challenged to build an algorithm that automatically identifies if a remotely sensed target is a ship or iceberg. Improvements made will help drive the costs down for maintaining safe working conditions.”

I am fairly new to deep learning and this competition was a fantastic playground to try out a bunch of different approaches, technologies and frameworks. I have tested MXNet, Keras and PyTorch and I have to admit that the ease of use of the latter is just striking, hence I decided to go ahead and experiment entirely with this framework. Here the steps I have followed:

  1. Preparing the dataset to be ingested into a Deep Net pipeline
  2. Fine-tuning a pre-trained DensNet (a very deep CNN)
  3. Repeating step 2 with data augmentation
  4. Repeating step 2 with re-initialization of the learning rate every 6 epochs
  5. Freezing the first 3 layers of the DensNet and re-training only the last 3
  6. Using some data augmentaion on the test set as well. This basically means running the model on different versions of the same image and then averaging probabilities (i.e some sort of ensembling)

I guess next step is to check results out on my Jupyter Notebook!

Have fun!

by Francesco Pochetti