Idefics2 の概要
以下の記事が面白かったので、簡単にまとめました。
1. Idefics2
「Idefics2」は、テキストと画像を入力し、テキストを出力するマルチモーダルモデルです。画像の質問応答、視覚的コンテンツの説明、複数画像をもとに物語作成、文書からの情報抽出などを実行できます。
「Idefics2」は「Idefics1」を改良したもので、8B、オープンライセンス (Apache 2.0)、強化された OCRを備え、マルチモダリティに取り組むコミュニティの強力な基盤となります。VQAベンチマークでの性能はクラス最大であり、「LLava-Next-34B」「MM1-30B-chat」などのはるかに大きなモデルと競合します。
「Idefics2」は最初から transformers に統合されているため、多くのマルチモーダルアプリケーション向けに簡単にファインチューニングすることができます。
2. 学習データ
「Idefics2」は、事前学習用にオープンに利用可能なデータセットの混合物で学習していました。
interactive visualizationにより、OBELICSデータセットを探索できます。
タスク指向データに基づいてベースモデルをさらに学習します。 ただし、これらのデータは多くの場合、形式が異なっており、さまざまな場所に散在しています。 それらを集めることがコミュニティにとって障害となります。この問題に対処するために、マルチモーダル指示チューニングデータセット、つまりマルチターン会話用にフォーマットされた50個の手動でキュレーションされたデータセットのオープンコンピレーションである「The Cauldron」をリリースします。
「Idefics2」のファインチューニングは、「The Cauldron」と「テキストのみの指示チューニングデータセット」を連結して行っています。
3. Idefics1 からの改良点
・NaViT戦略に従って、ネイティブ解像度 (最大980x980) とネイティブアスペクト比で画像を操作します。これにより、コンピュータビジョンコミュニティでこれまで行われてきたように、画像のサイズを固定サイズの正方形に変更する必要がなくなりました。さらに、SPHINX戦略に従い、(オプションで) サブイメージの分割と非常に大きな解像度のイメージの受け渡しを許可します。
・画像またはドキュメント内のテキストを転写するためにモデルを必要とするデータを統合することにより、OCR機能が大幅に強化されました。 また、適切な学習データを使用して、図表、図、文書に関する質問に答える能力も向上しました。
・「Idefics1」のアーキテクチャ (ゲートされたクロスアテンション) から離れ、言語バックボーンへの視覚機能の統合を簡素化しました。画像はビジョンエンコーダーに供給され、その後学習されたパーシーバー プーリングとMLPモダリティ投影が行われます。次に、そのプールされたシーケンスがテキスト埋め込みと連結されて、画像とテキストの (インターリーブされた) シーケンスが取得されます。
これらすべての改善と、より優れた事前学習されたバックボーンにより、10倍小さいモデルで「 Idefics1」に比べてパフォーマンスが大幅に向上しました。
4. Idefics2 の入門
「Idefics2」はHuggingFaceで利用でき、transformersの最新版でサポートされています。 サンプルコードは、次のとおりです。
import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForVision2Seq
from transformers.image_utils import load_image
DEVICE = "cuda:0"
# Note that passing the image urls (instead of the actual pil images) to the processor is also possible
image1 = load_image("https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg")
image2 = load_image("https://cdn.britannica.com/59/94459-050-DBA42467/Skyline-Chicago.jpg")
image3 = load_image("https://cdn.britannica.com/68/170868-050-8DDE8263/Golden-Gate-Bridge-San-Francisco.jpg")
processor = AutoProcessor.from_pretrained("HuggingFaceM4/idefics2-8b")
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceM4/idefics2-8b",
).to(DEVICE)
# Create inputs
messages = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "What do we see in this image?"},
]
},
{
"role": "assistant",
"content": [
{"type": "text", "text": "In this image, we can see the city of New York, and more specifically the Statue of Liberty."},
]
},
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "And how about this image?"},
]
},
]
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(text=prompt, images=[image1, image2], return_tensors="pt")
inputs = {k: v.to(DEVICE) for k, v in inputs.items()}
# Generate
generated_ids = model.generate(**inputs, max_new_tokens=500)
generated_texts = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(generated_texts)
特定の使用例で「Idefics2」を改善したい人に役立つ、ファインチューニング用の Colab も提供しています。
5. リソース
リソースは、次のとおりです。
6. ライセンス
「Idefics2」のウェイトのライセンスは Apache-2.0 です。
関連
この記事が気に入ったらサポートをしてみませんか?