Spaces:
Runtime error
Runtime error
| # -------------------------------------------------------- | |
| # mcan-vqa (Deep Modular Co-Attention Networks) | |
| # Licensed under The MIT License [see LICENSE for details] | |
| # Written by Yuhao Cui https://github.com/cuiyuhao1996 | |
| # -------------------------------------------------------- | |
| import sys | |
| sys.path.append('../') | |
| from openvqa.utils.ans_punct import prep_ans | |
| from openvqa.core.path_cfgs import PATH | |
| import json | |
| path = PATH() | |
| # Loading answer word list | |
| stat_ans_list = \ | |
| json.load(open(path.RAW_PATH['vqa']['train-anno'], 'r'))['annotations'] + \ | |
| json.load(open(path.RAW_PATH['vqa']['val-anno'], 'r'))['annotations'] | |
| def ans_stat(stat_ans_list): | |
| ans_to_ix = {} | |
| ix_to_ans = {} | |
| ans_freq_dict = {} | |
| for ans in stat_ans_list: | |
| ans_proc = prep_ans(ans['multiple_choice_answer']) | |
| if ans_proc not in ans_freq_dict: | |
| ans_freq_dict[ans_proc] = 1 | |
| else: | |
| ans_freq_dict[ans_proc] += 1 | |
| ans_freq_filter = ans_freq_dict.copy() | |
| for ans in ans_freq_dict: | |
| if ans_freq_dict[ans] <= 8: | |
| ans_freq_filter.pop(ans) | |
| for ans in ans_freq_filter: | |
| ix_to_ans[ans_to_ix.__len__()] = ans | |
| ans_to_ix[ans] = ans_to_ix.__len__() | |
| return ans_to_ix, ix_to_ans | |
| ans_to_ix, ix_to_ans = ans_stat(stat_ans_list) | |
| print(ans_to_ix) | |
| # print(ans_to_ix.__len__()) | |
| json.dump([ans_to_ix, ix_to_ans], open('../openvqa/datasets/vqa/answer_dict.json', 'w')) | |