Skip to content

Pre-training for localised tasks on Medical Chest-rays

Notifications You must be signed in to change notification settings

kamranisg/SupCon_Pretrain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pretrain_Chest_X-rays

Pre-training for localised tasks on Medical Chest-rays

About

Self-supervised learning has emerged as a powerful technique to understand non-curated datasets (i.e., without labels). In particular, contrastive learning has shown tremendous transfer learning capability in several downstream tasks such as Classification, segmentation and detection. In addition, we exploit the pre-training downstream. In this report, we evaluate three different scenarios involving pre-training and transfer learning to improve the localisation on chest X-rays in terms of bounding boxes.

Architecture

Stage-1 : Pre-training

Stage-2 : Downstream Training and Evaluation

Setup

1. Enviroment

Use the conda packages

conda env create -f gr2.yaml 

2. Datasets

MIMIC-CXR

RSNA-PNEUMONIA

3. Stage-1 (Pre-training)

Backbone - 1: ImageNet

  • For Backbone - 1 we do not need to pre-train our ResNet architecture, since we are using ResNet pre-trained on ImageNet weights. Skip to Stage-2 training.

Backbone -2: Cross Entropy

  • Run the following script in the terminal

    python main_ce.py 
    --batch_size=64 
    --epochs=100 
    --learning_rate=5e-4
    --size=224
    

Backbone -3: Supervised Contrastive

  • Run the following script in the terminal

    python main_supcon.py 
    --batch_size=64 
    --epochs=100 
    --learning_rate=3e-5 
    

4. Stage-2 (Downstream training and Evalaution)

  • Run the following script in the terminal

    python RSNA_frozen.py 
    --batch_size=64 
    --epochs=100 
    --learning_rate=1e-3
    --backbone="ImageNet"
    --train_folder=<path_to_datasets>/RSNA/CSV/train.csv
    --val_folder=<path_to_datasets>/RSNA/CSV/validation.csv
    

    Additional Hyperparameters: If you wish to use

  • Validation on Only Bounding Boxes

    --val_folder=<path_to_datasets>/RSNA/CSV/dummy.csv
    
  • Backbone trained using Cross Entropy

    First, pick the best model from visualizing the loss functions in tensorboard.

    Try different learning rates, batch sizes, and choose the best epoch. Usually the last epoch works best with lowest validation loss Go to ~/save/SupCon/mimic_cxr_model/<path-to-your-best-checkpoint>

    Next, add the following command to the script (example)

     --checkpoint="~/save/SupCon/mimic_cxr_model/SupCE_mimic_cxr_resnet50_lr_0.0005_decay_1e-06_bsz_64_trial_0/last.pth"
     --backbone="SupCE"
    
  • Backbone trained using Supervised Contrastive loss

    Go to ~/save/SupCon/mimic_cxr_model/<path-to-your-best-checkpoint>

    --checkpoint="~/save/SupCon/mimic_cxr_model/SupCon_mimic_cxr_resnet50_lr_3e-05_decay_1e-06_bsz_64_temp_0.07_trial_0/last.pth"
    --backbone="SupCon"
    

Configurations

Stage-1 (Pre_training) : We have used trained ResNet-50 on 20% training data of MIMIC_CXR

Stage-2 (Downstream Traning and Evaluation):

RSNA_Training_Set = 10% RSNA_Training_Set = 50%
ImageNet + Validation = 20% ImageNet + Validation = 20%
ImageNet + Validation = Only Boxes ImageNet + Validation = Only Boxes
SupCon + Validation = 20% SupCon + Validation = 20%
SupCon + Validation = Only Boxes SupCon + Validation = Only Boxes
Cross_Entropy + Validation = 20% Cross_Entropy + Validation = 20%
Cross_Entropy + Validation = Only_Boxes Cross_Entropy + Validation = Only_Boxes

Results

About

Pre-training for localised tasks on Medical Chest-rays

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published