Example #1
0
    def __init__(self,
                 data_loader,
                 results_patent_path,
                 model_name,
                 stage='training'):
        """
        Initialize the Prediction model class
        :param data_loader: An object that loads batches of image data
        :param results_patent_path: The path at which all results and generated models will be saved
        :param model_name: The name of your model, used when saving and loading data
        """
        # set attributes for data shape from data loader
        self.data_loader = data_loader
        self.patient_shape = data_loader.patient_shape
        self.full_roi_list = data_loader.full_roi_list
        self.model_name = model_name

        # Define training parameters
        self.epoch_start = 0  # Minimum epoch (overwritten during initialization if a newer model exists)
        self.epoch_last = 200  # When training will stop

        # Define image sizes
        self.dose_shape = (*self.patient_shape, 1)
        self.ct_shape = (*self.patient_shape, 1)
        self.roi_masks_shape = (*self.patient_shape, len(self.full_roi_list))

        # Define filter and stride lengths
        self.filter_size = (4, 4, 4)
        self.stride_size = (2, 2, 2)

        # Define the initial number of filters in the model (first layer)
        self.initial_number_of_filters = 1  # 64

        # Define model optimizer
        self.gen_optimizer = Adam(lr=0.002,
                                  decay=0.001,
                                  beta_1=0.5,
                                  beta_2=0.999)

        # Define place holders for model
        self.generator = None

        # Make directories for data and models
        model_results_path = '{}/{}'.format(results_patent_path, model_name)
        self.model_dir = make_directory_and_return_path(
            '{}/models'.format(model_results_path))
        self.prediction_dir = '{}/{}-predictions'.format(
            model_results_path, stage)

        # Make template for model path
        self.model_path_template = '{}/epoch_'.format(self.model_dir)
Example #2
0
        print('For this out-of-sample test:\n'
              '\tthe DVH score is {:.3f}\n '
              '\tthe dose score is {:.3f}'.format(dvh_score, dose_score))

    # Apply model to validation set
    validation_data_paths = get_paths(
        validation_data_dir, ext='')  # gets the path of each plan's directory
    validation_data_loader = DataLoader(validation_data_paths,
                                        mode_name='dose_prediction')
    dose_prediction_model_validation = PredictionModel(
        validation_data_loader,
        results_dir,
        model_name=prediction_name,
        stage='validation')
    dose_prediction_model_validation.predict_dose(
        epoch=number_of_training_epochs)

    # Evaluate plans based on dose metrics (no baseline available to compare to)
    validation_eval_data_loader = DataLoader(
        validation_data_paths, mode_name='dose_prediction')  # Set data loader
    dose_evaluator = EvaluateDose(validation_eval_data_loader)
    dose_evaluator.make_metrics()
    validation_prediction_metrics = dose_evaluator.reference_dose_metric_df.head(
    )

    # Zip dose to submit
    submission_dir = make_directory_and_return_path(
        '{}/submissions'.format(results_dir))
    shutil.make_archive('{}/{}'.format(submission_dir, prediction_name), 'zip',
                        dose_prediction_model_validation.prediction_dir)
Example #3
0
 def conversion_epoch_end(self, outputs):
     submission_dir = make_directory_and_return_path(
         'checkpoints/submissions')
     shutil.make_archive('{}/{}'.format(submission_dir, 'submission'),
                         'zip', 'checkpoints/results')
     return  #{'val_loss_mean': val_loss_mean, 'log': log_dict, 'progress_bar': log_dict}