Transformers documentation
MatCha
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ồngoogle/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)Update on GitHubMatCha 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ềPix2Structtrong tài liệu Pix2Struct.