/M3-UDA

CVPR M^3-UDA: A New Benchmark for Unsupervised Domain Adaptive Fetal Cardiac Structure Detection

Primary LanguagePython

$M^3$-UDA: A New Benchmark for Unsupervised Domain Adaptive Fetal Cardiac Structure Detection.

🔨 PostScript

  😄 This project is the pytorch implemention of $M^3$-UDA;

  😆 Our experimental platform is configured with One RTX3090 (cuda>=11.0);

  😊 Currently, this code is avaliable for proposed dataset FCS and public dataset CardiacUDA;

      👀 The code is now available at:       ..\data\detus_dataset.py

💻 Installation

  1. You need to build the relevant environment first, please refer to : requirements.yaml

  2. Install Environment:

    conda env create -f requirements.yaml
    
  • We recommend you to use Anaconda to establish an independent virtual environment, and python > = 3.8.3;

📘 Data Preparation

1. FCS dataset

  • This project provides the use case of Unsupervised Domain Adaptive Fetal Cardiac Structure Detection task;

  • The hyper parameters setting of the dataset can be found in the utils/config.py, where you could do the parameters modification;

  • For different tasks, the composition of data sets have significant different, so there is no repetition in this file;

    1. Download & Unzip the dataset.

      The FCS dataset is composed as: /Hospital1 & /Hospital2 & Hospital3.

    2. The source code of loading the FCS dataset exist in path :

      ..\data\fetus_dataset.py
      and modify the dataset path in
      ..\utils/config.py
    3. Set the parameters about GPU_id, source domain,target domain and slice etc in utils/config.py

2. FCS dataset access

  • Dataset access can be obtained by contacting hospital staff (doc.liangbc@gmail.com) and asking for a license.

🐾 Training

  1. In this framework, after the parameters are configured in the file utils/config.py and train.py , you only need to use the command:

    python train.py
  2. You are also able to start distributed training.

    • Note: Please set the number of graphics cards you need and their id in parameter "enable_GPUs_id".
    python -m torch.distributed.launch --nproc_per_node=4 train.py

🐾 Testing

  1. Download the checkpoint in table below.

Experiment Checkpoint
4CC 1->2 4CC1-2
4CC 2->1 4CC2-1
3VT 1->2 3VT1-2
3VT 2->1 3VT2-1

  1. Update the test weight path in config.py.

  2. you only need to use the command:

     python test.py

🐾 citation

@inproceedings{pu2024m3,
  title={M3-UDA: A New Benchmark for Unsupervised Domain Adaptive Fetal Cardiac Structure Detection},
  author={Pu, Bin and Wang, Liwen and Yang, Jiewen and He, Guannan and Dong, Xingbo and Li, Shengli and Tan, Ying and Chen, Ming and Jin, Zhe and Li, Kenli and others},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={11621--11630},
  year={2024}
}
🚀 Code Reference