Transformers documentation
DePlot
نُشر هذا النموذج في أوراق HF في 2022-12-20، وأُضيف إلى Hugging Face Transformers في 2023-06-20.
DePlot
نظرة عامة
قُدِّم DePlot في ورقة DePlot: One-shot visual language reasoning by plot-to-table translation من تأليف Fangyu Liu وJulian Martin Eisenschlos وFrancesco Piccinno وSyrine Krichene وChenxi Pang وKenton Lee وMandar Joshi وWenhu Chen وNigel Collier وYasemin Altun.
ينص ملخص الورقة البحثية على ما يلي:
تُعدّ اللغة البصرية مثل الرسوم البيانية والمخططات شائعة الاستخدام في العالم البشري. ويتطلّب فهم المخططات والرسوم البيانية مهارات استدلال قوية. وتتطلّب النماذج ذات الأداء الأفضل حتى الآن (SOTA) على الأقلّ عشرات الآلاف من أمثلة التدريب، ولا تزال قدراتها الاستدلالية محدودة إلى حدٍّ كبير، لا سيّما في الاستعلامات المعقّدة التي يكتبها البشر. تقدّم هذه الورقة الحلّ الأول من نوعه للاستدلال على اللغة البصرية. نُفكّك تحدي الاستدلال على اللغة البصرية إلى خطوتين: (1) ترجمة المخطط إلى نص، و(2) الاستدلال على النصّ المُترجَم. وتكمن الفكرة المحورية في هذه الطريقة في وحدة تحويل الوسائط، التي تُسمّى DePlot، والتي تُترجم صورة المخطط أو الرسم البياني إلى جدول مُخطَّط. يمكن بعد ذلك استخدام مخرجات DePlot مباشرةً لتحفيز نموذج لغة كبير (LLM) مُدرَّب مسبقًا، بالاستفادة من قدرات الاستدلال بعدد قليل من الأمثلة (few-shot) لدى نماذج LLM. ولتحقيق DePlot، قُمنا بتوحيد مهمة تحويل المخطط إلى جدول من خلال إنشاء صيغ مهام ومقاييس موحّدة، وقُمنا بتدريب DePlot من البداية إلى النهاية على هذه المهمة. يمكن بعد ذلك استخدام DePlot جاهزةً للاستخدام مع نماذج LLM بطريقة قابلة للتوصيل والفصل (plug-and-play). وبالمقارنة مع نموذج SOTA مُعدَّل على أكثر من >28k نقطة بيانات، حقّق DePlot+LLM باستخدام تحفيز من نوع one-shot تحسّنًا بنسبة 24.0% على SOTA المُعدَّل في الاستعلامات التي يكتبها البشر من مهمة استعلام الرسوم البيانية (chart QA).
DePlot هو نموذج مُدرَّب باستخدام بنية Pix2Struct. يمكنك العثور على مزيد من المعلومات حول Pix2Struct في توثيق Pix2Struct.
DePlot هو مجموعة فرعية من الإجابة على الأسئلة البصرية ضمن بنية Pix2Struct. يقوم بعرض السؤال المُدخل على الصورة والتنبؤ بالإجابة.
مثال على الاستخدام
حاليًا، يتوفر نقطة تفتيش واحدة لـ DePlot:
google/deplot: نموذج DePlot المُحسَّن على مجموعة بيانات 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))الضبط الدقيق
لإجراء الضبط الدقيق لنموذج DePlot، يُرجى الرجوع إلى دفتر ضبط دقيق الخاص بـ 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 GitHubDePlot هو نموذج تم تدريبه باستخدام بنية
Pix2Struct. للاطلاع على مرجع الواجهة البرمجية، راجع توثيقPix2Struct.