So the competition ended and unfortunately I could not train a good model in time.
Here are the things I could have done to get a better leaderboard score:
Do smaller experiments to observe what hyperparameters and other options work best
Visualize predictions on validation set
Use automatic mixed precision training to allow for larger batch sizes
This would make the batch normalization layer more accurate and training easier
Start with pre-trained models as a base
Read up on discussions and what was working for other people
Use open source packages for instance segmentation
Use an ensemble of different models
Here are some things I wanted to try but are unsure would help:
More/less aggressive data augmentation
Self-supervised learning on all of the training images
Use a better single model (apparently UNet is for semantic segmentation and not instance segmentation)
Post-processing (which I did) allows for its use as a instance segmentation model but maybe this wasn't the best choice
Here are some mistakes that I made:
Training for too long (each run was about 12 hours)
Eating up my GPU budget on Kaggle (limit is 30 hrs/week)
Here are some things I am confused about:
Training was fairly unstable in terms of training and validation loss
I am thinking maybe the low batch size of 9 is to blame?
I was limited by Kaggle's GPU memory on this but could try automatic mixed precision (AMP) training
Why didn't more people use UNet as their architecture?
Why did my leaderboard score improve so much after the competition closed?
And finally, here are some things I learned so far:
How the mean average precision (mAP) metric works for instance segmentation
How to architect, build, and release a deep learning project that is easy to maintain
How to build, train, and evaluate instance segmentation models on a small amount of data
Some anatomy of the kidney
In sum, this was a fun project to work on and I am eager to continue trying things with it. I would like to try all of the items from the first and second sections above. I will add them as Issues to this project and work on them over the next few weeks/months.
So the competition ended and unfortunately I could not train a good model in time.
Here are the things I could have done to get a better leaderboard score:
Here are some things I wanted to try but are unsure would help:
Here are some mistakes that I made:
Here are some things I am confused about:
And finally, here are some things I learned so far:
In sum, this was a fun project to work on and I am eager to continue trying things with it. I would like to try all of the items from the first and second sections above. I will add them as Issues to this project and work on them over the next few weeks/months.