def postprocess(self, y): if self.labeled_segments: y, coordinates = y else: coordinates = [] if self.type == "auto": if isinstance(y, np.ndarray): dtype = "numpy" elif isinstance(y, PIL.Image.Image): dtype = "pil" elif isinstance(y, str): dtype = "file" elif isinstance(y, ModuleType): dtype = "plot" else: raise ValueError("Unknown type. Please choose from: 'numpy', 'pil', 'file', 'plot'.") else: dtype = self.type if dtype in ["numpy", "pil"]: if dtype == "pil": y = np.array(y) out_y = processing_utils.encode_array_to_base64(y) elif dtype == "file": out_y = processing_utils.encode_file_to_base64(y) elif dtype == "plot": out_y = processing_utils.encode_plot_to_base64(y) else: raise ValueError("Unknown type: " + dtype + ". Please choose from: 'numpy', 'pil', 'file', 'plot'.") return out_y, coordinates
def postprocess(self, y): """ Parameters: y (Union[numpy.array, PIL.Image, str, matplotlib.pyplot, Tuple[Union[numpy.array, PIL.Image, str], List[Tuple[str, float, float, float, float]]]]): image in specified format Returns: (str): base64 url data """ if self.type == "auto": if isinstance(y, np.ndarray): dtype = "numpy" elif isinstance(y, PIL.Image.Image): dtype = "pil" elif isinstance(y, str): dtype = "file" elif isinstance(y, ModuleType): dtype = "plot" else: raise ValueError( "Unknown type. Please choose from: 'numpy', 'pil', 'file', 'plot'." ) else: dtype = self.type if dtype in ["numpy", "pil"]: if dtype == "pil": y = np.array(y) out_y = processing_utils.encode_array_to_base64(y) elif dtype == "file": out_y = processing_utils.encode_url_or_file_to_base64(y) elif dtype == "plot": out_y = processing_utils.encode_plot_to_base64(y) else: raise ValueError( "Unknown type: " + dtype + ". Please choose from: 'numpy', 'pil', 'file', 'plot'.") return out_y
def test_default_image(self): max_pixel_value = lambda img: img.max() img_interface = Interface(max_pixel_value, "image", "number", interpretation="default") array = np.zeros((100,100)) array[0, 0] = 1 img = encode_array_to_base64(array) interpretation = img_interface.interpret([img])[0] self.assertGreater(interpretation[0][0], 0) # Checks to see if the top-left has >0 score.
def postprocess(self, y): if self.type in ["numpy", "pil"]: if self.type == "pil": y = np.array(y) return processing_utils.encode_array_to_base64(y) elif self.type == "file": return processing_utils.encode_file_to_base64(y) elif self.type == "plot": return processing_utils.encode_plot_to_base64(y) else: raise ValueError("Unknown type: " + self.type + ". Please choose from: 'numpy', 'pil', 'file', 'plot'.")
def get_interpretation_neighbors(self, x): x = processing_utils.decode_base64_to_image(x) if self.shape is not None: x = processing_utils.resize_and_crop(x, self.shape) image = np.array(x) segments_slic = slic(image, self.interpretation_segments, compactness=10, sigma=1) leave_one_out_tokens, masks = [], [] replace_color = np.mean(image, axis=(0, 1)) for (i, segVal) in enumerate(np.unique(segments_slic)): mask = segments_slic == segVal white_screen = np.copy(image) white_screen[segments_slic == segVal] = replace_color leave_one_out_tokens.append( processing_utils.encode_array_to_base64(white_screen)) masks.append(mask) return leave_one_out_tokens, {"masks": masks}, True