Link: https://www.kaggle.com/c/airbus-ship-detection Data: https://www.kaggle.com/c/airbus-ship-detection/data
- For now IoU score on Public LB = 0.674
- Get rid of corrupted images with size less than 50 kb.
- Use ResNet34 pretrained on ImageNet dataset.
- Use pretrained ResNet34 as encoder, add some new layers as decoder and build U-Net model with it.
- Get rid of images without ships, as dataset is imbalanced (>75% of images has no ships).
- Train UNet on images resized to 384x384 px with simple data augmentation (rotations, shearings, flips and zooms). Loss function = 10 * Focal Loss + Dice Loss. Use 5 epochs of initial training to train only decoder.
- Add 30k images withoud ships, to have still balanced dataset.
- Train UNet once again on images resized to 384x384 px with simple data augmentation (rotations, shearings, flips and zooms). Loss function = 10 * Focal Loss + Dice Loss.
- (Optional) Perform erosion and dilation on each obtained result mask.
- As masks provided by organisators are rectangular. It's worth to try using some simple preprocessing to transform masks obtained from UNet to more "rectangular" shape
- Try more decoder filters
- Try InceptionV3
- Try use BatchNorm in decoder
- Linux
- NVIDIA GPU, Cuda, CudaNN
-
To train own model just create virtualenv, install requirements.txt and use:
python fit.py -mn resnet34_unet_v1 -lr 0.0001
-
To watch some evaluation results, open and run
ship_detection_simple_unet.ipynb