lmms_eval/tasks/ai2d/utils.py (23 lines of code) (raw):
def ai2d_doc_to_text(doc, model_specific_prompt_kwargs=None):
question, choices = doc["question"], doc["options"]
len_choices = len(choices)
post_prompt = model_specific_prompt_kwargs["post_prompt"]
pre_prompt = model_specific_prompt_kwargs["pre_prompt"]
if model_specific_prompt_kwargs["prompt_format"] == "mcq":
options = [chr(ord("A") + i) for i in range(len_choices)]
choices_str = "\n".join([f"{option}. {choice}" for option, choice in zip(options, choices)])
return f"{pre_prompt}{question}\n{choices_str}{post_prompt}"
elif model_specific_prompt_kwargs["prompt_format"] == "qa":
options = "\n".join(choices)
return f"{pre_prompt}{question}{options}{post_prompt}"
else:
raise ValueError(f"Unknown prompt format: {model_specific_prompt_kwargs['prompt_format']}")
def ai2d_doc_to_visual(doc):
return [doc["image"].convert("RGB")]
def ai2d_doc_to_target(doc, model_specific_target_kwargs):
if model_specific_target_kwargs == "mcq":
len_choices = len(doc["options"])
options = [chr(ord("A") + i) for i in range(len_choices)]
return options[int(doc["answer"])]
elif model_specific_target_kwargs == "qa":
return doc["options"][int(doc["answer"])]