Home

Awesome

📄 Devil is in Channels: Contrastive Single Domain Generalization for Medical Image Segmentation ($C^2SDG$)

Paper

<p align="center"><img src="figures/overview.png" width="90%"></p>

Data Preparation

We use the public available RIGA+ dataset for our experiments. You should download the dataset and unzip it.

Dependency Preparation

cd CCSDG
# Python Preparation
virtualenv .env --python=3
source .env/bin/activate
# Install PyTorch, compiling PyTorch on your own workstation is suggested but not needed.
# Follow the instructions on https://pytorch.org/get-started/locally/
pip install torch torchvision torchaudio # or other command to match your CUDA version
# Install CCSDG
pip install -e .

Model Training and Inference

# Path Preparation
export OUTPUT_FOLDER="YOUR OUTPUT FOLDER"
export RIGAPLUS_DATASET_FOLDER="RIGA+ DATASET FOLDER"

# BinRushed as source domain
ccsdg_train --model unet_ccsdg --gpu 0 --tag source_BinRushed \
--log_folder $OUTPUT_FOLDER \
--batch_size 8 \
--initial_lr 0.01 \
-r $RIGAPLUS_DATASET_FOLDER \
--tr_csv $RIGAPLUS_DATASET_FOLDER/BinRushed.csv \
--ts_csv $RIGAPLUS_DATASET_FOLDER/MESSIDOR_Base1.csv \
$RIGAPLUS_DATASET_FOLDER/MESSIDOR_Base2.csv \
$RIGAPLUS_DATASET_FOLDER/MESSIDOR_Base3.csv

# Magrabia as source domain
ccsdg_train --model unet_ccsdg --gpu 0 --tag source_Magrabia \
--log_folder $OUTPUT_FOLDER \
--batch_size 8 \
--initial_lr 0.01 \
-r $RIGAPLUS_DATASET_FOLDER \
--tr_csv $RIGAPLUS_DATASET_FOLDER/Magrabia.csv \
--ts_csv $RIGAPLUS_DATASET_FOLDER/MESSIDOR_Base1.csv \
$RIGAPLUS_DATASET_FOLDER/MESSIDOR_Base2.csv \
$RIGAPLUS_DATASET_FOLDER/MESSIDOR_Base3.csv

Citation ✏️ 📄

If you find this repo useful for your research, please consider citing the paper as follows:

@inproceedings{hu2023devil,
  title={Devil is in Channels: Contrastive Single Domain Generalization for Medical Image Segmentation},
  author={Shishuai Hu and Zehui Liao and Yong Xia},
  booktitle={International Conference on Medical Image Computing and Computer-Assisted Intervention},
  year={2023},
  organization={Springer}
}