def run_sequence(seq: Sequence, tracker: Tracker, debug=False, visdom_info=None, noise=False, noise_mag=None): """Runs a tracker on a sequence.""" def _results_exist(): if seq.object_ids is None: bbox_file = '{}/{}.txt'.format(tracker.results_dir, seq.name) return os.path.isfile(bbox_file) else: bbox_files = [ '{}/{}_{}.txt'.format(tracker.results_dir, seq.name, obj_id) for obj_id in seq.object_ids ] missing = [not os.path.isfile(f) for f in bbox_files] return sum(missing) == 0 visdom_info = {} if visdom_info is None else visdom_info if _results_exist() and not debug: print('FPS: {}'.format(-1)) return print('Tracker: {} {} {} , Sequence: {}, Using noise: {} with mag {}'. format(tracker.name, tracker.parameter_name, tracker.run_id, seq.name, noise, noise_mag)) if debug: output = tracker.run_sequence(seq, debug=debug, visdom_info=visdom_info, noise=noise, noise_mag=noise_mag) else: # try: output = tracker.run_sequence(seq, debug=debug, visdom_info=visdom_info, noise=noise, noise_mag=noise_mag) # except Exception as e: # print(e) # return sys.stdout.flush() if isinstance(output['time'][0], (dict, OrderedDict)): exec_time = sum([sum(times.values()) for times in output['time']]) num_frames = len(output['time']) else: exec_time = sum(output['time']) num_frames = len(output['time']) print('FPS: {}'.format(num_frames / exec_time)) if not debug: _save_tracker_output(seq, tracker, output)
def run_sequence(seq: Sequence, tracker: Tracker, debug=False, visdom_info=None): """Runs a tracker on a sequence.""" def _results_exist(): if not tracker.if_rt: bbox_file = '{}/{}.txt'.format(tracker.results_dir, seq.name) else: bbox_file = '{}/{}.pkl'.format(tracker.results_dir_rt, seq.name) return os.path.isfile(bbox_file) visdom_info = {} if visdom_info is None else visdom_info if _results_exist() and not debug: print('FPS: {}'.format(-1)) return print('Tracker: {} {} {} , Sequence: {}'.format(tracker.name, tracker.parameter_name, tracker.run_id, seq.name)) if debug: output = tracker.run_sequence(seq, debug=debug, visdom_info=visdom_info) else: try: output = tracker.run_sequence(seq, debug=debug, visdom_info=visdom_info) except Exception as e: print(e) return sys.stdout.flush() if not tracker.if_rt: if isinstance(output['time'][0], (dict, OrderedDict)): exec_time = sum([sum(times.values()) for times in output['time']]) num_frames = len(output['time']) else: exec_time = sum(output['time']) num_frames = len(output['time']) else: if isinstance(output['runtime'][0], (dict, OrderedDict)): exec_time = sum( [sum(times.values()) for times in output['runtime']]) num_frames = len(output['runtime']) else: exec_time = sum(output['runtime']) num_frames = len(output['runtime']) print('FPS: {}'.format(num_frames / exec_time)) if not debug: _save_tracker_output(seq, tracker, output)
def run_sequence(seq: Sequence, tracker: Tracker, debug=False): """Runs a tracker on a sequence.""" def _results_exist(): if seq.object_ids is None: bbox_file = '{}/{}.txt'.format(tracker.results_dir, seq.name) return os.path.isfile(bbox_file) else: bbox_files = [ '{}/{}_{}.txt'.format(tracker.results_dir, seq.name, obj_id) for obj_id in seq.object_ids ] missing = [not os.path.isfile(f) for f in bbox_files] return sum(missing) == 0 if _results_exist() and not debug: logging.warning("results exist in not debug mode") return logging.info('Sequence: {}'.format(seq.name)) try: # focus 核心入口,此时的tracker只是一个 pytracking.evaluation.Tracker output = tracker.run_sequence(seq, debug=debug) except Exception as e: print(e) return sys.stdout.flush() # 计算用时 if isinstance(output['time'][0], (dict, OrderedDict)): exec_time = sum([sum(times.values()) for times in output['time']]) num_frames = len(output['time']) else: exec_time = sum(output['time']) num_frames = len(output['time']) logging.info('FPS: {}'.format(num_frames / exec_time)) if not debug: _save_tracker_output(seq, tracker, output)