*Equal contribution. †Corresponding author.
2 Suzhou Institute for Advanced Research, University of Science and Technology of China
3 Stanford University, Palo Alto, CA, 94025, United States
4 Jingsu Provincial Key Laboratory of Multimodal Digital Twin Technology, Suzhou Jiangsu, 215123, China
5 Key Laboratory of Precision and Intelligent Chemistry, USTC, Hefei Anhui, 230026, China
6 Anhui IFLYTEK CO., Ltd.
News 🥰:
- SimCroP is accepted by MICCAI 2025! 🎉
Install Python dependencies:
conda env create -f environment.yml- Download CT-Rate, RadChestCT, CC-CCII, LUNA16, and BTCV dataset.
- Preprocess datasets using preprocess.py, modify the
img_rootandsave_folderas needed.
We have released the code for Pre-training in our approach.
- Download the pre-trained weight of MAE and CXR-BERT
- Update the
bert_checkpointandmae_checkpointin process_checkpoint.py with your local paths. - Download the CSV file for pre-training here and place it under
Pre-training-SimCroP/dataset.
Then, run:
cd Pre-training-SimCroP/data
python preprocess_checkpoint.pycd Pre-training-SimCroP
bash run.shOur pre-trained model weights are available here.
We support linear probing classification and fine-tuning segmentation for downstream tasks.
To evaluate classification performance with linear probing:
CUDA_VISIBLE_DEVICES=0 python train.py --name simcrop --stage train --model vit_base_patch16 --task CT-Rate --num_classes 18 \
--pretrained_path $PATH_TO_SimCroP_CHECKPOINT \
--dataset_path $PATH_TO_CTRATE \
--output_dir "output/CT-Rate/SimCroP/1/" --data_volume '1' --num_steps 6000 --eval_batch_size 48 \
--learning_rate 1.5e-3 --warmup_steps 150 --fp16 --fp16_opt_level O2 --train_batch_size 32 \
--patience 10- Use
--taskto specify the dataset for fine-tuning classification. Supported datasets: CT-Rate, RadChestCT, CC-CCII, and LUNA16. - Use
--data_volumeto control the fraction of training data used.
To evaluate segmentation performance with fine-tuning:
CUDA_VISIBLE_DEVICES=0 python main.py --pretrained_path "../checkpoints/simcrop.pth" --output_dir "./output/LUNA16/simcrop" --out_channels 4 \
--space_x 1.0 --space_y 1.0 --space_z 1.0 --json_path "dataset_10.json" \
--task LUNA16 --data_dir $PATHTOLUNA16 --max_epochs 400 --val_every 20 \
--batch_size 1 --sw_batch_size 1- Use
--taskto set specific dataset for segmentation. Supported datasets: LUNA16 and BTCV. - Use
--data_volumeto control the fraction of training data used.
Some codes are borrowed from ECAMP and UNETR.
If the code, paper and weights help your research, please cite:
@InProceedings{ WanRon_SimCroP_MICCAI2025,
author = { Wang, Rongsheng and Tang, Fenghe and Yao, Qingsong and Yan, Rui and Zhang, Xu and Huang, Zhen and Lai, Haoran and He, Zhiyang and Tao, Xiaodong and Jiang, Zihang and Zhou, S. Kevin },
title = { { SimCroP: Radiograph Representation Learning with Similarity-driven Cross-granularity Pre-training } },
booktitle = {Medical Image Computing and Computer Assisted Intervention -- MICCAI 2025},
year = {2025},
publisher = {Springer Nature Switzerland},
volume = { LNCS 15964 },
month = {October},
pages = { 565 -- 575 },
}
This project is released under the Apache 2.0 license. Please see the LICENSE file for more information.
