Learning Notes from Planet Competition

Ceshine Lee
Jul 21, 2017 · 2 min read

Full name of the competition: Planet: Understanding the Amazon from Space — Use satellite data to track the human footprint in the Amazon rain forest

Image Credit: Alexey Noskov from this discussion thread

I started participating in this competition pretty late, essentially not until the last week. As a result I gave up using tiff images (instead using the pre-processed jpeg images), and focused on practicing building a image classification pipeline.

It was quite frustrating that my result keeps falling short of beating the best public scripts (I did get on par, and even a little better with the scripts in the end). The biggest problem I cannot figure out is when I use higher resolution (256x256 and 224x224) images, the increase in training time does not accompany with a increase in accuracy. In the end, my best submission comes from a model based on 128x128 images. It’s weird because the pre-trained model I used (VGG16 and Resnet50) should work better with 224x224 images. My guess is that I didn’t manage the learning rate well. I’ll update the post if later I somehow figured it out.

The two highlights of the learning experiences are:

  1. Bcolz Array Iterator: I used the implementation by the wonderful Jeremy Howard. My RAM cannot fit all the 224x224 training/testing images, so I have to either read and resize images batch-by-batch, or store the resized images inside a bcolz.carray and read them when I need them.
  2. Cyclical Learning Rate: The implementation I used also comes from Jeremy Howard’s class, written by Brad Kenstler. It’s a really simple idea to change learning rate at every batch, and in Keras it’s really simple to do. The implementation comes with three built-in modes: triangle, traingle2, exp_range. I tried all of them and used exp_range with gamma=0.9999 in my final submission.

I plan to update this post periodically until I finished reviewing this competition.

Update on 2018/01/23: I’ve found the cause of under-performance a while ago. It was a stupid bug which led to only a small portion of the parameters were updated at each step. Using JPEG files is actually enough to achieve top-level performance. I had also done some more experiments on this dataset and planed to write a independent post on the results, but I never find the time to write it.


Towards human-centered AI. https://veritable.pw

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store