Code for paper "Lymphoma segmentation from 3D PET-CT images using a deep evidential network"
Abstract: A reasonable and reliable quantification of segmentation uncertainty is important to optimize the segmentation framework and further improve performance. In this work, an automatic evidential segmentation model based on BFT and deep learning is proposed to segment lymphomas from 3D PET-CT images, which not only focuses on lymphoma segmentation accuracy but also on uncertainty quantification using belief functions.
This repo contains the supported pytorch code and configuration files to reproduce 3D lymphoma segmentaion results of ENN-UNet and RBF-UNet.
Prepare an python environment with python=3.7, and then run the command "pip install -r requirements.txt" for the dependencies.
Copy the models from ./models into ./monai/networks/net
-
We use 3D PET-CT LYMPHOMA dataset to test our model.
-
Users can prepare their own dataset and organize their data according to the following file structure.
-
File structure
LYMPHOMA |---Data | |--- ct | | |--- AA001ct.nii... | |--- pet | | |--- AA001pet.nii... | |--- pet_mask | | |--- AA001mask.nii... ES-UNet |---ENN-UNET | |---TRAINING-ENN.py | |---TRAINING-ENN_step1.py | |---TRAINING-ENN_step2.py |---RBF-UNET | |---TRAINING-RBF.py | |---TRAINING-RBF_step1.py | |---TRAINING-RBF_step2.py |---pretrained_model |---saved_model ...
- UNET: The pre-trained baseline model UNet is put in ./pre-trained_model/best_metric_model_unet.pth
- First, train a baseline UNet model (here we provide a pre-trained baseline UNet model in ./pre-trained_model/ )
- Second, indicate the path to the pre-trained UNet model (TRAINING-ENN.py line 116)
- Third, run the following code to train ENN-UNet
python TRAINING-ENN.py
- First, train a baseline UNet model (here we provide a pre-trained baseline UNet model in ./pre-trained_model/ )
- Second, indicate the path to the pre-trained UNet model (TRAINING-ENN_step1.py line 109)
- Third, run the following code to train ENN-UNet by fixing UNet (activate lines 265-266 in unet_enn.py)
python TRAINING-ENN_step1.py
- Last, run the following code to finetune the whole model (ENN-UNet). ((activate lines 265-266 in unet_enn.py)
python TRAINING-ENN_step2.py
- PS: TRAINING-ENN_step2.py is optional if TRAINING-ENN_step1.py can output good results. But a final finetuning of the whole model usually has better results.
This repository makes liberal use of code from DeepOncology for lymphoma data processing.
@inproceedings{huang2021evidential,
title={Evidential segmentation of 3D PET/CT images},
author={Huang, L. and Ruan, S. and Decazes, P. and Den{\oe}ux, T.},
booktitle={International Conference on Belief Functions},
pages={159--167},
year={2021},
organization={Springer}
}
@article{huang2022lymphoma,
title = {Lymphoma segmentation from 3D PET-CT images using a deep evidential network},
journal = {International Journal of Approximate Reasoning},
volume = {149},
pages = {39-60},
year = {2022},
issn = {0888-613X},
doi = {https://doi.org/10.1016/j.ijar.2022.06.007},
author = {Ling Huang and Su Ruan and Pierre Decazes and Thierry Denoeux}
}