Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)