print("Making the predictions on test data . . .")
preds_test = model.predict(X_test, batch_size=batch_size_value, verbose=1)

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

print("########################################\n"
      "#  Metrics (per image, merging crops)  #\n"
      "########################################\n")

# Merge crops
print("Reconstruct X_test/Y_test . . .")
X_test, Y_test = merge_data_with_overlap(X_test,
                                         orig_test_shape,
                                         Y_test,
                                         overlap=overlap)

print("Reconstruct preds_test . . .")
preds_test = merge_data_with_overlap(preds_test,
                                     orig_test_shape,
                                     overlap=overlap)

print("Saving predicted images . . .")
save_img(Y=(preds_test > 0.5).astype(np.uint8),
         mask_dir=result_bin_dir_per_image,
         prefix="test_out_bin")
save_img(Y=preds_test,
         mask_dir=result_no_bin_dir_per_image,
         prefix="test_out_no_bin")
if np.max(X_test) > 2:
    X_test = X_test.astype('float32')
    X_test *= 1. / 255

if n_classes > 1:
    Y_test_one_hot = np.zeros(Y_test.shape[:3] + (n_classes, ))
    for i in range(Y_test.shape[0]):
        Y_test_one_hot[i] = np.asarray(
            img_to_onehot_encoding(Y_test[i], n_classes))
    Y_test = Y_test_one_hot
    del Y_test_one_hot

# Merge crops
print("Reconstruct X_test/Y_test . . .")
X_test, Y_test = merge_data_with_overlap(X_test,
                                         orig_test_shape,
                                         Y_test,
                                         overlap=overlap)

print("########################\n"
      "# Metrics (full image) #\n"
      "########################\n")

print("Making the predictions on test data . . .")
preds_test_full = model.predict(X_test, batch_size=batch_size_value, verbose=1)

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

print("Saving predicted images . . .")
save_img(Y=preds_test_full, mask_dir=result_no_bin_dir_full)