Exemple #1
0
def detailed_validation(model, cases, suffix, config):
    # Initialize kits19 scoring file
    save_evaluation(["case_id", "score_KidneyTumor", "score_Tumor"],
                    config["evaluation_path"],
                    "kits19_scoring." + suffix + ".tsv",
                    start=True)
    # Predict the cases with the provided model
    model.predict(cases)
    # Iterate over each case
    for id in cases:
        # Load the truth segmentation
        truth = load_segmentation_nii(id, config["data_path"]).get_data()
        # Load the prediction segmentation
        pred = load_prediction_nii(id, config["output_path"]).get_data()
        # Calculate kits19 score
        score_kidney, score_tumor = kits19_score(truth, pred)
        # Save kits19 score to file
        save_evaluation([id, score_kidney, score_tumor],
                        config["evaluation_path"],
                        "kits19_scoring." + suffix + ".tsv")
        # Calculate class frequency per slice
        if config["class_freq"]:
            class_freq = calc_ClassFrequency(truth, pred)
            for i in range(len(class_freq)):
                print(str(id) + "\t" + str(i) + "\t" + str(class_freq[i]))
        # Visualize the truth and prediction segmentation
        if config["visualize"]:
            # Load the volume
            vol = load_volume_nii(id, config["data_path"]).get_data()
            # Run visualization
            visualize_evaluation(id, vol, truth, pred,
                                 config["evaluation_path"])
Exemple #2
0
 def on_epoch_end(self, epoch, logs={}):
     data_point = [epoch, logs["loss"],
                   logs["dice_coefficient"], logs["dice_classwise"],
                   logs["categorical_accuracy"],
                   logs["categorical_crossentropy"],
                   logs["val_loss"], logs["val_dice_coefficient"],
                   logs["val_dice_classwise"],
                   logs["val_categorical_accuracy"],
                   logs["val_categorical_crossentropy"]]
     save_evaluation(data_point, self.eval_path, "validation.tsv")
Exemple #3
0
 def __init__(self, eval_path):
     self.eval_path = eval_path
     # Create evaluation tsv file
     save_evaluation(["epoch", "tversky_loss", "dice_coef",
                      "dice_classwise", "categorical_accuracy",
                      "categorical_crossentropy", "val.tversky_loss",
                      "val.dice_coef", "val.dice_classwise",
                      "val.categorical_accuracy",
                      "val.categorical_crossentropy"],
                     eval_path,
                     "validation.tsv",
                     start=True)
     # Create training tsv file
     save_evaluation(["epoch", "batch", "tversky_loss",
                      "dice_coef", "dice_classwise"],
                     eval_path,
                     "training.tsv",
                     start=True)
Exemple #4
0
 def on_batch_end(self, batch, logs={}):
     data_point = [self.current_epoch, batch, logs["loss"],
                   logs["dice_coefficient"], logs["dice_classwise"]]
     save_evaluation(data_point, self.eval_path, "training.tsv")