This repository contains the PyTorch implementation of the paper: SDCNN: Self-Supervised Disentangled Convolutional Neural Network for Low-Dose CT Denoising
Abstract: Low-dose computed tomography (LDCT) reduces radiation exposure but suffers from high noise, impacting image quality and diagnostic accuracy. Supervised learning has helped address this challenge but requires numerous paired datasets of LDCT and normal-dose CT (NDCT) images, which limits their clinical practice. This paper proposes a novel self-supervised disentangled convolutional neural network (SDCNN) that can directly reconstruct high-quality CT images from LDCT data without the need for a clean reference. Unlike other methods that treat noise as a uniform entity, SDCNN disentangles LDCT images into noise-free images, signal-dependent noise, and signal-independent noise, aligning with the intrinsic principles of low-dose noise generation. To enhance the purity of disentanglement, we introduce the concept of combination and re-disentanglement to establish a training framework based on SDCNN. Additionally, we design self-supervised loss functions, including novel anisotropic total variation (TV) and distance loss functions, to improve the efficiency of the denoising process. The signal-guided attention (SGA) module effectively captures the relationship between signal-dependent noise and the signal across both spatial and channel dimensions. Experiments on clinical and animal data demonstrate that the proposed method performed better than all competing state-of-the-art self-supervised algorithms in noise and artifact removal. For example, compared to self-supervised algorithms, SDCNN can improve MSSIM, PSNR, and FSIM by at least 2.26%, 1.20dB, 1.23%, and GMSD is reduced by at least 1.11% on Mayo clinical data.
1.The Mayo Clinic Low Dose CT by Mayo Clinic
(I can't share this data, you should ask at the URL below if you want)
https://www.cancerimagingarchive.net/collection/ldct-and-projection-data/
2.The Piglet Low Dose CT by X. Yi and P. Babyn, "Sharpness-aware low-dose CT denoising using conditional generative adversarial network"
(I can't share this data, you should ask at the URL below if you want)
https://github.com/xinario/SAGAN?tab=readme-ov-file
SDCNN can be installed from source,
git clone https://github.com/YuhangLiu98/SDCNN.git
cd SDCNN/src
Then, Pytorch is required, for example,
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
Lastly, other pakages are required,
pip install -r requirements.txt
- run
python prep.py
to convert 'dicom file' to 'numpy array' - run
python train.py
to training. - run
python test.py
to testing.
@ARTICLE{10758838,
author={Liu, Yuhang and Shu, Huazhong and Chi, Qiang and Zhang, Yue and Liu, Zidong and Wu, Fuzhi and Coatrieux, Jean-Louis and Liu, Yi and Wang, Lei and Zhang, Pengcheng and Gui, Zhiguo},
journal={IEEE Transactions on Instrumentation and Measurement},
title={SDCNN: Self-Supervised Disentangled Convolutional Neural Network for Low-Dose CT Denoising},
year={2024},
doi={10.1109/TIM.2024.3502758}}
Code borrows heavily from CVF-SID