-
Save model
-
Cyclical LR
-
Tensorboard logging
-
Calc multiple dices with different threshold per batch
-
Crossvalidation (support simultaneous training and validation for all folds)
-
Warmstart lr, 1cycle policy
-
Training on random crops, testing on full resolution
-
Lovasz loss
-
AdamW
-
Evaluate model perfomance (incapsulated fn in separate file)
-
Submission creation code
-
DataParallel training
-
Hyperparameter search
-
Integrate AMP
Geometric mean of probabilities thresholded by mean mask and class thresold is a bad idea Best of all is median of pixels thresolded by mean thresholds
This task should be separated to two different tasks:
- Classification - has pneumotorax or not
- If has - Predict semantic label map
This can be solved with single model by applying semantic label map loss only if sample has mask
Loss proposals:
- OHEM but for each gt mask pixels separately. min_keep is num of elements for class with min pixels per batch.
- OHEM normalized to have same magnitude as default loss
Improvement proposals:
- Harder augmentations
- Dropout2d(0.1) after scales merge (0.2 too)
- Dropout for classificator (looks like it not hurts perfomance but slows down training, may improve final perfomance)
- UNet++
- Classic OHEM loss with threshold 0.7 and small min_keep value around 0.1-0.01
- Group norm (SUCCESS with g=8 but without pretrained model trains very slowly)
- Upsampling instead of transposed conv (SUCCESS)
- Medium augmentations (SUCCESS have to train one more epochs round)
- Lovasz
- Log Dice loss
- Boundary F1 Loss
- IC layer (Relu BN Dropout Conv) (FAILURE)
- Take not sum but mean of mask bce and dice losses
- [Use without experiment] SWA
- Relu for resnet features
- Image normalization (as for imagenet)
What should I use in my model:
- Dropout2d(0.1) after concatenation with lower level features
- Upsampling with bilinear interpolation
- SWA
- No Relu for backbone resnet outputs
- Log dice with gamma=0.3