opd_zt / data /benchmarks /EventHallusion /eval_binary.py
sdzt's picture
Add files using upload-large-folder tool
e95ea94 verified
Raw
History Blame Contribute Delete
1.41 kB
import json
import os
import argparse
def extract_pred(video_llm_output):
video_llm_output = video_llm_output.lower()
if video_llm_output.startswith("yes"):
return "Yes."
elif video_llm_output.startswith("no"):
return "No."
else:
return None
def main(predictions):
total_questions = 0
total_correct = 0
for split, pred_dict in predictions.items():
question_cnt = 0
correct = 0
for video_key, video_info_with_qa in pred_dict.items():
for qa in video_info_with_qa['qa']:
question_cnt += 1
gt_answer = qa['answer']
pred = extract_pred(qa['prediction'])
if gt_answer == pred:
correct += 1
total_questions += question_cnt
total_correct += correct
print (f"{split}: ques: {question_cnt}, correct: {correct}, acc: {correct / question_cnt}")
print (f"overall: ques: {total_questions}, correct: {total_correct}, acc: {total_correct / total_questions}")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--input_file', required=True)
args = parser.parse_args()
input_file = args.input_file
with open(input_file, 'r') as f:
predictions = json.load(f)
main(predictions)