| import numpy as np
|
| import argparse
|
| import glob
|
| import os
|
| import sys
|
| import torch
|
| import cv2
|
| import random
|
| import time
|
| import multiprocessing.pool as mpp
|
| import multiprocessing as mp
|
| SEED = 66
|
|
|
| def seed_everything(seed):
|
| random.seed(seed)
|
| os.environ['PYTHONHASHSEED'] = str(seed)
|
| np.random.seed(seed)
|
| torch.manual_seed(seed)
|
| torch.cuda.manual_seed(seed)
|
| torch.backends.cudnn.deterministic = True
|
| torch.backends.cudnn.benchmark = True
|
| def label2rgb(mask, mask_pred):
|
| real_1 = (mask == 1)
|
| real_0 = (mask == 0)
|
| pred_1 = (mask_pred == 1)
|
| pred_0 = (mask_pred == 0)
|
|
|
| TP = np.logical_and(real_1, pred_1)
|
| TN = np.logical_and(real_0, pred_0)
|
| FN = np.logical_and(real_1, pred_0)
|
| FP = np.logical_and(real_0, pred_1)
|
|
|
| mask_TP = TP[np.newaxis, :, :]
|
| mask_TN = TN[np.newaxis, :, :]
|
| mask_FN = FN[np.newaxis, :, :]
|
| mask_FP = FP[np.newaxis, :, :]
|
|
|
| h, w = mask.shape[0], mask.shape[1]
|
| mask_rgb = np.zeros(shape=(h, w, 3), dtype=np.uint8)
|
| mask_rgb[np.all(mask_TP, axis=0)] = [255, 255, 255]
|
| mask_rgb[np.all(mask_TN, axis=0)] = [0, 0, 0]
|
| mask_rgb[np.all(mask_FN, axis=0)] = [0, 255, 0]
|
| mask_rgb[np.all(mask_FP, axis=0)] = [255, 0, 0]
|
|
|
| return mask_rgb
|
|
|
| def parse_args():
|
| parser = argparse.ArgumentParser()
|
| parser.add_argument("--dataset", default="Vaihingen")
|
| parser.add_argument("--mask-dir", default="data/Test/masks")
|
| parser.add_argument("--output-mask-dir", default="data/Test/masks_rgb")
|
| return parser.parse_args()
|
|
|
| def mask_save(inp):
|
| (mask, mask_pred, masks_output_dir, file_name) = inp
|
| out_mask_path = os.path.join(masks_output_dir, "{}.png".format(file_name))
|
|
|
| label = label2rgb(mask.copy(), mask_pred.copy())
|
|
|
| rgb_label = cv2.cvtColor(label, cv2.COLOR_BGR2RGB)
|
| cv2.imwrite(out_mask_path, rgb_label)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|