def cluster(self, sem_seg_prediction, ins_seg_prediction, n_objects_prediction): seg_height, seg_width = ins_seg_prediction.shape[1:] sem_seg_prediction = sem_seg_prediction.cpu().numpy() sem_seg_prediction = sem_seg_prediction.argmax(0).astype(np.uint8) embeddings = ImageUtilities.coordinate_adder( seg_height, seg_width)(ins_seg_prediction) embeddings = embeddings.cpu().numpy() embeddings = embeddings.transpose(1, 2, 0) # h, w, c n_objects_prediction = n_objects_prediction.cpu().numpy()[0] embeddings = np.stack([ embeddings[:, :, i][sem_seg_prediction != 0] for i in range(embeddings.shape[2]) ], axis=1) clustering = SpectralClustering(n_clusters=n_objects_prediction, eigen_solver=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol=0.0, assign_labels='discretize', degree=3, coef0=1, kernel_params=None, n_jobs=self.n_workers).fit(embeddings) labels = clustering.labels_ instance_mask = np.zeros((seg_height, seg_width), dtype=np.uint8) fg_coords = np.where(sem_seg_prediction != 0) for si in range(len(fg_coords[0])): y_coord = fg_coords[0][si] x_coord = fg_coords[1][si] _label = labels[si] + 1 instance_mask[y_coord, x_coord] = _label return sem_seg_prediction, instance_mask, n_objects_prediction
def __init__(self, resize_height, resize_width, mean, std, use_coordinates, model, n_workers): self.normalizer = ImageUtilities.image_normalizer(mean, std) self.use_coordinates = use_coordinates self.resize_height = resize_height self.resize_width = resize_width self.model = model self.n_workers = n_workers self.img_resizer = ImageUtilities.image_resizer( self.resize_height, self.resize_width) if self.use_coordinates: self.coordinate_adder = ImageUtilities.coordinate_adder( self.resize_height, self.resize_width)
def __init__(self, resize_height, resize_width, mean, std, use_coordinates, model, n_workers): self.normalizer = ImageUtilities.image_normalizer(mean, std) self.use_coordinates = use_coordinates self.resize_height = resize_height self.resize_width = resize_width self.model = model self.n_workers = n_workers self.img_resizer = ImageUtilities.image_resizer( self.resize_height, self.resize_width) if self.use_coordinates: self.coordinate_adder = ImageUtilities.coordinate_adder( self.resize_height, self.resize_width)
def cluster(self, sem_seg_prediction, ins_seg_prediction, n_objects_prediction): seg_height, seg_width = ins_seg_prediction.shape[1:] sem_seg_prediction = sem_seg_prediction.cpu().numpy() sem_seg_prediction = sem_seg_prediction.argmax(0).astype(np.uint8) embeddings = ImageUtilities.coordinate_adder( seg_height, seg_width)(ins_seg_prediction) embeddings = embeddings.cpu().numpy() embeddings = embeddings.transpose(1, 2, 0) # h, w, c n_objects_prediction = n_objects_prediction.cpu().numpy()[0] embeddings = np.stack([embeddings[:, :, i][sem_seg_prediction != 0] for i in range(embeddings.shape[2])], axis=1) clustering = SpectralClustering(n_clusters=n_objects_prediction, eigen_solver=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol=0.0, assign_labels='discretize', degree=3, coef0=1, kernel_params=None, n_jobs=self.n_workers).fit(embeddings) labels = clustering.labels_ instance_mask = np.zeros((seg_height, seg_width), dtype=np.uint8) fg_coords = np.where(sem_seg_prediction != 0) for si in range(len(fg_coords[0])): y_coord = fg_coords[0][si] x_coord = fg_coords[1][si] _label = labels[si] + 1 instance_mask[y_coord, x_coord] = _label return sem_seg_prediction, instance_mask, n_objects_prediction
def __init__(self, mode, n_classes, max_n_objects, mean, std, image_height, image_width, random_hor_flipping=True, random_ver_flipping=True, random_90x_rotation=True, random_rotation=True, random_color_jittering=True, use_coordinates=False): self._mode = mode self.n_classes = n_classes self.max_n_objects = max_n_objects assert self._mode in ['training', 'test'] self.mean = mean self.std = std self.image_height = image_height self.image_width = image_width self.random_horizontal_flipping = random_hor_flipping self.random_vertical_flipping = random_ver_flipping self.random_90x_rotation = random_90x_rotation self.random_rotation = random_rotation self.random_color_jittering = random_color_jittering self.use_coordinates = use_coordinates if self._mode == 'training': if self.random_horizontal_flipping: self.horizontal_flipper = IU.image_random_horizontal_flipper() if self.random_vertical_flipping: self.vertical_flipper = IU.image_random_vertical_flipper() if self.random_90x_rotation: self.rotator_90x = IU.image_random_90x_rotator() if self.random_rotation: self.rotator = IU.image_random_rotator(expand=True) if self.random_color_jittering: self.color_jitter = IU.image_random_color_jitter( brightness=0.1, contrast=0.1, saturation=0.1, hue=0.1) self.img_resizer = IU.image_resizer(self.image_height, self.image_width) self.ann_resizer = IU.image_resizer(self.image_height, self.image_width, interpolation=Image.NEAREST) else: self.img_resizer = IU.image_resizer(self.image_height, self.image_width) self.ann_resizer = IU.image_resizer(self.image_height, self.image_width, interpolation=Image.NEAREST) self.image_normalizer = IU.image_normalizer(self.mean, self.std) if self.use_coordinates: self.coordinate_adder = IU.coordinate_adder( self.image_height, self.image_width)