Transformers documentation
DePlot
このモデルは2022年12月20日にHF papersで公開され、2023年6月20日にHugging Face Transformersに貢献されました。
DePlot
概要
DePlotは、Fangyu Liu、Julian Martin Eisenschlos、Francesco Piccinno、Syrine Krichene、Chenxi Pang、Kenton Lee、Mandar Joshi、Wenhu Chen、Nigel Collier、Yasemin Altun による論文 DePlot: One-shot visual language reasoning by plot-to-table translation で提案されました。
この論文の要旨には、次のように記載されています。
グラフやプロットなどの視覚言語は、人間の社会に広く普及しています。プロットやグラフを理解するには、強力な推論能力が必要です。従来の最先端(SOTA)モデルは、少なくとも数万の学習例を必要とし、その推論能力は依然として大きく制限されています。特に、人間が作成した複雑なクエリに対しては顕著です。本論文では、視覚言語推論に対する初のワンショットソリューションを提示します。視覚言語推論の課題を2つのステップに分解します:(1) プロットからテキストへの翻訳、および (2) 翻訳されたテキストに対する推論。この手法の鍵は、DePlot と呼ばれるモダリティ変換モジュールであり、プロットやチャートの画像を線形化された表に翻訳します。DePlot の出力は、事前学習済み大規模言語モデル(LLM)のプロンプトに直接使用でき、LLM のフューショット推論能力を活用します。DePlot を得るために、プロットから表へのタスクを統一されたタスク形式と指標を確立することで標準化し、このタスクに対して DePlot をエンドツーエンドで学習させます。これにより、DePlot はプラグアンドプレイの形で LLM と併せてそのまま使用できます。28,000 件を超えるデータポイントでファインチューニングされた SOTA モデルと比較して、ワンショットプロンプティングのみを用いた DePlot+LLM は、チャート QA タスクにおける人間が作成したクエリに対して、ファインチューニング済み SOTA に対して 24.0% の改善を達成しました。
DePlot は Pix2Struct アーキテクチャを用いて学習されたモデルです。Pix2Struct に関する詳細は、Pix2Struct のドキュメントを参照してください。
DePlot は Pix2Struct アーキテクチャの Visual Question Answering サブセットです。入力された質問を画像上にレンダリングし、答えを予測します。
使用例
現在、DePlotには1つのチェックポイントが利用可能です:
google/deplot: ChartQAデータセットでファインチューニングされたDePlot
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アーキテクチャを使用して学習されたモデルです。API リファレンスについては、Pix2Structのドキュメントを参照してください。