def eval_seq(opt, dataloader, data_type, result_filename, save_dir=None, show_image=True, frame_rate=30): if save_dir: mkdir_if_missing(save_dir) tracker = JDETracker(opt, frame_rate=frame_rate) timer = Timer() results = [] frame_id = 0 tid_max, tid_temp = 1, 1 for path, img, img0 in dataloader: if frame_id < 300: frame_id += 1 continue elif frame_id > 302: break else: print(frame_id) filename = path.split('/')[-1] if '0000001' in path: tid_max = tid_temp + 1 print(path, tid_max) tracker = JDETracker(opt, frame_rate=frame_rate) if frame_id % 100 == 0: logger.info('Processing frame {} ({:.2f} fps)'.format( frame_id, 1. / max(1e-5, timer.average_time))) # if frame_id >20: # break # run tracking timer.tic() blob = torch.from_numpy(img).cuda().unsqueeze(0) online_targets = tracker.update_sep3( blob, img0, conf_thres=[0.4, 0.3, 0.4, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5]) # print(online_targets) online_tlwhs = [] online_ids = [] online_cids = [] #class id for t in online_targets: tlwh = t.tlwh tid = t.track_id + tid_max tcid = t.class_id vertical = tlwh[2] / tlwh[3] > 1.6 if tlwh[2] * tlwh[3] > opt.min_box_area: # and not vertical: online_tlwhs.append(tlwh) online_ids.append(tid) online_cids.append(tcid) tid_temp = max(tid, tid_temp) timer.toc() # save results results.append((filename, online_tlwhs, online_ids, online_cids)) if show_image or save_dir is not None: online_im = vis.plot_tracking(img0, online_tlwhs, online_ids, frame_id=frame_id, fps=1. / timer.average_time) if show_image: cv2.imshow('online_im', online_im) if save_dir is not None: cv2.imwrite(os.path.join(save_dir, '{:05d}.jpg'.format(frame_id)), online_im) frame_id += 1 # save results write_results(result_filename, results, data_type) return frame_id, timer.average_time, timer.calls
def eval_seq(opt, dataloader, data_type, result_filename, gt_filename, save_dir=None, show_image=True, frame_rate=30): if save_dir: mkdir_if_missing(save_dir) tracker = JDETracker(opt, frame_rate=frame_rate) timer = Timer() results = [] gts = [] frame_id = 0 tid_max, tid_temp = 1, 1 for path, img, img0 in dataloader: if frame_id % 100 == 0: logger.info('Processing frame {} ({:.2f} fps)'.format(frame_id, 1. / max(1e-5, timer.average_time))) # if frame_id>400: # break if '0000001' in path: tid_max = tid_temp tracker = JDETracker(opt, frame_rate=frame_rate) # run tracking timer.tic() blob = torch.from_numpy(img).cuda().unsqueeze(0) # online_targets = tracker.update(blob, img0) online_targets = tracker.update_sep3(blob, img0, conf_thres=[0.4, 0.3, 0.4, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5]) ## use class-separated tracker # print(online_targets) online_tlwhs = [] online_ids = [] online_cids = [] #class id for t in online_targets: tlwh = t.tlwh tid = t.track_id + tid_max tcid = t.class_id # vertical = tlwh[2] / tlwh[3] > 1.6 # if tlwh[2] * tlwh[3] > opt.min_box_area and not vertical: if tlwh[2] * tlwh[3] > opt.min_box_area: online_tlwhs.append(tlwh) online_ids.append(tid) online_cids.append(tcid) tid_temp = max(tid, tid_temp) timer.toc() gt_tlwhs = [] gt_ids = [] gt_cids = [] gt_path = path.replace('images', 'labels_with_ids').replace('jpg', 'txt') gt_targets = read_gt_txts(gt_path) for (tlwh, tid, tcid) in gt_targets: gt_tlwhs.append(tlwh) gt_ids.append(tid) gt_cids.append(tcid) # save results results.append((frame_id + 1, online_tlwhs, online_ids, online_cids)) # save gts gts.append((frame_id + 1, gt_tlwhs, gt_ids, gt_cids)) if show_image or save_dir is not None: online_im = vis.plot_tracking(img0, online_tlwhs, online_ids, frame_id=frame_id, fps=1. / timer.average_time) if show_image: cv2.imshow('online_im', online_im) if save_dir is not None: cv2.imwrite(os.path.join(save_dir, '{:05d}.jpg'.format(frame_id)), online_im) frame_id += 1 # save results write_results(result_filename, results, data_type) # save gts write_results(gt_filename, gts, data_type) return frame_id, timer.average_time, timer.calls