in lmms_eval/tasks/vizwiz_vqa/utils.py [0:0]
def vizwiz_vqa_process_results(doc, result):
eval_ai_processor = EvalAIAnswerProcessor()
assert len(result) == 1, f"The result should be a list of length 1, but got {len(result)}."
resAns = eval_ai_processor(result[0])
accuracy = 0
if "answers" in doc and doc["answers"] is not None:
gtAcc = []
for i in range(len(doc["answers"])):
doc["answers"][i] = eval_ai_processor(doc["answers"][i])
for i in range(len(doc["answers"])):
otherGTAns = [doc["answers"][j] for j in range(len(doc["answers"])) if i != j]
matchingAns = [item for item in otherGTAns if item == resAns]
acc = min(1, float(len(matchingAns)) / 3)
gtAcc.append(acc)
if gtAcc:
accuracy = statistics.mean(gtAcc)
else:
accuracy = 0
return {
"exact_match": accuracy,
"submission": {
"image": f"{doc['question_id']}.jpg",
"answer": resAns,
},
}