Spaces:
Runtime error
Runtime error
| import os, sys | |
| import csv | |
| try: | |
| import numpy as np | |
| except: | |
| # print "Failed to import numpy package." | |
| sys.exit(-1) | |
| try: | |
| import imageio | |
| except: | |
| print("Please install the module 'imageio' for image processing, e.g.") | |
| print("pip install imageio") | |
| sys.exit(-1) | |
| # print an error message and quit | |
| def print_error(message, user_fault=False): | |
| sys.stderr.write('ERROR: ' + str(message) + '\n') | |
| if user_fault: | |
| sys.exit(2) | |
| sys.exit(-1) | |
| # if string s represents an int | |
| def represents_int(s): | |
| try: | |
| int(s) | |
| return True | |
| except ValueError: | |
| return False | |
| def read_label_mapping(filename, label_from='raw_category', label_to='nyu40id'): | |
| assert os.path.isfile(filename) | |
| mapping = dict() | |
| with open(filename) as csvfile: | |
| reader = csv.DictReader(csvfile, delimiter='\t') | |
| for row in reader: | |
| mapping[row[label_from]] = int(row[label_to]) | |
| # if ints convert | |
| if represents_int(list(mapping.keys())[0]): | |
| mapping = {int(k): v for k, v in mapping.items()} | |
| return mapping | |
| # input: scene_types.txt or scene_types_all.txt | |
| def read_scene_types_mapping(filename, remove_spaces=True): | |
| assert os.path.isfile(filename) | |
| mapping = dict() | |
| lines = open(filename).read().splitlines() | |
| lines = [line.split('\t') for line in lines] | |
| if remove_spaces: | |
| mapping = {x[1].strip(): int(x[0]) for x in lines} | |
| else: | |
| mapping = {x[1]: int(x[0]) for x in lines} | |
| return mapping | |
| # color by label | |
| def visualize_label_image(filename, image): | |
| height = image.shape[0] | |
| width = image.shape[1] | |
| vis_image = np.zeros([height, width, 3], dtype=np.uint8) | |
| color_palette = create_color_palette() | |
| for idx, color in enumerate(color_palette): | |
| vis_image[image == idx] = color | |
| imageio.imwrite(filename, vis_image) | |
| # color by different instances (mod length of color palette) | |
| def visualize_instance_image(filename, image): | |
| height = image.shape[0] | |
| width = image.shape[1] | |
| vis_image = np.zeros([height, width, 3], dtype=np.uint8) | |
| color_palette = create_color_palette() | |
| instances = np.unique(image) | |
| for idx, inst in enumerate(instances): | |
| vis_image[image == inst] = color_palette[inst % len(color_palette)] | |
| imageio.imwrite(filename, vis_image) | |
| # color palette for nyu40 labels | |
| def create_color_palette(): | |
| return [ | |
| (0, 0, 0), | |
| (174, 199, 232), # wall | |
| (152, 223, 138), # floor | |
| (31, 119, 180), # cabinet | |
| (255, 187, 120), # bed | |
| (188, 189, 34), # chair | |
| (140, 86, 75), # sofa | |
| (255, 152, 150), # table | |
| (214, 39, 40), # door | |
| (197, 176, 213), # window | |
| (148, 103, 189), # bookshelf | |
| (196, 156, 148), # picture | |
| (23, 190, 207), # counter | |
| (178, 76, 76), | |
| (247, 182, 210), # desk | |
| (66, 188, 102), | |
| (219, 219, 141), # curtain | |
| (140, 57, 197), | |
| (202, 185, 52), | |
| (51, 176, 203), | |
| (200, 54, 131), | |
| (92, 193, 61), | |
| (78, 71, 183), | |
| (172, 114, 82), | |
| (255, 127, 14), # refrigerator | |
| (91, 163, 138), | |
| (153, 98, 156), | |
| (140, 153, 101), | |
| (158, 218, 229), # shower curtain | |
| (100, 125, 154), | |
| (178, 127, 135), | |
| (120, 185, 128), | |
| (146, 111, 194), | |
| (44, 160, 44), # toilet | |
| (112, 128, 144), # sink | |
| (96, 207, 209), | |
| (227, 119, 194), # bathtub | |
| (213, 92, 176), | |
| (94, 106, 211), | |
| (82, 84, 163), # otherfurn | |
| (100, 85, 144) | |
| ] | |