Skip to content

Latest commit

 

History

History

training

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Training code for Lung Tumor 3D Segmentation - Mixed Supervision

End to end code base for lung tumor segmentation from CT-scan using mixed supervision for deep convolutional neural network.

Takes 3D CT scans as input and outputs 3D segmentation of primary tumor.

Project aims to utilize multiple different datasets with different label types (classification labels, bounding boxes, rough segmentations, and fine segmentations).

Installation

Requires python >= 3.6

Install python dependencies with pip. The requirements file is located in /Resources/:

pip install -r requirements.txt

Build repository files as packages using setuptools. If you alter the code, remember to run the setup again:

python setup.py install

Usage

Initiate Training: python .\Runable\Test\test_sevlus.py

The training is initiated from the .\Resources\Test\test_train.yaml file that looks like this:

device: 'cuda'

data:
  train_dataset: "D:\\Repos\\LungTumorSegmentation\\Resources\\Test\\data_test_train.yaml"
  aug_prob: 0.1
  scale_dim:
    d_0: 32
    d_1: 32
    d_2: 32

model:
  architecture: UNet_con_double
  loss: DiceLoss
  filter_base: 64
  filter_expansion: 2
  optimizer:
    name: 'Adam'
    lr: 0.001

train:
  max_epochs: 3
  val_frequency: 1
  output_threshold: 0.5
  metric_path: "D:\\Repos\\LungTumorSegmentation\\metrics.csv"
  save_frequency: 5
  model_directory: "D:\\Repos\\LungTumorSegmentation\\models\\"
  steps_per_plot: 10

The paths would need to be updated.

Plot Training Metric File: python interface.py plot <path_to_metric_file>

Store the plot by specifying the store location: python interface.py plot <path_to_metric_file> -store_file <path_to_store> -steps_per_epoch <steps_per_epoch (int)> Example: python interface.py plot ./metrics.csv -store_file plot.png -steps_per_epoch 120

Evaluate Network: python .\Runable\Evaluate\eval.py

Evaluates the network on specified test images with labels. The configuration file (which here is the file at .\Resources\Windows_Files\win_eval.yaml) should contain network information as well as a reference to the data to evaluate the network on.

The evaluation config should look similar to this

device: 'cuda'

data:
  train_dataset: "D:\\Repos\\LungTumorSegmentation\\Resources\\Windows_Files\\evaluate_data_msd.yaml"
  scale_dim:
    d_0: 128
    d_1: 128
    d_2: 128

model:
  architecture: UNet_filter
  weights: "D:\\idun_models\\1\\model_last_128.pth"
  loss: DiceLoss
  filter_base: 128
  filter_expansion: 2
  optimizer:
    name: 'Adam'
    lr: 0.01

evaluate:
  save_segmentations: True
  save_directory: 'D:\\Repos\\LungTumorSegmentation\\m_128\\'
  output_threshold: 0.5

In this case, the paths would also need to be updated.

Authors

Vemund Fredrksen, Svein Ole M. Sevle, & André Pedersen.

License

MIT