Idefics2 簡介: 為社群而生的強大 8B 視覺語言模型

HuggingFace發表於2024-05-15

Idefics-Obelics logo

我們很高興在此釋出 Idefics2,這是一個通用的多模態模型,接受任意文字序列和影像序列作為輸入,並據此生成文字。它可用於回答影像相關的問題、描述視覺內容、基於多幅影像創作故事、從文件中提取資訊以及執行基本的算術運算。

Idefics2 由 Idefics1 改進而得,其引數量為 8B,具有開放許可 (Apache 2.0) 並大大增強了 OCR (光學字元識別) 功能,因此有望成為多模態社群堅實的基礎模型。其在視覺問答基準測試中的表現在同規模模型中名列前茅,並可與更大的模型 (如 LLava-Next-34B 以及 MM1-30B-chat) 一較高下。

Idefics2 甫一開始就整合在 🤗 Transformers 中,因此社群可以直接基於它面向很多多模態應用進行微調。你當下就可在 Hub 上試用 該模型

The Cauldron

模型 權重是否開放 尺寸 每影像詞元數 MMMU
(val/test)
MathVista
(testmini)
TextVQA
(val)
MMBench
(test)
VQAv2
(test-dev)
DocVQA
(test)
DeepSeek-VL 7B 576 36.6/- 36.1 64.4 73.2 - 49.6
LLaVa-NeXT-Mistral-7B 7B 2880 35.3/- 37.7 65.7 68.7 82.2 -
LLaVa-NeXT-13B 13B 2880 36.2/- 35.3 67.1 70.0 82.8 -
LLaVa-NeXT-34B 34B 2880 51.1/44.7 46.5 69.5 79.3 83.7 -
MM1-Chat-7B 7B 720 37.0/35.6 35.9 72.8 72.3 82.8 -
MM1-Chat-30B 30B 720 44.7/40.3 39.4 73.5 75.1 83.7
Gemini 1.0 Pro 🤷‍♂️ 🤷‍♂️ 47.9/- 45.2 74.6 - 71.2 88.1
Gemini 1.5 Pro 🤷‍♂️ 🤷‍♂️ 58.5/- 52.1 73.5 - 73.2 86.5
Claude 3 Haiku 🤷‍♂️ 🤷‍♂️ 50.2/- 46.4 - - - 88.8
Idefics1 指令版 (32-shots) 80B - - - 39.3 - 68.8 -
Idefics2(不切圖)* 8B 64 43.5/37.9 51.6 70.4 76.8 80.8 67.3
Idefics2 (切圖)* 8B 320 43.0/37.7 51.4 73.0 76.7 81.2 74.0
  • 切圖: 遵循 SPHINX 和 LLaVa-NeXT 的策略,允許演算法選擇將圖切成 4 幅子圖。

訓練資料

Idefics2 在預訓練時綜合使用了多種公開資料集,包括: 圖文網頁 (維基百科,OBELICS) 、圖文對 (Public Multimodal Dataset、LAION-COCO) 、OCR 資料 (PDFA (en)IDLRendered-text,以及程式碼 - 渲染圖資料 (WebSight) )。

我們使用了 這個互動式視覺化 工具對 OBELICS 資料集進行探索。

遵循基礎模型社群的慣例,我們也在各種任務資料集上對基礎模型進行了指令微調。此時,由於各任務資料集的格式各不相同,且分散在不同的地方,如何將它們匯聚起來是社群面臨的一大難題。為了解決這個問題,我們釋出了籌措良久的多模態指令微調資料集: The Cauldron (丹鼎) ,它是我們手動整理的、包含 50 個開放資料集的、多輪對話格式的合輯式資料集。我們的指令微調 Idefics2 模型的訓練資料將 The Cauldron 和各種純文字指令微調資料集的串接而得。

The Cauldron

對 Idefics1 的改進

  • 我們按照 NaViT 策略以原始解析度 (最大為 980 x 980) 和原始寬高比操作影像。這免去了傳統的將影像大小調整為固定尺寸正方形的做法。此外,我們遵循 SPHINX 的策略,並允許切圖以及傳入非常大解析度的影像 (可選項)。
  • 我們增加了影像或文件中文字識別的訓練資料,這顯著增強了 OCR 能力。我們還透過增加相應的訓練資料提高了模型回答圖表、數字和文件問題的能力。
  • 我們放棄了 Idefics1 的架構 (門控交叉注意力) 並簡化了視覺特徵到語言主幹的投影子模型。影像先被透過到視覺編碼器,再透過已訓的感知器池化和 MLP 從而完成模態投影。然後,將所得的池化序列與文字嵌入連線起來,以獲得一個影像和文字的交織序列。

所有這些改進疊加上更好的預訓練主幹網路,使得模型的效能與 Idefics1 相比有顯著提升,且尺寸縮小了 10 倍。

Idefics2 Architecture

Idefics2 入門

Idefics2 可在 Hugging Face Hub 上使用,並已被最新的 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)

我們還提供了一個微調 colab notebook,希望能幫到想在自有用例上微調 Idefics2 的使用者。

The Cauldron

資源

如欲進一步深入,下面列出了 Idefics2 所有資源:

  • Idefics2 合集
  • Idefics2 模型及模型卡
  • Idefics2-base 模型及模型卡
  • Idefics2-chat 模型及模型卡 (即將推出)
  • The Cauldron 及資料集卡
  • OBELICS 及資料集卡
  • WebSight 及資料集卡
  • Idefics2 微調 colab
  • Idefics2-8B 模型演示 (非聊天模型)
  • Idefics2 演示: (即將推出)
  • Idefics2 paper: (即將推出)

許可

本模型是兩個預訓練模型構建的: Mistral-7B-v0.1 以及 siglip-so400m-patch14-384,這兩者都是基於 Apache-2.0 許可證釋出的。

因此,我們基於 Apache-2.0 許可證釋出了 Idefics2 權重。

致謝

感謝 Google 團隊和 Mistral AI 向開源 AI 社群釋出並提供他們的模型!

特別感謝 Chun Te Lee 的柱狀圖,以及 Merve Noyan 對博文的評論和建議 🤗。


英文原文: https://hf.co/blog/idefics2

原文作者: Leo Tronchon,Hugo Laurençon,Victor Sanh

譯者: Matrix Yao (姚偉峰),英特爾深度學習工程師,工作方向為 transformer-family 模型在各模態資料上的應用及大規模模型的訓練推理。

相關文章