Esempio n. 1
0
def make_error_image(truth, pred):
    h, w = truth.shape
    patch_img = 255 * np.ones((h, w, 3), dtype=np.uint8)
    mask = truth - pred
    patch_img = util_functions.add_mask(patch_img, truth, [0, 255, 0], 1)
    patch_img = util_functions.add_mask(patch_img, mask, [0, 0, 255], 1)
    patch_img = util_functions.add_mask(patch_img, mask, [255, 0, 0], -1)
    return patch_img
Esempio n. 2
0
def check_gt_plot2(rgb_file, city_name, city_id, tower_gt):
    if city_name == 'USA_KS_Colwich_Maize':
        city_name = 'Colwich_Maize'
    if city_name == 'NZ_Palmerston North':
        city_name = 'PalmerstonNorth'
    try:
        line_gt = misc_utils.load_file(
            os.path.join(
                r'/media/ei-edl01/data/uab_datasets/lines_v3/data/Original_Tiles',
                '{}{}_GT.png'.format(city_name, city_id)))
        line_gt = cv2.dilate(line_gt, np.ones((5, 5), np.uint8), iterations=3)

        plt.figure(figsize=(8, 6))
        rgb = misc_utils.load_file(rgb_file)
        rgb = util_functions.add_mask(rgb, line_gt, [0, 255, 0], 1)
        plt.imshow(rgb)
        # visualize_with_connected_pairs(rgb, tower_gt, line_gt, style='r', add_fig=True)
        center_points = np.array(tower_gt)
        plt.scatter(center_points[:, 1],
                    center_points[:, 0],
                    c='g',
                    s=40,
                    marker='o',
                    alpha=1,
                    edgecolors='k')
        plt.title('{} {}'.format(city_name, city_id))
        plt.axis('off')
        plt.tight_layout()
        plt.show()
    except:
        pass
Esempio n. 3
0
def check_gt_plot(city_name, city_id, tower_gt, line_gt):
    if city_name == 'Colwich':
        city_name = 'Colwich_Maize'
    img_dir = r'/home/lab/Documents/bohao/data/transmission_line/raw'
    rgb_file = glob(
        os.path.join(img_dir, '*_{}_{}.tif'.format(city_name, city_id)))

    line_gt = misc_utils.load_file(
        os.path.join(
            r'/media/ei-edl01/data/uab_datasets/lines/data/Original_Tiles',
            '{}{}_GT.png'.format(city_name, city_id)))
    line_gt = cv2.dilate(line_gt, np.ones((5, 5), np.uint8), iterations=10)

    plt.figure(figsize=(8, 6))
    assert len(rgb_file) == 1
    rgb = misc_utils.load_file(rgb_file[0])
    rgb = util_functions.add_mask(rgb, line_gt, [0, 255, 0], 1)
    plt.imshow(rgb)
    # visualize_with_connected_pairs(rgb, tower_gt, line_gt, style='r', add_fig=True)
    center_points = np.array(tower_gt)
    plt.scatter(center_points[:, 1],
                center_points[:, 0],
                c='g',
                s=40,
                marker='o',
                alpha=1,
                edgecolors='k')
    plt.title('{} {}'.format(city_name, city_id))
    plt.axis('off')
    plt.tight_layout()
    plt.show()
Esempio n. 4
0
def visualize_results(img_dir,
                      city_id,
                      tile_id,
                      raw_rgb,
                      line_gt,
                      tower_pred,
                      tower_gt,
                      connected_pairs,
                      connected_towers,
                      unconnected_towers,
                      save_fig=False,
                      post_str='',
                      close_file=False):
    plt.figure(figsize=(8.5, 8))
    img_with_line = util_functions.add_mask(raw_rgb, line_gt, [0, 255, 0], 1)
    visualize_with_connected_pairs(img_with_line,
                                   tower_pred,
                                   connected_pairs,
                                   add_fig=True)
    add_points(tower_gt, 'b', marker='s', size=80, alpha=1, edgecolor='k')
    if connected_towers is not None and unconnected_towers is not None:
        add_points([tower_pred[a] for a in connected_towers],
                   'r',
                   marker='o',
                   alpha=1,
                   edgecolor='k')
        try:
            add_points([tower_pred[a] for a in unconnected_towers],
                       'r',
                       marker='o',
                       alpha=1,
                       edgecolor='k')
        except IndexError:
            print('No more unconnected towers')
    else:
        add_points(tower_pred, 'r', marker='o', alpha=1, edgecolor='k')
    plt.axis('off')
    plt.tight_layout()
    if save_fig:
        if 'NZ' in post_str:
            plt.title('{}_{}'.format(city_list2[city_id], tile_id))
            plt.savefig(
                os.path.join(
                    img_dir,
                    '{}_{}_post_result{}.png'.format(city_list2[city_id],
                                                     tile_id, post_str)))
        else:
            plt.title('{}_{}'.format(city_list[city_id], tile_id))
            plt.savefig(
                os.path.join(
                    img_dir,
                    '{}_{}_post_result{}.png'.format(city_list[city_id],
                                                     tile_id, post_str)))
    if close_file:
        plt.close()
    else:
        plt.show()
