def run_mots_eval(result_dir, sequences, gt_folder, seqmap_filename): seqmap, max_frames = load_seqmap(seqmap_filename) print("Loading ground truth...") gt = load_gt_sequences(gt_folder, sequences) print("Loading results...") results = load_sequences(result_dir, sequences) print("Compute KITTI tracking eval with simplified matching and MOTSA") print("Evaluate class: Cars") results_cars = evaluate_class(gt, results, max_frames, 1) print("Evaluate class: Pedestrians") results_ped = evaluate_class(gt, results, max_frames, 2) print("Results for table (no *)") print("%.1f" % (results_cars.sMOTSA * 100.0), "%.1f" % (results_ped.sMOTSA * 100.0), "%.1f" % (results_cars.MOTSA * 100.0), "%.1f" % (results_ped.MOTSA * 100.0), "%.1f" % (results_cars.MOTSP * 100.0), "%.1f" % (results_ped.MOTSP * 100.0), results_cars.id_switches, results_ped.id_switches, sep="\t") print("Results for table (*)") print("%.1f" % (results_cars.sMOTSA_all_ids * 100.0), "%.1f" % (results_ped.sMOTSA_all_ids * 100.0), "%.1f" % (results_cars.MOTSA_all_ids * 100.0), "%.1f" % (results_ped.MOTSA_all_ids * 100.0), "%.1f" % (results_cars.MOTSP * 100.0), "%.1f" % (results_ped.MOTSP * 100.0), results_cars.id_switches_all, results_ped.id_switches_all, sep="\t")
def visualize_sequences(sequences, result_folder, img_folder, output_folder, seqmap_filename, draw_boxes=False, create_video=True): seqmap, max_frames = load_seqmap(seqmap_filename) for seq_id in sequences: os.makedirs(output_folder + "/" + seq_id, exist_ok=True) print("Processing sequence", seq_id) tracks = load_sequences(result_folder, [seq_id])[seq_id] max_frames_seq = max_frames[seq_id] visualize_sequence(seq_id, tracks, max_frames_seq, img_folder, output_folder, draw_boxes, create_video)
print(sequence) for frame in objects_per_frame.keys(): for object in objects_per_frame.get(frame): if not object.track_id == 10000: track_id = (object.track_id % 1000) det = {'class': object.class_id} while tracks_gt.get_num_ids() <= track_id: tracks_gt.add_empty_track() tracks_gt.add_to_track(frame, track_id, det, object.mask) if __name__ == '__main__': config = Config('./configs/config_default') list_sequences, max_frames = load_seqmap(config.str('mots_seqmap_file')) for sequence in list_sequences: tracks_gt = TrackedSequence(max_frames[sequence] + 1) import_gt_file('./data/mots_gt/' + sequence + '.txt') raw_detections = import_detections(config, sequence) segmentations = import_segmentations(config, sequence) tracks_gt_seg = TrackedSequence(max_frames[sequence] + 1) while max_frames[sequence] + 1 > len(raw_detections): raw_detections.append([]) while max_frames[sequence] + 1 > len(segmentations): segmentations.append([])
dest='compute_poses', type=bool, default=True) parser.add_argument( '-compute_point_imgs', help='compute 3 channel point images using camera parameters', dest='compute_point_imgs', type=bool, default=True) args = parser.parse_args() config = Config(args.config) if args.compute_seg: refinement_net = refinement_net_init(config.str('segmentor_modelpath')) list_sequences, _ = load_seqmap(config.str('mots_seqmap_file')) for sequence in list_sequences: print(sequence) sequence_dir = config.dir('data_dir') + 'images/' + sequence + '/' calibration_params = CalibrationParameters(sequence_dir + sequence + '.txt') if args.compute_seg: print('computing segmentations..') detections = import_detections(config, sequence) compute_segmentations( refinement_net, sequence_dir, config.dir('segmentations_savedir') + sequence + '/',