Transformers documentation
MatCha
نُشر هذا النموذج في أوراق HF في 19-12-2022، وأُضيف إلى Hugging Face Transformers في 20-06-2023.
MatCha
نظرة عامة
قُدِّم MatCha في ورقة MatCha: Enhancing Visual Language Pretraining with Math Reasoning and Chart Derendering، من تأليف Fangyu Liu وFrancesco Piccinno وSyrine Krichene وChenxi Pang وKenton Lee وMandar Joshi وYasemin Altun وNigel Collier وJulian Martin Eisenschlos.
ينص ملخص الورقة البحثية على ما يلي:
تنتشر بيانات اللغة البصرية مثل المخططات البيانية والرسوم البيانية والرسوم التوضيحية في العالم البشري. ومع ذلك، لا تُظهر نماذج اللغة البصرية المتقدمة أداءً جيدًا على هذه البيانات. نقترح MatCha (التدريب المسبق للاستدلال الرياضي وإعادة إنشاء الرسوم البيانية) لتعزيز قدرات نماذج اللغة البصرية في النمذجة المشتركة للرسوم البيانية/المخططات وبيانات اللغة. على وجه التحديد، نقترح عدة مهام تدريب مسبق تغطي تفكيك المخططات والاستدلال العددي، وهما القدرتان الرئيسيتان في نمذجة اللغة البصرية. نُجري تدريب MatCha المسبق انطلاقًا من Pix2Struct، وهو نموذج لغة بصرية من الصورة إلى النص تم اقتراحه مؤخرًا. على معايير الاختبار القياسية مثل PlotQA وChartQA، يتفوق نموذج MatCha على أحدث الأساليب بفارق يصل إلى ما يقرب من 20%. كما نفحص مدى انتقال تدريب MatCha المسبق إلى مجالات مثل لقطات الشاشة ومخططات الكتب المدرسية والرسوم التوضيحية في المستندات، ونلاحظ تحسنًا عامًا، مما يؤكد فائدة تدريب MatCha المسبق في مهام اللغة البصرية الأوسع نطاقًا.
وصف النموذج
MatCha هو نموذج مُدرَّب باستخدام بنية Pix2Struct. يمكنك العثور على مزيد من المعلومات حول Pix2Struct في وثائق Pix2Struct.
MatCha هو مجموعة فرعية من الإجابة على الأسئلة البصرية ضمن بنية Pix2Struct. يقوم بعرض السؤال المُدخل على الصورة والتنبؤ بالإجابة.
الاستخدام
حالياً، تتوفر 6 نقاط تحقق لنموذج MatCha:
google/matcha: نموذج MatCha الأساسي، ويُستخدم لضبط MatCha على المهام الفرعيةgoogle/matcha-chartqa: نموذج MatCha مُعدّل على مجموعة بيانات ChartQA. يمكن استخدامه للإجابة عن الأسئلة المتعلقة بالرسوم البيانية.google/matcha-plotqa-v1: نموذج MatCha مُعاد تدريبه على مجموعة بيانات PlotQA. يمكن استخدامه للإجابة عن الأسئلة المتعلقة بالمخططات البيانية.google/matcha-plotqa-v2: نموذج MatCha مُعاد تدريبه على مجموعة بيانات PlotQA. يمكن استخدامه للإجابة عن الأسئلة المتعلقة بالمخططات البيانية.google/matcha-chart2text-statista: نموذج MatCha مُعدّل على مجموعة بيانات Statista.google/matcha-chart2text-pew: نموذج MatCha مُعدّل على مجموعة بيانات Pew.
النماذج المُحسَّنة على chart2text-pew وchart2text-statista أكثر ملاءمةً للتلخيص، بينما النماذج المُحسَّنة على plotqa وchartqa أكثر ملاءمةً للإجابة على الأسئلة.
يمكنك استخدام هذه النماذج على النحو التالي (مثال على مجموعة بيانات 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))الضبط الدقيق
لضبط MatCha، يُرجى الرجوع إلى دفتر ضبط pix2struct. بالنسبة لنماذج Pix2Struct، وجدنا أن ضبط النموذج باستخدام Adafactor ومجدول معدل تعلم جيب التمام يؤدي إلى تقارب أسرع:
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 هو نموذج يتم تدريبه باستخدام بنية
Pix2Struct. يمكنك العثور على مزيد من المعلومات حولPix2Structفي توثيق Pix2Struct.