Spaces:
Runtime error
Runtime error
| import json | |
| import argparse | |
| def parse_args(): | |
| parser = argparse.ArgumentParser("D2 model converter") | |
| parser.add_argument("--results", default="", type=str, help="Path to the GLEE output dir ") | |
| parser.add_argument("--refer", default="", type=str, help="Path to the BURST annotation val dir") | |
| return parser.parse_args() | |
| def main(): | |
| args = parse_args() | |
| ori_anno = json.load(open(args.results,'rb')) | |
| reference_anno = json.load(open(args.refer,'rb')) | |
| num_tracks = 0 | |
| num_miss_video = 0 | |
| id_mapping = {} | |
| for i, cate_info in enumerate(reference_anno['categories']): | |
| new_id = i | |
| old_id = cate_info['id'] | |
| id_mapping.update({new_id:old_id}) | |
| ref_sequences_dict = {} | |
| for ref in reference_anno['sequences']: | |
| ref_sequences_dict[ref['id']] = ref | |
| # ids = [v['category_id'] for v in ori_anno] | |
| sequences_dict = {} | |
| for seg in ori_anno: | |
| vid = seg['video_id'] | |
| if vid not in sequences_dict.keys(): | |
| # import pdb;pdb.set_trace() | |
| sequences_dict[vid] = { | |
| 'id': vid, | |
| 'width': ref_sequences_dict[vid]['width'], | |
| 'height': ref_sequences_dict[vid]['height'], | |
| 'seq_name': ref_sequences_dict[vid]['seq_name'], | |
| 'dataset': ref_sequences_dict[vid]['dataset'], | |
| 'annotated_image_paths': ref_sequences_dict[vid]['annotated_image_paths'], | |
| 'fps': ref_sequences_dict[vid]['fps'], | |
| 'segmentations': [{} for i in range(len(seg['segmentations']))], | |
| 'track_category_ids': {}, | |
| } | |
| track_id = str(len(sequences_dict[vid]['track_category_ids']) + 1) | |
| for frame, rles in enumerate(seg['segmentations']): | |
| sequences_dict[vid]['segmentations'][frame][track_id] = {'rle': rles['counts'], 'score':seg['score']} | |
| # import pdb;pdb.set_trace() | |
| sequences_dict[vid]['track_category_ids'][track_id] = id_mapping[seg['category_id']] | |
| results = {'sequences':[]} | |
| for k,v in sequences_dict.items(): | |
| results['sequences'].append(v) | |
| with open('converted_tao_results.json', 'w') as f: | |
| json.dump(results, f) | |
| if __name__ == "__main__": | |
| main() | |