Top 5% solution (56/1345) based on an initial model developed by appian42
- Python 3.6.6
- Pytorch 1.1.0
- NVIDIA apex 0.1 (for mixed precision training)
Backbone | Image size |
---|---|
se_resnext50_32x4d | 512x512 |
For this challenge, windowing is important to focus on the matter, in this case the brain and the blood. There are good kernels explaining how windowing works.
- See like a Radiologist with Systematic Windowing by David Tang
- RSNA IH Detection - EDA by Allunia
We used three types of windows to focus and assigned them to each of the chennel to construct images on the fly for training.
Channel | Matter | Window Center | Window Width |
---|---|---|---|
0 | Brain | 40 | 80 |
1 | Blood/Subdural | 80 | 200 |
2 | Soft tissues | 40 | 380 |
Please put ./input
directory in the root level and unzip the file downloaded from kaggle there. All other directories such as ./cache
, ./data
, ./model
will be created if needed when ./bin/preprocess.sh
is run.
Please make sure you run the script from parent directory of ./bin
.
$ sh ./bin/preprocess.sh
preprocess.sh does the following at once.
- dicom_to_dataframe.py reads dicom files and save its metadata into the dataframe.
- create_dataset.py creates a dataset for training.
- make_folds.py makes folds for cross validation.
$ sh ./bin/train001.sh
train.001.sh uses se_resnext50_32x4d from pretrained-models.pytorch for training. One epoch probably takes 20,000 seconds to train with a single 1080ti.
$ sh ./bin/predict001.sh
-
predict001.sh does the predictions and makes a submission file for scoring on Kaggle. Please uncomment the last line if you want to automatically submit it to kaggle through API.
-
Final score is an ensemble average of 10 model predictions based on 3rd and 4th epochs from 5 folds with clip=0.98