This repo holds the Pytorch implementation of MedIM:
[MICCAI2023] MedIM: Boost Medical Image Representation via Radiology Report-guided Masking
[Medical Image Analysis] Rethinking Masked Image Modeling for Medical Image Representation
Python 3.10
Torch==1.13.1
Torchvision==0.14.1
CUDA 11.6
- Create a new conda environment
conda create --name medim python=3.10
source activate medim
- Clone this repo
git clone https://github.com/YtongXie/MedIM.git
cd MedIM
pip install -e .
- Install packages for MedIM
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
cd /medim/models/medim/pytorch-cosine-annealing-with-warmup
python setup.py install
- MIMIC-CXR: downloaded images from MIMIC-CXR-JPG and paired medical reports from MIMIC-CXR. Both need to be a credentialed user for downloading.
-
CheXpert: downloaded the CheXpert dataset.
-
VinDr-CXR: downloaded the VinDr dataset.
-
COVIDx: downloaded the COVIDx dataset.
-
SIIM: downloaded the SIIM dataset.
After downloading datasets, please check if the path in medim/constants.py
is correct.
Preprocesseding these datasets and split the dataset into train/val/test set using the code in medim/preprocess
.
cd data/mesh
- Run
python MeSH_pickle_train.py
python MeSH_pickle_valid.py
for generating captions_train_MeSH.pickle
and captions_valid_MeSH.pickle
.
cd /medim/models/medim
- Run
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python medim_train.py --gpus 8 --epochs 50 --outpath MedIM --strategy ddp
for MedIM pre-training.
- We evlauate the performance of MedIM framework on five downstream tasks: classification and semantic segmentation.
CUDA_VISIBLE_DEVICES=0 python medim_finetuner.py --gpus 1 --dataset chexpert5 --batch_size 512 --accumulate 8 --path MedIM/last.ckpt --outdir Cls_chexpert5 --outpath MedIM_1 --data_pct 1
CUDA_VISIBLE_DEVICES=0 python medim_finetuner.py --gpus 1 --dataset chexpert14 --batch_size 512 --accumulate 8 --path MedIM/last.ckpt --outdir Cls_chexpert14 --outpath MedIM_1 --data_pct 1
CUDA_VISIBLE_DEVICES=0 python medim_finetuner.py --gpus 1 --dataset covidx --batch_size 96 --path MedIM/last.ckpt --outdir Cls_covidx --outpath MedIM_1 --data_pct 1
CUDA_VISIBLE_DEVICES=0 python medim_finetuner.py --gpus 1 --dataset vindr --batch_size 512 --path MedIM/last.ckpt --outdir Cls_vindr --outpath MedIM_1 --data_pct 1
CUDA_VISIBLE_DEVICES=0 python medim_segmenter.py --gpus 1 --dataset siim --batch_size 32 --ckpt_path MedIM/last.ckpt --outdir Seg_siim --outpath MedIM_1 --data_pct 1 --seed 123
Part of codes is reused from the MGCA. Thanks to Fuying et al. for the codes of MGCA.
If this code is helpful for your study, please cite:
@inproceedings{xie2023medim,
title={Medim: Boost medical image representation via radiology report-guided masking},
author={Xie, Yutong and Gu, Lin and Harada, Tatsuya and Zhang, Jianpeng and Xia, Yong and Wu, Qi},
booktitle={International Conference on Medical Image Computing and Computer-Assisted Intervention},
pages={13--23},
year={2023},
organization={Springer}
}
@article{xie2024rethinking,
title={Rethinking masked image modeling for medical image representation},
author={Xie, Yutong and Gu, Lin and Harada, Tatsuya and Zhang, Jianpeng and Xia, Yong and Wu, Qi},
journal={Medical Image Analysis},
pages={103304},
year={2024},
publisher={Elsevier}
}
Yutong Xie (yutong.xie678@gmail.com)