Esempio n. 5
0
                gt_list.append([y, x])

            # get line confidences
            pairs, dists, confs = get_edge_info(center_list, conf_img, radius=radius, width=width,
                                                tile_min=(0, 0), tile_max=raw_rgb.shape)

            # connect lines
            connected_pairs = connect_lines(pairs, confs, th, cut_n=2)
            connected_pairs, unconnected_pairs = prune_pairs(connected_pairs, center_list)

            # get towers that are not connected
            connected_towers = []
            for p in connected_pairs:
                connected_towers.append(p[0])
                connected_towers.append(p[1])
            connected_towers = list(set(connected_towers))
            unconnected_towers = [a for a in range(len(center_list)) if a not in connected_towers]

            # visualize results
            plt.figure(figsize=(8.5, 8))
            img_with_line = util_functions.add_mask(raw_rgb, line_gt, [0, 255, 0], 1)
            visualize_with_connected_pairs(raw_rgb, center_list, connected_pairs, add_fig=True)
            # visualize_with_connected_pairs(raw_rgb, center_list, unconnected_pairs, style='k', add_fig=True)
            add_points(gt_list, 'b', marker='s', size=80, alpha=1, edgecolor='k')
            add_points([center_list[a] for a in connected_towers], 'r', marker='o', alpha=1, edgecolor='k')
            add_points([center_list[a] for a in unconnected_towers], 'yellow', marker='o', alpha=1, edgecolor='k')
            plt.axis('off')
            plt.tight_layout()
            # plt.savefig(os.path.join(img_dir, '{}_{}_post_result.png'.format(city_list[city_id], tile_id)))
            plt.show()
Esempio n. 6
0
import os
import imageio
import numpy as np
from glob import glob
from util_functions import add_mask
import sis_utils

deeplab_pred_dir = r'/hdd/Results/gbdx_cmp/DeeplabV3_res101_inria_aug_grid_0_PS(321, 321)_BS5_EP100_LR1e-05_DS40_DR0.1_SFN32/sp/pred'
unet_pred_dir = r'/hdd/Results/gbdx_cmp/UnetCrop_inria_aug_grid_0_PS(572, 572)_BS5_EP100_LR0.0001_DS60_DR0.1_SFN32/sp/pred'
gt_dir = r'/media/ei-edl01/data/uab_datasets/sp/DATA_BUILDING_AND_PANEL'
tile_ids = [
    os.path.basename(a).split('_')[0]
    for a in glob(os.path.join(gt_dir, '*_GT.png'))
]
img_dir, task_dir = sis_utils.get_task_img_folder()

for img_cnt in range(len(tile_ids)):
    img_name = '{}.png'.format(tile_ids[img_cnt])
    rgb_name = '{}_RGB.jpg'.format(tile_ids[img_cnt])
    unet_pred = imageio.imread(os.path.join(unet_pred_dir, img_name))
    deeplab_pred = imageio.imread(os.path.join(deeplab_pred_dir, img_name))
    ensemble_pred = unet_pred + deeplab_pred - unet_pred * deeplab_pred
    sp_rgb = imageio.imread(os.path.join(gt_dir, rgb_name))

    masked = add_mask(sp_rgb, ensemble_pred, [255, None, None], mask_1=1)
    img_name = os.path.join(img_dir, 'ca_building', 'ensemble',
                            '{}_building_mask.png'.format(tile_ids[img_cnt]))
    imageio.imsave(img_name, masked)
