見出し画像

Idefics2 の概要

以下の記事が面白かったので、簡単にまとめました。

Introducing Idefics2: A Powerful 8B Vision-Language Model for the community


1. Idefics2

Idefics2」は、テキストと画像を入力し、テキストを出力するマルチモーダルモデルです。画像の質問応答、視覚的コンテンツの説明、複数画像をもとに物語作成、文書からの情報抽出などを実行できます。

「Idefics2」は「Idefics1」を改良したもので、8B、オープンライセンス (Apache 2.0)、強化された OCRを備え、マルチモダリティに取り組むコミュニティの強力な基盤となります。VQAベンチマークでの性能はクラス最大であり、「LLava-Next-34B」「MM1-30B-chat」などのはるかに大きなモデルと競合します。

「Idefics2」は最初から transformers に統合されているため、多くのマルチモーダルアプリケーション向けに簡単にファインチューニングすることができます。

2. 学習データ

「Idefics2」は、事前学習用にオープンに利用可能なデータセットの混合物で学習していました。

・Webドキュメント (Wikipedia、OBELICS)
・画像とキャプションのペア (Public Multimodal Dataset、LAION-COCO)
・OCR データ (PDFA (en)IDL Rendered-text、 Image-to-Codeデータ (WebSight))

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. リソース

リソースは、次のとおりです。

Idefics2 collection
Idefics2 model with model card
Idefics2-base model with model card
・Idefics2-chat model with model card (coming soon)
The Cauldron with its dataset card
OBELICS with its dataset card
WebSight with its dataset card
Idefics2 fine-tuning colab
・Idefics2 demo: (coming soon)
・Idefics2 paper: (coming soon)

6. ライセンス

「Idefics2」のウェイトのライセンスは Apache-2.0 です。

関連



この記事が気に入ったらサポートをしてみませんか?