def __call__(self, masks): if masks.ndim == 3: masks = masks.reshape(1, masks.shape[0], masks.shape[1], masks.shape[2]) class_params = self.class_params.items() class_params.sort(key=lambda x: x[0]) outs = [] for mask in masks: out = [] for class_num, params in class_params: class_mask = np.ascontiguousarray(resize_mask(mask[:, :, class_num])) for p in params['params']: out.append(compute_mask_rect_area(class_mask, p['rect']) >= p['t']) outs.append(out) return image_search._bool_to_hash(np.array(outs))
def _postprocess(self, features): features = self._condition_features(features, pad=True) return image_search._bool_to_hash(features > self.median_feature)