print("Calculate metrics (Ensemble + Z-filtering per crop) . . .")
ens_zfil_iou_per_image = jaccard_index_numpy(
    Y_test, (ens_zfil_preds_test > 0.5).astype(np.uint8))
ens_zfil_ov_iou_per_image = voc_calculation(
    Y_test, (ens_zfil_preds_test > 0.5).astype(np.uint8),
    ens_zfil_iou_per_image)
del Y_test_ensemble, ens_zfil_preds_test

print("############################################################\n"
      "#  Metrics (per image, merging crops with 50% of overlap)  #\n"
      "############################################################\n")

print("Merge X_test to crop it again with 50% overlap and make the prediction")
X_test = merge_3D_data_with_overlap(X_test, orig_test_shape, overlap=overlap)
X_test = crop_3D_data_with_overlap(X_test,
                                   test_3d_desired_shape,
                                   overlap=(0.5, 0.5, 0.5))

Y_test_50ov = model.predict(X_test, batch_size=batch_size_value, verbose=1)

if n_classes > 1:
    Y_test_50ov = np.expand_dims(np.argmax(Y_test_50ov, -1), -1)

Y_test_50ov = merge_3D_data_with_overlap(Y_test_50ov,
                                         orig_test_shape,
                                         overlap=(0.5, 0.5, 0.5))

print("Saving 50% overlap predicted images . . .")
save_img(Y=(Y_test_50ov > 0.5).astype(np.float32),
         mask_dir=result_bin_dir_50ov,
         prefix="test_out_bin_50ov")
Example #2
0
ov_iou = 0
index = 0
for i in tqdm(range(len(orig_test_shape))):
    original_3d_shape = orig_test_shape[i]
    crop_3d_shape = crop_test_shapes[i]
    f_name = filenames[1][i]

    orig_X_test, orig_Y_test = merge_3D_data_with_overlap(
        X_test[index:index + crop_3d_shape[0]],
        original_3d_shape,
        data_mask=Y_test[index:index + crop_3d_shape[0]],
        overlap=overlap,
        verbose=False)

    orig_X_test = crop_3D_data_with_overlap(orig_X_test,
                                            test_3d_desired_shape,
                                            overlap=(0.5, 0.5, 0.5),
                                            verbose=False)

    Y_test_50ov = model.predict(orig_X_test,
                                batch_size=batch_size_value,
                                verbose=1)

    if n_classes > 1:
        Y_test_50ov = np.expand_dims(np.argmax(Y_test_50ov, -1), -1)

    Y_test_50ov = merge_3D_data_with_overlap(Y_test_50ov,
                                             original_3d_shape,
                                             overlap=(0.5, 0.5, 0.5),
                                             verbose=False)
    Y_test_50ov = Y_test_50ov.astype(np.float32)