README.md

June 21, 2024 · View on GitHub

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

:hammer: PostScript

  :smile: This project is the pytorch implemention of M3M^3-UDA;

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

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

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

      :eyes: The dataset is coming soon.:

:computer: 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;

:blue_book: 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.

:feet: 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
    

:feet: Testing

  1. Download the checkpoint in table below.

ExperimentCheckpoint
4CC 1->24CC1-2
4CC 2->14CC2-1
3VT 1->23VT1-2
3VT 2->13VT2-1

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

:feet: 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}
}
:rocket: Code Reference