import os import json import argparse import pathlib from load_aokvqa import load_aokvqa parser = argparse.ArgumentParser() parser.add_argument('--aokvqa-dir', type=pathlib.Path, required=True, dest='aokvqa_dir') parser.add_argument('--coco-dir', type=pathlib.Path, required=True, dest='coco_dir') parser.add_argument('--split', type=str, choices=['train', 'val'], required=True) parser.add_argument('--out', type=argparse.FileType('w'), required=True, dest='output_file') args = parser.parse_args() aokvqa_set = load_aokvqa(args.aokvqa_dir, args.split) coco_captions = json.load(open(os.path.join(args.coco_dir, 'annotations', f'captions_{args.split}2017.json')))['annotations'] coco_captions = {c['image_id'] : c['caption'] for c in coco_captions} captions = { d['question_id'] : coco_captions[d['image_id']] for d in aokvqa_set } json.dump(captions, args.output_file)