🚀 MatCha - ChartQAでファインチューニングされたモデルカード
このモデルは、Chart2text - pewデータセットでファインチューニングされたMatChaモデルです。視覚的な言語データ(グラフやチャートなど)に対するモデルの性能を向上させるために開発されました。
🚀 クイックスタート
このセクションでは、MatChaモデルの基本的な使い方や、関連する情報について説明します。
✨ 主な機能
- 視覚的な言語データ(グラフ、チャート、インフォグラフィックなど)に対する性能が向上しています。
- 標準的なベンチマーク(PlotQAやChartQAなど)で、最先端の手法を最大で約20%上回る結果を示します。
- スクリーンショット、教科書の図、文書の図などのドメインへの転移学習にも有効です。
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下のコードを使用して、必要なライブラリをインストールできます。
from transformers import Pix2StructProcessor, Pix2StructForConditionalGeneration
import requests
from PIL import Image
💻 使用例
基本的な使用法
from transformers import Pix2StructProcessor, Pix2StructForConditionalGeneration
import requests
from PIL import Image
processor = Pix2StructProcessor.from_pretrained('google/matcha-chartqa')
model = Pix2StructForConditionalGeneration.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")
predictions = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(predictions[0], skip_special_tokens=True))
>>> No
高度な使用法
GPUで予測を実行するには、モデルを作成するときと入力を取得するときに.to(0)
を追加します。
from transformers import Pix2StructProcessor, Pix2StructForConditionalGeneration
import requests
from PIL import Image
processor = Pix2StructProcessor.from_pretrained('google/matcha-chartqa').to(0)
model = Pix2StructForConditionalGeneration.from_pretrained('google/matcha-chartqa').to(0)
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))
📚 ドキュメント
T5xからHugging Faceへの変換
T5x形式のモデルをHugging Face形式に変換するには、以下のスクリプトを使用できます。
通常のモデルを変換する場合:
python convert_pix2struct_checkpoint_to_pytorch.py --t5x_checkpoint_path PATH_TO_T5X_CHECKPOINTS --pytorch_dump_path PATH_TO_SAVE --is_vqa
大規模なモデルを変換する場合:
python convert_pix2struct_checkpoint_to_pytorch.py --t5x_checkpoint_path PATH_TO_T5X_CHECKPOINTS --pytorch_dump_path PATH_TO_SAVE --use-large --is_vqa
変換後のモデルをHugging Face Hubにアップロードするには、以下のコードを使用します。
from transformers import Pix2StructForConditionalGeneration, Pix2StructProcessor
model = Pix2StructForConditionalGeneration.from_pretrained(PATH_TO_SAVE)
processor = Pix2StructProcessor.from_pretrained(PATH_TO_SAVE)
model.push_to_hub("USERNAME/MODEL_NAME")
processor.push_to_hub("USERNAME/MODEL_NAME")
🔧 技術詳細
論文の概要によると、視覚的な言語データ(プロット、チャート、インフォグラフィックなど)は人間の世界で広く使われていますが、最先端のビジョン言語モデルはこれらのデータに対してうまく機能しません。そこで、MATCHA(Math reasoning and Chart derendering pretraining)を提案し、チャート/プロットと言語データを共同でモデリングする視覚言語モデルの能力を強化します。具体的には、プロットの分解と数値推論をカバーするいくつかの事前学習タスクを提案しています。これらは、視覚言語モデリングにおける重要な能力です。MATCHAの事前学習は、最近提案された画像からテキストへの視覚言語モデルであるPix2Structから開始されます。PlotQAやChartQAなどの標準的なベンチマークでは、MATCHAモデルは最先端の手法を最大で約20%上回っています。また、MATCHAの事前学習がスクリーンショット、教科書の図、文書の図などのドメインにどれだけ転移するかを調べ、全体的な改善を観察しています。これにより、MATCHAの事前学習がより広範な視覚言語タスクに有用であることが検証されています。
📄 ライセンス
このモデルは、Apache - 2.0ライセンスの下で提供されています。
貢献者
このモデルは、もともとFangyu Liu、Francesco Piccinnoらによって貢献され、Younes BelkadaによってHugging Faceエコシステムに追加されました。
引用
この研究を引用する場合は、以下の論文を引用してください。
@misc{liu2022matcha,
title={MatCha: Enhancing Visual Language Pretraining with Math Reasoning and Chart Derendering},
author={Fangyu Liu and Francesco Piccinno and Syrine Krichene and Chenxi Pang and Kenton Lee and Mandar Joshi and Yasemin Altun and Nigel Collier and Julian Martin Eisenschlos},
year={2022},
eprint={2212.09662},
archivePrefix={arXiv},
primaryClass={cs.CL}
}