-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselect_questions.py
More file actions
43 lines (31 loc) · 1.39 KB
/
select_questions.py
File metadata and controls
43 lines (31 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import os
import json
import argparse
def load_json(path):
with open(path, 'r') as f:
return json.load(f)
def save_json(data, path):
with open(path, 'w') as f:
json.dump(data, f, indent=2)
print(f"[✓] Saved {len(data)} entries to {path}")
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--vqa_result', type=str,
default='output/llava/eval/vqa/2025-07-31_09-08/eps2/unibind/vqa_results.json',
help='Adversarial result JSON with question_ids to keep')
parser.add_argument('--val_data', type=str,
default='datasets/VQA2/val_data.json',
help='Path to VQA2 validation data')
parser.add_argument('--output', type=str,
default='datasets/VQA2/val_data_filtered.json',
help='Path to save filtered ground-truth')
args = parser.parse_args()
vqa_result = load_json(args.vqa_result)
val_data = load_json(args.val_data)
keep_ids = {item['question_id'] for item in vqa_result}
print(f"[✓] Loaded {len(keep_ids)} question_ids from {args.vqa_result}")
filtered_val = [item for item in val_data if item['question_id'] in keep_ids]
print(f"[✓] Selected {len(filtered_val)} matching entries from {args.val_data}")
save_json(filtered_val, args.output)
if __name__ == '__main__':
main()