def run_vot(self, debug=None, visdom_info=None): params = self.get_parameters() params.tracker_name = self.name params.param_name = self.parameter_name params.run_id = self.run_id debug_ = debug if debug is None: debug_ = getattr(params, 'debug', 0) if debug is None: visualization_ = getattr(params, 'visualization', False) else: visualization_ = True if debug else False params.visualization = visualization_ params.debug = debug_ self._init_visdom(visdom_info, debug_) tracker = self.create_tracker(params) tracker.initialize_features() import pytracking.evaluation.vot as vot def _convert_anno_to_list(vot_anno): vot_anno = [vot_anno[0][0][0], vot_anno[0][0][1], vot_anno[0][1][0], vot_anno[0][1][1], vot_anno[0][2][0], vot_anno[0][2][1], vot_anno[0][3][0], vot_anno[0][3][1]] return vot_anno def _convert_image_path(image_path): image_path_new = image_path[20:- 2] return "".join(image_path_new) """Run tracker on VOT.""" handle = vot.VOT("polygon") vot_anno_polygon = handle.region() vot_anno_polygon = _convert_anno_to_list(vot_anno_polygon) init_state = convert_vot_anno_to_rect(vot_anno_polygon, tracker.params.vot_anno_conversion_type) image_path = handle.frame() if not image_path: return image_path = _convert_image_path(image_path) image = self._read_image(image_path) tracker.initialize(image, {'init_bbox': init_state}) # Track while True: image_path = handle.frame() if not image_path: break image_path = _convert_image_path(image_path) image = self._read_image(image_path) out = tracker.track(image) state = out['target_bbox'] handle.report(vot.Rectangle(state[0], state[1], state[2], state[3])) segmentation = out['segmentation'] if 'segmentation' in out else None if self.visdom is not None: tracker.visdom_draw_tracking(image, out['target_bbox'], segmentation) elif tracker.params.visualization: self.visualize(image, out['target_bbox'], segmentation)
def run_vot2020(self, debug=None, visdom_info=None): params = self.get_parameters() params.tracker_name = self.name params.param_name = self.parameter_name params.run_id = self.run_id debug_ = debug if debug is None: debug_ = getattr(params, 'debug', 0) if debug is None: visualization_ = getattr(params, 'visualization', False) else: visualization_ = True if debug else False params.visualization = visualization_ params.debug = debug_ self._init_visdom(visdom_info, debug_) tracker = self.create_tracker(params) tracker.initialize_features() output_segmentation = tracker.predicts_segmentation_mask() import pytracking.evaluation.vot2020 as vot def _convert_anno_to_list(vot_anno): vot_anno = [vot_anno[0], vot_anno[1], vot_anno[2], vot_anno[3]] return vot_anno def _convert_image_path(image_path): return image_path """Run tracker on VOT.""" if output_segmentation: handle = vot.VOT("mask") else: handle = vot.VOT("rectangle") vot_anno = handle.region() image_path = handle.frame() if not image_path: return image_path = _convert_image_path(image_path) image = self._read_image(image_path) if output_segmentation: vot_anno_mask = vot.make_full_size(vot_anno, (image.shape[1], image.shape[0])) bbox = masks_to_bboxes(torch.from_numpy(vot_anno_mask), fmt='t').squeeze().tolist() else: bbox = _convert_anno_to_list(vot_anno) vot_anno_mask = None out = tracker.initialize(image, {'init_mask': vot_anno_mask, 'init_bbox': bbox}) if out is None: out = {} prev_output = OrderedDict(out) # Track while True: image_path = handle.frame() if not image_path: break image_path = _convert_image_path(image_path) image = self._read_image(image_path) info = OrderedDict() info['previous_output'] = prev_output out = tracker.track(image, info) prev_output = OrderedDict(out) if output_segmentation: pred = out['segmentation'].astype(np.uint8) else: state = out['target_bbox'] pred = vot.Rectangle(*state) handle.report(pred, 1.0) segmentation = out['segmentation'] if 'segmentation' in out else None if self.visdom is not None: tracker.visdom_draw_tracking(image, out['target_bbox'], segmentation) elif tracker.params.visualization: self.visualize(image, out['target_bbox'], segmentation)