英文

MatCha在ChartQA上微调的模型卡片

这个模型是在Chart2text-pew数据集上微调的MatCha模型。

目录

  • TL;DR
  • 使用模型
  • 贡献
  • 引用
  • TL;DR

    论文的摘要如下所述:

    视觉语言数据,如图表和信息图,在人类世界中无处不在。然而,现有的视觉语言模型在处理这些数据时表现不佳。 我们提出MATCHA(数学推理和图表去渲染预训练)来增强视觉语言模型的能力,同时对图表/绘图和语言数据进行联合建模。具体而言,我们提出了几个预训练任务,涵盖了图形解析和数值推理,这些是视觉语言建模的关键能力。我们从最近提出的图像到文本视觉语言模型Pix2Struct开始进行MATCHA预训练。在PlotQA和ChartQA等标准基准测试中,MATCHA模型超过了现有的方法,提升了近20%。我们还考察了MATCHA预训练在屏幕截图、教科书图示和文档图表等领域的迁移能力,发现整体性能有所提升,验证了MATCHA预训练在更广泛的视觉语言任务中的有效性。

    使用模型

    从T5x转换为Huggingface

    您可以按照以下方式使用 convert_pix2struct_checkpoint_to_pytorch.py 脚本:

    python convert_pix2struct_checkpoint_to_pytorch.py --t5x_checkpoint_path PATH_TO_T5X_CHECKPOINTS --pytorch_dump_path PATH_TO_SAVE --is_vqa
    

    如果要转换一个大模型,请运行:

    python convert_pix2struct_checkpoint_to_pytorch.py --t5x_checkpoint_path PATH_TO_T5X_CHECKPOINTS --pytorch_dump_path PATH_TO_SAVE --use-large --is_vqa
    

    保存后,可以使用以下片段推送转换后的模型:

    from transformers import Pix2StructForConditionalGeneration, Pix2StructProcessor
    
    model = Pix2StructForConditionalGeneration.from_pretrained(PATH_TO_SAVE)
    processor = Pix2StructProcessor.from_pretrained(PATH_TO_SAVE)
    
    model.push_to_hub("USERNAME/MODEL_NAME")
    processor.push_to_hub("USERNAME/MODEL_NAME")
    

    从模型获取预测

    为了获得一致的生成结果,您应向模型提出具体问题。在这里,我们询问模型是否图表中的值的总和是否大于最大值。

    from transformers import Pix2StructForConditionalGeneration, Pix2StructProcessor
    import requests
    from PIL import Image
    
    model = Pix2StructForConditionalGeneration.from_pretrained('ybelkada/matcha-chartqa')
    processor = Pix2StructProcessor.from_pretrained('ybelkada/matcha-chartqa')
    url = "https://raw.githubusercontent.com/vis-nlp/ChartQA/main/ChartQA%20Dataset/val/png/20294671002019.png"
    image = Image.open(requests.get(url, stream=True).raw)
    
    inputs = processor(images=image, text="Is the sum of all 4 places greater than Laos?", return_tensors="pt")
    predictions = model.generate(**inputs, max_new_tokens=512)
    print(processor.decode(predictions[0], skip_special_tokens=True))
    >>> No
    

    要在GPU上运行预测,只需在创建模型和获取输入时添加.to(0)( inputs = inputs.to(0) )

    贡献

    这个模型最初由Fangyu Liu和Francesco Piccinno等人贡献,并由 Younes Belkada 添加到Hugging Face生态系统中。

    引用

    如果您想引用这项工作,请考虑引用原始论文:

    @misc{liu2022matcha,
          title={MatCha: Enhancing Visual Language Pretraining with Math Reasoning and Chart Derendering}, 
          author={Fangyu Liu and Francesco Piccinno and Syrine Krichene and Chenxi Pang and Kenton Lee and Mandar Joshi and Yasemin Altun and Nigel Collier and Julian Martin Eisenschlos},
          year={2022},
          eprint={2212.09662},
          archivePrefix={arXiv},
          primaryClass={cs.CL}
    }