Transformers documentation

DePlot

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 2022-12-20 và được đóng góp cho Hugging Face Transformers vào ngày 2023-06-20.

DePlot

Tổng quan

DePlot được đề xuất trong bài báo DePlot: One-shot visual language reasoning by plot-to-table translation của Fangyu Liu, Julian Martin Eisenschlos, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Wenhu Chen, Nigel Collier, Yasemin Altun.

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

Ngôn ngữ trực quan như biểu đồ và đồ thị rất phổ biến trong thế giới con người. Việc hiểu các biểu đồ và đồ thị đòi hỏi kỹ năng suy luận mạnh mẽ. Các mô hình tiên tiến (SOTA) trước đây cần ít nhất hàng chục nghìn ví dụ huấn luyện và khả năng suy luận của chúng vẫn còn rất hạn chế, đặc biệt là với các truy vấn phức tạp do con người viết. Bài báo này trình bày giải pháp one-shot đầu tiên cho suy luận ngôn ngữ trực quan. Chúng tôi phân tách thách thức của suy luận ngôn ngữ trực quan thành hai bước: (1) dịch từ biểu đồ sang văn bản, và (2) suy luận trên văn bản đã được dịch. Điểm mấu chốt của phương pháp này là một module chuyển đổi phương thức, có tên là DePlot, dịch ảnh của biểu đồ hoặc đồ thị thành một bảng tuyến tính hóa. Đầu ra của DePlot sau đó có thể được sử dụng trực tiếp để prompt một mô hình ngôn ngữ lớn (LLM) đã được huấn luyện trước, khai thác khả năng suy luận few-shot của các LLM. Để có được DePlot, chúng tôi chuẩn hóa tác vụ từ biểu đồ sang bảng bằng cách thiết lập các định dạng tác vụ và chỉ số thống nhất, và huấn luyện DePlot end-to-end trên tác vụ này. DePlot sau đó có thể được sử dụng ngay lập tức cùng với các LLM theo kiểu plug-and-play. So với một mô hình SOTA được finetune trên hơn >28k điểm dữ liệu, DePlot+LLM với chỉ one-shot prompting đạt được mức cải thiện 24,0% so với SOTA finetune trên các truy vấn do con người viết từ tác vụ chart QA.

DePlot 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. DePlot 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.

Ví dụ sử dụng

Hiện tại có một checkpoint khả dụng cho DePlot:

  • google/deplot: DePlot được tinh chỉnh trên bộ dữ liệu ChartQA
import requests
from PIL import Image

from transformers import AutoProcessor, Pix2StructForConditionalGeneration


model = Pix2StructForConditionalGeneration.from_pretrained("google/deplot", device_map="auto")
processor = AutoProcessor.from_pretrained("google/deplot")
url = "https://raw.githubusercontent.com/vis-nlp/ChartQA/main/ChartQA%20Dataset/val/png/5090.png"
image = Image.open(requests.get(url, stream=True).raw)

inputs = processor(images=image, text="Generate underlying data table of the figure below:", return_tensors="pt").to(model.device)
predictions = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(predictions[0], skip_special_tokens=True))

Tinh chỉnh

Để tinh chỉnh DePlot, 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)

DePlot là một mô hình được huấn luyện bằng kiến trúc Pix2Struct. Để tham khảo API, hãy xem tài liệu Pix2Struct.

Update on GitHub