def run_tracker(self): """ Run self.pipeline on VOT """ num_gpu = self._hyper_params["device_num"] all_devs = [torch.device("cuda:%d" % i) for i in range(num_gpu)] logger.info('runing test on devices {}'.format(all_devs)) vot_root = self._hyper_params["data_root"][self.dataset_name] logger.info('Using dataset %s at: %s' % (self.dataset_name, vot_root)) # setup dataset dataset = vot_benchmark.load_dataset(vot_root, self.dataset_name) self.dataset = dataset keys = list(dataset.keys()) keys.sort() if self._hyper_params["video_name_list"]: keys = self._hyper_params["video_name_list"] nr_records = len(keys) pbar = tqdm(total=nr_records) mean_speed = -1 total_lost = 0 speed_list = [] result_queue = mp.Queue(500) speed_queue = mp.Queue(500) # set worker if num_gpu == 1: self.worker(keys, all_devs[0], result_queue, speed_queue) for i in range(nr_records): t = result_queue.get() s = speed_queue.get() total_lost += t speed_list.append(s) pbar.update(1) else: nr_video = math.ceil(nr_records / num_gpu) procs = [] for i in range(num_gpu): start = i * nr_video end = min(start + nr_video, nr_records) split_records = keys[start:end] proc = mp.Process(target=self.worker, args=(split_records, all_devs[i], result_queue, speed_queue)) print('process:%d, start:%d, end:%d' % (i, start, end)) proc.start() procs.append(proc) for i in range(nr_records): t = result_queue.get() s = speed_queue.get() total_lost += t speed_list.append(s) pbar.update(1) for p in procs: p.join() # print result mean_speed = float(np.mean(speed_list)) logger.info('Total Lost: {:d}'.format(total_lost)) logger.info('Mean Speed: {:.2f} FPS'.format(mean_speed)) self._state['speed'] = mean_speed
# from .paths import ROOT_PATH # isort:skip import os.path as osp import sys # isort:skip # module_name = "debug" # p = __file__ # while osp.basename(p) != module_name: # p = osp.dirname(p) p = osp.dirname(osp.realpath(__file__)) p = osp.dirname(p) p = osp.join(p, "third_party", "video_analyst") ROOT_PATH = p # ROOT_CFG = osp.join(ROOT_PATH, 'config.yaml') sys.path.insert(0, ROOT_PATH) # isort:skip # ============== path ============== # import cv2 from videoanalyst.evaluation import vot_benchmark DATASET_DIR = osp.join(ROOT_PATH, "datasets/VOT/vot2018") # dataset = vot_benchmark.load_dataset("/home/lan/Documents/xuyinda/Projects/video_analyst/datasets/VOT/vot2018", "VOT2018") dataset = vot_benchmark.load_dataset(DATASET_DIR, "VOT2018") if __name__ == "__main__": from IPython import embed embed()