def load_annotations(self): assert self.data_type == "mot" gt_filename = os.path.join(self.data_root, self.seq_name, "gt", "gt.txt") self.gt_frame_dict = read_results(gt_filename, self.data_type, is_gt=True) self.gt_ignore_frame_dict = read_results( gt_filename, self.data_type, is_ignore=True )
def load_annotations(self): # 读取了两种数据,第二种方式忽略了一部分行人框 assert self.data_type == 'mot' gt_filename = os.path.join(self.data_root, self.seq_name, 'gt', 'gt.txt') self.gt_frame_dict = read_results(gt_filename, self.data_type, is_gt=True) # 加载ground truth, self.gt_ignore_frame_dict = read_results(gt_filename, self.data_type, is_ignore=True)
def load_annotations(self): assert self.data_type == 'mot' gt_filename = os.path.join(self.data_root, self.seq_name, 'gt', 'gt.txt') print('gt_filename', gt_filename) self.gt_frame_dict = read_results(gt_filename, self.data_type, is_gt=True) self.gt_ignore_frame_dict = read_results(gt_filename, self.data_type, is_ignore=True)
def load_annotations(self): assert self.data_type == 'mot' gt_filename = os.path.join(self.data_root, self.seq_name, 'gt', 'gt.txt') self.gt_frame_dict = read_results(gt_filename, self.data_type, is_gt=True) self.gt_ignore_frame_dict = read_results(gt_filename, self.data_type, is_ignore=True) if not os.path.exists(gt_filename): print('gt file not found, empty gt assumed.') else: print('len %d loaded from gt' % len(self.gt_frame_dict))
def eval_file(self, filename): self.reset_accumulator() result_frame_dict = read_results(filename, self.data_type, is_gt=False) #frames = sorted(list(set(self.gt_frame_dict.keys()) | set(result_frame_dict.keys()))) frames = sorted(list(set(result_frame_dict.keys()))) for frame_id in frames: trk_objs = result_frame_dict.get(frame_id, []) trk_tlwhs, trk_ids = unzip_objs(trk_objs)[:2] self.eval_frame(frame_id, trk_tlwhs, trk_ids, rtn_events=False) return self.acc
def eval_file(self, filename): self.reset_accumulator() result_frame_dict = read_results(filename, self.data_type, is_gt=False) # 加载检测结果 frames = sorted( list( set(self.gt_frame_dict.keys()) | set(result_frame_dict.keys()))) # 帧的并集 for frame_id in frames: trk_objs = result_frame_dict.get(frame_id, []) trk_tlwhs, trk_ids = unzip_objs(trk_objs)[:2] # 预测track中的边框、id self.eval_frame(frame_id, trk_tlwhs, trk_ids, rtn_events=False) # 用于和ground truth进行计算 return self.acc
def eval_file(self, filename): self.reset_accumulator() if self.return_fn and self.return_fp: fns = {} fps = {} matched = {} fp_confs = {} result_frame_dict = read_results(filename, self.data_type, is_gt=False) frames = sorted( list( set(self.gt_frame_dict.keys()) | set(result_frame_dict.keys()))) for frame_id in frames: trk_objs = result_frame_dict.get(frame_id, []) trk_tlwhs, trk_ids, trk_confs = unzip_objs(trk_objs) trk_confs = np.array(trk_confs) if self.return_fn and self.return_fp: _, oids_masked, hids_masked = self.eval_frame(frame_id, trk_tlwhs, trk_ids, rtn_events=False) gt_objs = self.gt_frame_dict.get(frame_id, []) gt_tlwhs, gt_ids = unzip_objs(gt_objs)[:2] # These are the matched boxes matched[frame_id] = {} matched[frame_id]['gt'] = gt_tlwhs[oids_masked] matched[frame_id]['trk'] = trk_tlwhs[hids_masked] matched[frame_id]['trk_confs'] = trk_confs[hids_masked] # FN FP fns[frame_id] = gt_tlwhs[~oids_masked] fps[frame_id] = trk_tlwhs[~hids_masked] fp_confs[frame_id] = trk_confs[~hids_masked] else: self.eval_frame(frame_id, trk_tlwhs, trk_ids, rtn_events=False) if self.return_fn and self.return_fp: return self.acc, fns, fps, matched, fp_confs return self.acc