# 58th Place Solution (My first write-up!)

Overview
First, thanks to Google Research for hosting an interesting and well-organized competition. I am always happy to try and build solutions that help reduce our environmental impact. Second, thanks to everyone who participated and shared ideas throughout this competition. I always learn a lot from the code and discussion tabs.
My solution is an ensemble of Unet models with Timm backbones. The optimal threshold for each model was tuned using an out-of-fold validation set. No augmentation was applied to the images during training.
![Ensemble Image](assets/8152401c39328e6353227394.png)
In order of highest to lowest validation dice scores, the backbones I used were maxxvitv2_rmlp_base_rw_384, resnest269, maxvit_base_tf_512, and mit_b4. I also used stochastic weight averaging on the last 5 epochs of training for the maxvit models, and no SWA for the other models. All of my experiments were done on small models and image sizes so that I could experiment quickly. I only scaled up the image sizes and model parameters in the last week of the competition for the final submission.
Please leave any criticisms/suggestions/questions. The more the better :)
Other Attempts
Each item on this list either did not improve performance or was too computationally expensive for me to pursue.
Losses: Tversky, LogCoshDice, BCE
Downsampling/Upsampling Interpolation Methods
Removing Islands
Openmmlab (struggled to get this working)
Deep supervision
MANet, Unet++, Unet+++, and others..
Frameworks
Models:
[segmentation_models.pytorch](https://github.com/qubvel/segmentation_models.pytorch)
,
[Timm](https://github.com/huggingface/pytorch-image-models/tree/main/timm)
Training:
[Lightning-AI](https://github.com/Lightning-AI/lightning)
Logging:
[WandB](https://wandb.ai/)
Finally, congrats to
[@tascj0](https://www.kaggle.com/tascj0)
for 1 submission gold. Very impressive!