|
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 |
|
|
|
|
|
|
|
|
|
sequences_dict = {} |
|
|
|
for seg in ori_anno: |
|
vid = seg['video_id'] |
|
if vid not in sequences_dict.keys(): |
|
|
|
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']} |
|
|
|
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() |
|
|
|
|
|
|
|
|