The solution for the Carvana Image Masking Challenge on Kaggle. It uses a custom version of RefineNet with Squeeze-and-Excitation modules implemented in PyTorch. It was a part of the final ensemble that was ranked 23 out of 735 teams (top 4%).
The goal of the Carvana Image Masking Challenge was to develop an algorithm that removes a background from a wide variety of car photos. Here you can see predictions from a trained neural network for 16 images of a single car.
RefineNet is a convolutional neural network developed for semantic segmentation. For more details see "RefineNet: Multi-Path Refinement Networks with Identity Mappings for High-Resolution Semantic Segmentation" by Guosheng Lin, Anton Milan, Chunhua Shen and Ian Reid.
As described in the original paper, Squeeze-and-Excitation blocks "adaptively recalibrate channel-wise feature responses by explicitly modelling interdependencies between channels. These blocks were foundation of ILSVRC 2017 classification submission which won first place and achieved a ∼25% relative improvement over the winning entry of 2016." For more details see "Squeeze-and-Excitation Networks" by Jie Hu, Li Shen and Gang Sun.
My version of RefineNet based on this PyTorch implementation of the original paper by Thomas Fan.
- Python 3.6
- PyTorch 0.2
- TensorBoard or Crayon server
- Libraries from requirements.txt
- Adjust config variables in config.py
- Execute run.sh file