Over the last three months, I have participated in the Airbus Ship Detection Kaggle challenge. As evident from the title, it is a detection computer vision (segmentation to be more precise) competition proposed by Airbus (its satellite data division) that consists in detecting ships in satellite images.
Before I start this challenge, I was (and somehow still) a beginner in the domain of segmentation. I have good grasp of “classical” machine learning (gradient boosting trees, linear models, and the likes) and have used it in production but deep learning was still a new thing for me.
Previously, I have written a series of blog posts explaining and implementing CNNs using Keras (check it here) and taken the great Coursera deep learning track series. However, I felt that what I have learned lacked practical applications. In fact, despite some guided projects, the course alone won’t help you develop “real-world” skills.
So, what to do about that?
I started looking for “real-world” applications and so, around March 2018, I came across the Data Science Bowl 2018 Kaggle challenge. The competition consists in detecting cells’ nuclei. Similarly to the Airbus challenge, it was an instance segmentation task.
When I found out about this challenge, it was nearing its end (the competition was over by the 16th of April 2018). So, I followed some of the discussions, read and explored some of the models, learned a lot about segmentation using the U-Net model (and its variations), but didn’t have time to participate.
Thus, when the Airbus challenge came, I was more excited and set the following goal for myself: train a segmentation model and make at least one submission from it.
Have I achieved my goal?
Yes, I did and probably a lot more (you can decide by yourself once you read this post).
Overall, the process was enjoyable (most of the time at least) and I have gained a lot of practical knowledge. In what follows, I will share with you some of the lessons that I have learned (in no particular order).
Let’s get started.