• Stars
    star
    315
  • Rank 132,951 (Top 3 %)
  • Language
    Jupyter Notebook
  • License
    Apache License 2.0
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

WACV18 paper "DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification"

DeepLung:

Please add paper into reference if the repository is helpful to you.

Zhu, Wentao, Chaochun Liu, Wei Fan, and Xiaohui Xie. "DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification." IEEE WACV, 2018.

Deepem: Deep 3d convnets with em for weakly supervised pulmonary nodule detection, MICCAI, 2018.

Dependecies: Ubuntu 14.04, python 2.7, CUDA 8.0, cudnn 5.1, h5py (2.6.0), SimpleITK (0.10.0), numpy (1.11.3), nvidia-ml-py (7.352.0), matplotlib (2.0.0), scikit-image (0.12.3), scipy (0.18.1), pyparsing (2.1.4), pytorch (0.1.10+ac9245a) (anaconda is recommended)

Download LUNA16 dataset from https://luna16.grand-challenge.org/data/

Download LIDC-IDRI dataset from https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI

For preprocessing, run ./DeepLung/prepare.py. The parameters for prepare.py is in config_training.py.
*_data_path is the unzip raw data path for LUNA16.
*_preprocess_result_path is the save path for the preprocessing.
*_annos_path is the path for annotations.
*_segment is the path for LUNA16 segmentation, which can be downloaded from LUNA16 website.

Use run_training.sh to train the detector.
You can use the ResNet or dual path net model by revising --model attribute.
After training and test are done, use the ./evaluationScript/frocwrtdetpepchluna16.py to validate the epoch used for test.
After that, collect all the 10 folds' prediction, use ./evaluationScript/noduleCADEvaluationLUNA16.py to get the FROC for all 10 folds.
You can directly run noduleCADEvaluationLUNA16.py, and get the performance in the paper.

The trained model is in ./detector/dpnmodel/ or ./detector/resmodel/ The performances on each fold are (these results are in the supplement)

Method Deep 3D Res18 Deep 3D DPN26

Fold 0 0.8610 0.8750

Fold 1 0.8538 0.8783

Fold 2 0.7902 0.8170

Fold 3 0.7863 0.7731

Fold 4 0.8795 0.8850

Fold 5 0.8360 0.8095

Fold 6 0.8959 0.8649

Fold 7 0.8700 0.8816

Fold 8 0.8886 0.8668

Fold 9 0.8041 0.8122

The performances on each average false positives in FROC compared with other approaches (these results are in the supplement)

Methods 0.125 0.25 0.5 1 2 4 8 FROC

DIAG_ConvNet 0.692 0.771 0.809 0.863 0.895 0.914 0.923 0.838

ZENT 0.661 0.724 0.779 0.831 0.872 0.892 0.915 0.811

Aidence 0.601 0.712 0.783 0.845 0.885 0.908 0.917 0.807

MOT_M5Lv1 0.597 0.670 0.718 0.759 0.788 0.816 0.843 0.742

VisiaCTLung 0.577 0.644 0.697 0.739 0.769 0.788 0.793 0.715

Etrocad 0.250 0.522 0.651 0.752 0.811 0.856 0.887 0.676

Dou et al 2017 0.659 0.745 0.819 0.865 0.906 0.933 0.946 0.839

3D RES 0.662 0.746 0.815 0.864 0.902 0.918 0.932 0.834

3D DPN 0.692 0.769 0.824 0.865 0.893 0.917 0.933 0.842

For nodule classification, first clean the data from LIDC-IDRI.
Use the ./data/extclsshpinfo.py to extract nodule labels.
humanperformance.py is used to get the performance of doctors.

dimcls.py is used to get the classification based on diameter.
nodclsgbt.py is used to get the performance based on GBM, nodule diameter and nodule pixel.
pthumanperformance.py is used for patient-level diagnosis performance.
kappatest.py is used for kappa value calculation in the paper.

For classification using DPN, use the code in main_nodcls.py.
You may revise the code a little bit for different test settings.

For system's classification, that is classification based on detection.
First, use the detection's test script in the run_training.sh to get the detected nodules for training CTs.
Use the det2cls.py to train the model. And use the testdet2cls.py to test the trained model.
You may revise the code a little bit for different test settings.

Doctor's annotation for each nodule in LIDC-IDRI is in ./nodcls/annotationdetclssgm_doctor.csv

Feel free to ask any questions. Wentao Zhu, [email protected]

LIDC-IDRI nodule size report downloaded from http://www.via.cornell.edu/lidc/list3.2.csv is in /nodcls/data/list3.2.csv

More Repositories

1

AnatomyNet-for-anatomical-segmentation

AnatomyNet: Deep 3D Squeeze-and-excitation U-Nets for fast and fully automated whole-volume anatomical segmentation
Python
144
star
2

deep-mil-for-whole-mammogram-classification

Zhu, Wentao, Qi Lou, Yeeleng Scott Vang, and Xiaohui Xie. "Deep Multi-instance Networks with Sparse Label Assignment for Whole Mammogram Classification." MICCAI 2017.
Python
113
star
3

AutoShot

AutoShot: A Short Video Dataset and State-of-the-Art Shot Boundary Detection - CVPR NAS 2023
Python
111
star
4

adversarial-deep-structural-networks

ISBI2018: Adversarial Deep Structural Networks for Mammographic Mass Segmentation https://arxiv.org/abs/1612.05970
Python
51
star
5

protein-cascade-cnn-lstm

Implementation of IJCAI15 cascade cnn and LSTM for protein secondary structure prediction
Python
38
star
6

speechnas

SpeechNAS-Better-Trade-off-between-Latency-and-Accuracy-for-Large-Scale-Speaker-Verification
Python
30
star
7

Hierarchical-ELM-Network

IJCNN 2015 Hierarchical extreme learning machine for unsupervised representation learning
MATLAB
27
star
8

recurrent-attention-for-QA-SQUAD-based-on-keras

recurrent attention based on keras. Question Answering SQUAD dataset
Python
22
star
9

DeepEM-for-Weakly-Supervised-Detection

MICCAI18 DeepEM: Deep 3D ConvNets with EM for Weakly Supervised Pulmonary Nodule Detection
Jupyter Notebook
17
star
10

constrained-extreme-learning-machine

constrained extreme learning machine, IJCNN 2014
MATLAB
16
star
11

rna_protein_binding

deep multi-instance learning for rna protein binding prediction
Python
10
star
12

inbreast

MATLAB
8
star
13

Extreme-support-vector-regression

The code is used for the Pattern Recognition Letters paper "Robust regression with extreme support vectors". There are kernel based ESVR and conventional ESVR respectively. Please cite it as "Zhu, Wentao, Jun Miao, and Laiyun Qing. "Robust regression with extreme support vectors." Pattern Recognition Letters 45 (2014): 205-210."
MATLAB
7
star
14

lamp-automated-model-parallelism

MICCAI20 Early Accepted "LAMP: Large Deep Nets with Automated Model Parallelism for Image Segmentation"
4
star
15

AI_Reading_List

My everyday reading list about healthcare, AI, machine learning, deep learning, startup
2
star
16

CTnoddetector

Python
2
star
17

SLAM

Python
1
star
18

Deep-trans-layer-unsupervised-network

deep trans-layer PCA network and deep trans-layer denoising auto encoder network
1
star