|
import os |
|
import json |
|
from refer import REFER |
|
|
|
coco_root = '/pth/to/coco' |
|
ref_root = '/pth/to/refcocoseg' |
|
|
|
coco_train_annot = json.load(open(os.path.join(coco_root, 'annotations/instances_train2017.json'))) |
|
coco_train_id = [] |
|
image_annot = {} |
|
for i in range(len(coco_train_annot['images'])): |
|
coco_train_id.append(coco_train_annot['images'][i]['id']) |
|
image_annot[coco_train_annot['images'][i]['id']] = coco_train_annot['images'][i] |
|
|
|
refg = REFER(data_root=ref_root, |
|
dataset='refcocog', splitBy='umd') |
|
refg_val_ids = refg.getRefIds(split='val') |
|
|
|
full_anno = [] |
|
for ref_id in refg_val_ids: |
|
ref = refg.loadRefs(ref_id)[0] |
|
anno = refg.refToAnn[ref_id] |
|
anno.update(ref) |
|
full_anno.append(anno) |
|
|
|
imageid_list = [] |
|
final_anno = {} |
|
for anno in full_anno: |
|
imageid_list += [anno['image_id']] |
|
final_anno[anno['ann_id']] = anno |
|
|
|
annotations = [value for key, value in final_anno.items()] |
|
|
|
iamges = [] |
|
for image_id in list(set(imageid_list)): |
|
iamges += [image_annot[image_id]] |
|
|
|
outputs = {'images': iamges, 'annotations': annotations} |
|
print(len(iamges)) |
|
print(len(annotations)) |
|
json.dump(outputs, open(os.path.join(coco_root, 'annotations/refcocog_umd_train.json'), 'w')) |
|
|