- Notifications
You must be signed in to change notification settings - Fork84
License
282857341/nnFormer
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
At 2022/02/11, we rebuilt the code of nnFormer to match the performance reported in the latestdraft. The results produced by new codes are more stable and thus easier to reproduce!
At 2022/02/26, we add seed in the file nnformer/run_training.py and set torch.backends.cudnn.benchmark and torch.backends.cudnn.enabled as true to improve efficiency.
We run nnFormer on a system running Ubuntu 18.01, with Python 3.6, PyTorch 1.8.1, and CUDA 10.1. For a full list of software packages and version numbers, see the Conda environment fileenvironment.yml
.
This software leverages graphical processing units (GPUs) to accelerate neural network training and evaluation. Thus, systems lacking a suitable GPU would likely take an extremely long time to train or evaluate models. The software was tested with the NVIDIA RTX 2080 TI GPU, though we anticipate that other GPUs will also work, provided that the unit offers sufficient memory.
We recommend installation of the required packages using the conda package manager, available through the Anaconda Python distribution. Anaconda is available free of charge for non-commercial use throughAnaconda Inc. After installing Anaconda and cloning this repository, For use as integrative framework:
git clone https://github.com/282857341/nnFormer.gitcd nnFormerconda env create -f environment.ymlsource activate nnFormerpip install -e .
For evaluation:
nnFormer/nnformer/inference_acdc.py
nnFormer/nnformer/inference_synapse.py
nnFormer/nnformer/inference_tumor.py
Data split:
nnFormer/nnformer/dataset_json/
For inference:
nnFormer/nnformer/inference/predict_simple.py
Network architecture:
nnFormer/nnformer/network_architecture/nnFormer_acdc.py
nnFormer/nnformer/network_architecture/nnFormer_synapse.py.py
nnFormer/nnformer/network_architecture/nnFormer_tumor.py.py
For training:
nnFormer/nnformer/run/run_training.py
Trainer for dataset:
nnFormer/nnformer/training/network_training/nnFormerTrainerV2_nnformer_acdc.py
nnFormer/nnformer/training/network_training/nnFormerTrainerV2_nnformer_synapse.py.py
nnFormer/nnformer/training/network_training/nnFormerTrainerV2_nnformer_tumor.py.py
Datasets can be acquired via following links:
Dataset IACDC
Dataset IIThe Synapse multi-organ CT dataset
Dataset IIIBrain_tumor
The splits of all three datasets are available innnFormer/nnformer/dataset_json/
.
After you have downloaded the datasets, you can follow the settings innnUNet for path configurations and preprocessing procedures. Finally, your folders should be organized as follows:
./Pretrained_weight/./nnFormer/./DATASET/ ├── nnFormer_raw/ ├── nnFormer_raw_data/ ├── Task01_ACDC/ ├── imagesTr/ ├── imagesTs/ ├── labelsTr/ ├── labelsTs/ ├── dataset.json ├── Task02_Synapse/ ├── imagesTr/ ├── imagesTs/ ├── labelsTr/ ├── labelsTs/ ├── dataset.json ├── Task03_tumor/ ├── imagesTr/ ├── imagesTs/ ├── labelsTr/ ├── labelsTs/ ├── dataset.json ├── nnFormer_cropped_data/ ├── nnFormer_trained_models/ ├── nnFormer_preprocessed/
You can refer tonnFormer/nnformer/dataset_json/
for data split.
After that, you can preprocess the above data using following commands:
nnFormer_convert_decathlon_task -i ../DATASET/nnFormer_raw/nnFormer_raw_data/Task01_ACDCnnFormer_convert_decathlon_task -i ../DATASET/nnFormer_raw/nnFormer_raw_data/Task02_SynapsennFormer_convert_decathlon_task -i ../DATASET/nnFormer_raw/nnFormer_raw_data/Task03_tumornnFormer_plan_and_preprocess -t 1nnFormer_plan_and_preprocess -t 2nnFormer_plan_and_preprocess -t 3
- Commands for training and testing:
bash train_inference.sh -c 0 -n nnformer_acdc -t 1 #-c stands for the index of your cuda device#-n denotes the suffix of the trainer located at nnFormer/nnformer/training/network_training/#-t denotes the task index
If you want use your own data, please create a new trainer file in the pathnnformer/training/network_training
and make sure the class name in the trainer file is the same as the trainer file. Some hyperparameters could be adjust in the trainer file, but the batch size and crop size should be adjust in the filennformer/run/default_configuration.py
.
- You can download our pretrained model weights via thislink. Then, you can put model weights and their associated files in corresponding directories. For instance, on ACDC dataset, they should be like this:
../DATASET/nnFormer_trained_models/nnFormer/3d_fullres/Task001_ACDC/nnFormerTrainerV2_nnformer_acdc__nnFormerPlansv2.1/fold_0/model_best.model../DATASET/nnFormer_trained_models/nnFormer/3d_fullres/Task001_ACDC/nnFormerTrainerV2_nnformer_acdc__nnFormerPlansv2.1/fold_0/model_best.model.pkl
You can download the visualization results of nnFormer, nnUNet and UNETR from thislink.
input feature has wrong size
If you encounter this problem during your implementation, please check the code innnFormer/nnformer/run/default_configuration.py
. I have set independent crop size (i.e., patch size) for each dataset. You may need to modify the crop size based on your own need.