tile_ids = [
    os.path.basename(a).split('_')[0]
    for a in glob(os.path.join(pred_base_dir, 'deeplab', '*.png'))
]

for img_cnt in range(len(tile_ids)):
    img_name = '{}_building_mask.png'.format(tile_ids[img_cnt])
    gt_name = '{}_GT.png'.format(tile_ids[img_cnt])
    unet_pred = imageio.imread(os.path.join(pred_base_dir, 'unet', img_name))
    deeplab_pred = imageio.imread(
        os.path.join(pred_base_dir, 'deeplab', img_name))
    ensemble_pred = imageio.imread(
        os.path.join(pred_base_dir, 'ensemble', img_name))
    sp_gt = imageio.imread(os.path.join(gt_dir, gt_name))

    masked_unet = add_mask(unet_pred, sp_gt, [0, 0, 255], mask_1=1)
    masked_deeplab = add_mask(deeplab_pred, sp_gt, [0, 0, 255], mask_1=1)
    masked_ensemble = add_mask(ensemble_pred, sp_gt, [0, 0, 255], mask_1=1)
    '''plt.figure(figsize=(15, 8))
    ax1 = plt.subplot2grid((2, 3), (0, 0), colspan=2, rowspan=2)
    plt.imshow(masked_ensemble)
    #plt.axis('off')
    plt.title('ENSEMBLE')
    ax2 = plt.subplot2grid((2, 3), (0, 2), sharex=ax1, sharey=ax1)
    plt.imshow(masked_unet)
    #plt.axis('off')
    plt.title('UNET')
    ax3 = plt.subplot2grid((2, 3), (1, 2), sharex=ax1, sharey=ax1)
    plt.imshow(masked_deeplab)
    # plt.axis('off')
    plt.title('DEEPLAB')
Esempio n. 8
0
import numpy as np
import matplotlib.pyplot as plt
import sis_utils
import util_functions

orig_dir = r'/media/ei-edl01/user/as667/BOHAO/gbdx_results'
rgb_orig_dir = r'/media/ei-edl01/user/as667'
task_id = 'Honolulu_chunks'
tile_id = '104001000832C600_0'
img_name = os.path.join(rgb_orig_dir, task_id, '{}.tif'.format(tile_id))
bgt_name = os.path.join(orig_dir, task_id, 'building_{}.tif'.format(tile_id))
sgt_name = os.path.join(orig_dir, task_id, 'sp_{}.tif'.format(tile_id))
img_dir, task_dir = sis_utils.get_task_img_folder()

img = imageio.imread(img_name)
bmask = np.copy(img)
smask = np.copy(img)
bgt = imageio.imread(bgt_name)
sgt = imageio.imread(sgt_name)
b_mask = util_functions.add_mask(bmask, bgt, [None, 255, None], mask_1=255)
s_mask = util_functions.add_mask(smask, sgt, [255, None, None], mask_1=255)

plt.figure(figsize=(12, 6))
ax1 = plt.subplot(121)
plt.imshow(b_mask)
plt.axis('off')
ax2 = plt.subplot(122, sharex=ax1, sharey=ax1)
plt.imshow(s_mask)
plt.axis('off')
plt.show()
Esempio n. 9
0
    for img_id in [1, 2, 3]:
        img_name = '{}_0{}.tif'.format(city_name, img_id)
        gt_file_name = '{}_0{}_roadCoord.csv'.format(city_name, img_id)

        info_reader = read_polygon_info(os.path.join(img_dir, gt_file_name), city_name)
        img = imageio.imread(os.path.join(img_dir, img_name))

        gt_img = np.zeros(img.shape, np.uint8)
        gt_img = add_polygons(gt_img, info_reader)

        img = down_sample(img, 2)
        gt_img = down_sample(gt_img, 2, dim=2)

        new_img_name = '{}{}_RGB.tif'.format(city_name, img_id)
        new_gt_name = '{}{}_GT.png'.format(city_name, img_id)

        imageio.imsave(os.path.join(img_dir, new_img_name), img)
        imageio.imsave(os.path.join(img_dir, new_gt_name), gt_img)

        if check_result:
            plt.figure(figsize=(10, 8))
            # ax1 = plt.subplot(211)
            img = util_functions.add_mask(img, gt_img, [255, 0, 0], mask_1=1)
            plt.imshow(img)
            plt.axis('off')
            '''ax2 = plt.subplot(212, sharex=ax1, sharey=ax1)
            plt.imshow(gt_img)
            plt.axis('off')'''
            plt.tight_layout()
            plt.show()
Esempio n. 10
0
        pred_4 = evaluate_on_a_patch([chip_size, chip_size], X_batch_4)

        # stitch
        pred_stitch = np.zeros_like(pred)
        pred_stitch[6:6 + 324, 6:6 + 324] = pred_1
        pred_stitch[330:330 + 324, 6:6 + 324] = pred_2
        pred_stitch[6:6 + 324, 330:330 + 324] = pred_3
        pred_stitch[330:330 + 324, 330:330 + 324] = pred_4

        # diff
        pred_diff = pred - pred_stitch
        gt_window = gt[92:chip_size_large - 92, 92:chip_size_large - 92]
        gt_plot = tile[92:chip_size_large-92,92:chip_size_large-92,:] + img_mean
        gt_cmp_large = 255 + np.zeros((gt_window.shape[0], gt_window.shape[1], 3), dtype=np.float32)
        gt_cmp_small = 255 + np.zeros((gt_window.shape[0], gt_window.shape[1], 3), dtype=np.float32)
        gt_plot = util_functions.add_mask(gt_plot, gt_window, [0, 0, 0], 255)
        gt_cmp_large = util_functions.add_mask(gt_cmp_large, gt_window, [0, 0, 0], 255)
        gt_cmp_large = util_functions.add_mask(gt_cmp_large, gt_window/255-pred, [255, 0, 0], 1)
        gt_cmp_large = util_functions.add_mask(gt_cmp_large, gt_window/255-pred, [0, 255, 0], -1)
        gt_cmp_small = util_functions.add_mask(gt_cmp_small, gt_window, [0, 0, 0], 255)
        gt_cmp_small = util_functions.add_mask(gt_cmp_small, gt_window/255-pred_stitch, [255, 0, 0], 1)
        gt_cmp_small = util_functions.add_mask(gt_cmp_small, gt_window/255-pred_stitch, [0, 255, 0], -1)

        # compute iou
        iou_pred = util_functions.iou_metric(gt_window[6:-6, 6:-6]/255, pred[6:-6, 6:-6]) * 100
        iou_stitch = util_functions.iou_metric(gt_window[6:-6, 6:-6]/255, pred_stitch[6:-6, 6:-6]) * 100
        if not (np.isnan(iou_pred) or np.isnan(iou_stitch)):
            large_ious.append(iou_pred)
            small_ious.append(iou_stitch)

        # show
Esempio n. 11
0
        rgb_file = os.path.join(orig_dir, tile_id.replace('_', '-') + '_RGB.jpg')
        adjust_file = os.path.join(adjust_save_dir, tile_id.replace('_', '-') + '_RGB.jpg')
        p = imageio.imread(pred_file)
        g = imageio.imread(gt_file)
        rgb_orig = imageio.imread(rgb_file)
        rgb_adju = imageio.imread(adjust_file)

        _, cc_p = scipy.ndimage.label(p)
        _, cc_g = scipy.ndimage.label(g)

        pred_target_pixels[cnt_2, cnt_1] = np.sum(p)
        gt_target_pixels[cnt_2, cnt_1] = np.sum(g)
        pred_target_num[cnt_2, cnt_1] = cc_p
        gt_target_num[cnt_2, cnt_1] = cc_g

        masked_orig = add_mask(rgb_orig, g, [255, None, None], mask_1=1)
        masked_adju = add_mask(rgb_adju, p, [255, None, None], mask_1=1)

        plt.figure(figsize=(12, 6))
        ax1 = plt.subplot(121)
        plt.imshow(masked_orig)
        plt.axis('off')
        plt.title('CT')
        ax2 = plt.subplot(122, sharex=ax1, sharey=ax1)
        plt.imshow(masked_adju)
        plt.axis('off')
        plt.title('GBDX')
        plt.suptitle('{}'.format(tile_id))
        plt.tight_layout()
        plt.show()
Esempio n. 12
0
def get_error_mask_img(img, gt, mask):
    img = add_mask(img, gt, [None, None, None], mask_1=255)
    img = add_mask(img, mask, [255, None, None], mask_1=1)
    img = add_mask(img, mask, [None, None, 255], mask_1=-1)

    return img