Transformers documentation

MatCha

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Mô hình này được công bố trên HF papers vào ngày 19-12-2022 và được đóng góp cho Hugging Face Transformers vào ngày 20-06-2023.

MatCha

Tổng quan

MatCha được đề xuất trong bài báo MatCha: Enhancing Visual Language Pretraining with Math Reasoning and Chart Derendering, của Fangyu Liu, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Yasemin Altun, Nigel Collier, Julian Martin Eisenschlos.

Tóm tắt của bài báo nêu rõ như sau:

Dữ liệu ngôn ngữ thị giác như biểu đồ, đồ thị và infographic rất phổ biến trong thế giới con người. Tuy nhiên, các mô hình ngôn ngữ thị giác tiên tiến hiện nay không hoạt động tốt trên những dữ liệu này. Chúng tôi đề xuất MatCha (tiền huấn luyện suy luận toán học và tái tạo biểu đồ) để nâng cao khả năng của các mô hình ngôn ngữ thị giác trong việc mô hình hóa đồng thời dữ liệu biểu đồ/đồ thị và ngôn ngữ. Cụ thể, chúng tôi đề xuất một số tác vụ tiền huấn luyện bao gồm việc phân rã đồ thị và suy luận số học, đây là những khả năng then chốt trong mô hình hóa ngôn ngữ thị giác. Chúng tôi thực hiện tiền huấn luyện MatCha bắt đầu từ Pix2Struct, một mô hình ngôn ngữ thị giác từ ảnh sang văn bản được đề xuất gần đây. Trên các bộ chuẩn đánh giá tiêu chuẩn như PlotQA và ChartQA, mô hình MatCha vượt trội hơn các phương pháp tiên tiến hiện có với mức cải thiện lên đến gần 20%. Chúng tôi cũng xem xét mức độ chuyển giao của tiền huấn luyện MatCha sang các lĩnh vực như ảnh chụp màn hình, sơ đồ trong sách giáo khoa và hình ảnh trong tài liệu, và quan sát thấy sự cải thiện tổng thể, xác nhận tính hữu ích của tiền huấn luyện MatCha đối với các tác vụ ngôn ngữ thị giác rộng hơn.

Mô tả mô hình

MatCha là một mô hình được huấn luyện bằng kiến trúc Pix2Struct. Bạn có thể tìm thêm thông tin về Pix2Struct trong tài liệu Pix2Struct. MatCha là một tập con Visual Question Answering của kiến trúc Pix2Struct. Nó hiển thị câu hỏi đầu vào trên hình ảnh và dự đoán câu trả lời.

Cách sử dụng

Hiện tại có 6 checkpoint khả dụng cho MatCha:

  • google/matcha: mô hình MatCha cơ bản, được sử dụng để tinh chỉnh MatCha trên các tác vụ hạ nguồn
  • google/matcha-chartqa: Mô hình MatCha được tinh chỉnh trên bộ dữ liệu ChartQA. Nó có thể được sử dụng để trả lời các câu hỏi về biểu đồ.
  • google/matcha-plotqa-v1: Mô hình MatCha được tinh chỉnh trên tập dữ liệu PlotQA. Nó có thể được sử dụng để trả lời các câu hỏi về biểu đồ.
  • google/matcha-plotqa-v2: Mô hình MatCha được tinh chỉnh trên tập dữ liệu PlotQA. Nó có thể được sử dụng để trả lời các câu hỏi về biểu đồ.
  • google/matcha-chart2text-statista: Mô hình MatCha được tinh chỉnh trên bộ dữ liệu Statista.
  • google/matcha-chart2text-pew: Mô hình MatCha được tinh chỉnh trên bộ dữ liệu Pew.

Các mô hình được tinh chỉnh trên chart2text-pew và chart2text-statista phù hợp hơn cho việc tóm tắt, trong khi các mô hình được tinh chỉnh trên plotqa và chartqa phù hợp hơn cho việc trả lời câu hỏi.

Bạn có thể sử dụng các mô hình này như sau (ví dụ trên bộ dữ liệu ChartQA):

import requests
from PIL import Image

from transformers import AutoProcessor, Pix2StructForConditionalGeneration


model = Pix2StructForConditionalGeneration.from_pretrained("google/matcha-chartqa").to(0, device_map="auto")
processor = AutoProcessor.from_pretrained("google/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").to(0)
predictions = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(predictions[0], skip_special_tokens=True))

Tinh chỉnh

Để tinh chỉnh MatCha, hãy tham khảo notebook tinh chỉnh của pix2struct. Đối với các mô hình Pix2Struct, chúng tôi nhận thấy rằng việc tinh chỉnh mô hình với Adafactor và cosine learning rate scheduler giúp hội tụ nhanh hơn:

from transformers.optimization import Adafactor, get_cosine_schedule_with_warmup


optimizer = Adafactor(self.parameters(), scale_parameter=False, relative_step=False, lr=0.01, weight_decay=1e-05)
scheduler = get_cosine_schedule_with_warmup(optimizer, num_warmup_steps=1000, num_training_steps=40000)

MatCha là một mô hình được huấn luyện bằng kiến trúc Pix2Struct. Bạn có thể tìm thêm thông tin về Pix2Struct trong tài liệu Pix2Struct.

Update on GitHub