def predict_tree2(): with open('texton_forest-%s.pkl' % dataset._name) as fp: tp = kontort.TextonPredict(pickle.load(fp)) with open('texton_forest2-%s.pkl' % dataset._name) as fp: tp2 = kontort.IntegralPredict(pickle.load(fp)) save_key() save_feature_hists(tp2.func_data, tp2.extra_dump_vars) num_masks = tp2.func_data[0][tp2.extra_dump_vars.index('num_masks')] print('Func Data2: [%s]' % str(tp2.func_data[0])) for num, (masks, image) in enumerate(dataset.segmentation_boxes()): ratio, image = resize(image) orig_image = image image = convert_color_bgr(image) image = make_masks(image) max_classes1, max_probs1, leaves1, all_probs1 = tp.predict(image, leaves=True, all_probs=True) print('Num Tree 1 Leaves[%d]' % tp.num_leaves) pred_integrals = convert_leaves_all_probs_pred(image, leaves1, all_probs1, tp.num_leaves) preds, integrals = pred_integrals print('num_masks[%s] integrals_shape[%s]' % (num_masks, integrals.shape)) assert num_masks == integrals.shape[-1] max_classes2, max_probs2, all_probs2 = tp2.predict(pred_integrals, all_probs=True) out = colors[max_classes2] del integrals try: os.makedirs(out_root + '/view') except OSError: pass cv2.imwrite('%s/view/%.05d-mask.png' % (out_root, num), out) orig_image.save('%s/view/%.05d-img.png' % (out_root, num)) cv2.imwrite('%s/view/%.05d-texton.png' % (out_root, num), texton_colors[leaves1]) with gzip.GzipFile('%s/view/%.05d.pkl.gz' % (out_root, num), 'w') as fp: pickle.dump({'max_classes1': max_classes1, 'max_probs1': max_probs1, 'leaves1': leaves1, 'all_probs1': all_probs1, 'max_classes2': max_classes2, 'max_probs2': max_probs2, 'all_probs2': all_probs2, 'gt_masks': masks, 'image': image, 'classes': classes}, fp, -1)
def map(self, k, v): """ Args: k: Filename v: (image_data, label_points) Yields: (k, (integral, label_points)) """ image_data, label_points = v argmax, max_probs, leaves, all_probs = self.tp.predict(image_data, all_probs=True, leaves=True) print("Leaves[%s] AllProbs[%s]" % (str(leaves.shape), str(all_probs.shape))) if self.integral_type == "argmax": out = np.ascontiguousarray(imseg.convert_labels_to_integrals(argmax, self.tp.num_classes)) elif self.integral_type == "argmax_prob": out = np.ascontiguousarray(imseg.convert_labels_probs_to_integrals(argmax, max_probs, self.tp.num_classes)) elif self.integral_type == "all_prob": out = np.ascontiguousarray(imseg.convert_all_probs_to_integrals(all_probs)) elif self.integral_type == "spatial": out = convert_leaves_all_probs_pred(image_data, leaves, all_probs, self.tp.num_leaves) yield k, (out, label_points)