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"])]