我們很高興在此釋出 Idefics2,這是一個通用的多模態模型,接受任意文字序列和影像序列作為輸入,並據此生成文字。它可用於回答影像相關的問題、描述視覺內容、基於多幅影像創作故事、從文件中提取資訊以及執行基本的算術運算。
Idefics2 由 Idefics1 改進而得,其引數量為 8B,具有開放許可 (Apache 2.0) 並大大增強了 OCR (光學字元識別) 功能,因此有望成為多模態社群堅實的基礎模型。其在視覺問答基準測試中的表現在同規模模型中名列前茅,並可與更大的模型 (如 LLava-Next-34B 以及 MM1-30B-chat) 一較高下。
Idefics2 甫一開始就整合在 🤗 Transformers 中,因此社群可以直接基於它面向很多多模態應用進行微調。你當下就可在 Hub 上試用 該模型!
(val/test) |
(testmini) |
(val) |
(test) |
(test-dev) |
(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)、IDL、Rendered-text,以及程式碼 - 渲染圖資料 (WebSight) )。
我們使用了 這個互動式視覺化 工具對 OBELICS 資料集進行探索。
遵循基礎模型社群的慣例,我們也在各種任務資料集上對基礎模型進行了指令微調。此時,由於各任務資料集的格式各不相同,且分散在不同的地方,如何將它們匯聚起來是社群面臨的一大難題。為了解決這個問題,我們釋出了籌措良久的多模態指令微調資料集: The Cauldron (丹鼎) ,它是我們手動整理的、包含 50 個開放資料集的、多輪對話格式的合輯式資料集。我們的指令微調 Idefics2 模型的訓練資料將 The Cauldron 和各種純文字指令微調資料集的串接而得。
對 Idefics1 的改進
- 我們按照 NaViT 策略以原始解析度 (最大為 980 x 980) 和原始寬高比操作影像。這免去了傳統的將影像大小調整為固定尺寸正方形的做法。此外,我們遵循 SPHINX 的策略,並允許切圖以及傳入非常大解析度的影像 (可選項)。
- 我們增加了影像或文件中文字識別的訓練資料,這顯著增強了 OCR 能力。我們還透過增加相應的訓練資料提高了模型回答圖表、數字和文件問題的能力。
- 我們放棄了 Idefics1 的架構 (門控交叉注意力) 並簡化了視覺特徵到語言主幹的投影子模型。影像先被透過到視覺編碼器,再透過已訓的感知器池化和 MLP 從而完成模態投影。然後,將所得的池化序列與文字嵌入連線起來,以獲得一個影像和文字的交織序列。
所有這些改進疊加上更好的預訓練主幹網路,使得模型的效能與 Idefics1 相比有顯著提升,且尺寸縮小了 10 倍。
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 的使用者。
資源
如欲進一步深入,下面列出了 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 模型在各模態資料上的應用及大規模模型的訓練推理。