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
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
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()
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()
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()
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')
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()
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()
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
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()
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