PaliGemma 2 Mix - 谷歌釋出的全新指令視覺語言模型

釋出於 2025 年 2 月 19 日
在 GitHub 上更新

TL;DR (內容摘要)

去年十二月,谷歌釋出了 PaliGemma 2:一個基於 SigLIPGemma 2 的全新預訓練 (pt) PaliGemma 視覺語言模型 (VLM) 系列。該模型系列提供三種不同的大小 (3B、10B、28B) 和三種不同的解析度 (224x224、448x448、896x896)。

今天,谷歌釋出了 PaliGemma 2 mix:這是一個在一系列混合視覺語言任務上進行微調的模型,包括光學字元識別 (OCR)、長短文字描述等。

PaliGemma 2 預訓練 (pt) 變體是非常出色的視覺語言模型,適合在特定任務上進行遷移學習。所有 pt 檢查點都是為了在下游任務上進行微調而釋出的。

PaliGemma2 Architecture

mix 模型能讓您快速瞭解,當在下游任務上微調預訓練檢查點時,可以獲得怎樣的效能表現。PaliGemma 模型系列的主要目標是提供預訓練模型,以便在下游任務上獲得更好的學習效果,而不是提供一個通用的聊天模型。mix 模型能很好地展示 pt 模型在學術資料集混合任務上微調後的效能。

您可以在這篇部落格文章中閱讀更多關於 PaliGemma 2 的資訊。

您可以在這個合集中找到所有的 mix 模型和演示。

引數量 框架 解析度
3B HF Transformers 224
448
JAX 224
448
10B HF Transformers 224
448
JAX 224
448
28B HF Transformers 224
448
JAX 224
448

目錄

PaliGemma 2 Mix 模型

PaliGemma 2 mix 模型可以完成多種任務。我們可以根據其子任務將其分類如下:

  • 通用視覺語言相關任務:視覺問答、指代影像內容
  • 文件理解:資訊圖表、圖表和示意圖的視覺問答
  • 影像中的文字識別:文字檢測、為包含文字的影像生成描述、對包含文字的影像進行視覺問答
  • 定位相關任務:目標檢測、影像分割

請注意,此子任務列表並非詳盡無遺,您可以在 PaliGemma 2 論文中獲取有關完整任務列表的更多資訊。

在向 PaliGemma 2 mix 模型提供提示時,我們可以使用開放式提示 (open-ended prompts)。在之前版本的 PaliGemma 預訓練模型中,我們需要根據想要完成的任務和語言,在提示中新增任務字首。這種方式仍然有效,但開放式提示能帶來更好的效能。帶有任務字首的提示如下所示:

  • “caption {lang}”:生成類似 COCO 風格的精美簡短描述
  • “describe {lang}”:生成更長、更具描述性的圖說
  • “ocr”:光學字元識別
  • “answer {lang} {question}”:針對影像內容進行問答
  • “question {lang} {answer}”:根據給定的答案生成問題

只有兩個任務僅能透過任務字首來完成:目標檢測和影像分割。提示如下所示:

  • “detect {object description}”:在影像中定位所列出的物體,並返回這些物體的邊界框
  • “segment {object description}; {object description}”:在影像中定位物體所佔的區域,以建立該物體的影像分割

如果您想立即開始,請隨時跳轉到部落格的這一部分,或嘗試演示

比較 PaliGemma 2 Mix 的不同變體

在本節中,我們將回顧上述功能,探討 PaliGemma 2 mix 在這些功能上的表現,並在一些任務上比較不同大小和解析度的變體。這裡,我們將在一些真實場景的示例上測試模型。

通用視覺語言任務

輸入圖片 輸入提示 3B/448 的回應 10B/448 的回應
這裡有多少顆糖果? 5 ✅ 5 ✅
請詳細描述這張圖片 一群人走在街上,背對著鏡頭。街道兩旁有一棵高大的綠葉樹、一棵棕櫚樹和沿人行道的白色柵欄。遠處可以看到一座帶有大圓形屋頂的大型粉紅色建築和一座帶有穹頂的大型粉紅色建築。一個穿著黑襯衫、揹著灰色包的男人正走在停在柵欄附近的白色摩托車前面。一個穿著紅襯衫、揹著黑色揹包的男人正站在人行道上的食品推車旁。食品推車停在路邊。一個穿著藍襯衫的男人背上有一個白色的包,正在人行道上行走。路燈是黑色的。天空是藍色的。✅ 一群人走在街上,背對著鏡頭。一座尖頂高樓和一座大型粉白相間的建築構成了天際線的主體。一個穿黑裙的女人和一個穿黑褲的男人並肩走著,而一個穿紅襯衫的男人和一個穿藍襯衫的男人跟在他們後面。一輛摩托車停在柵欄旁邊,一輛踏板車停在人行道上。行人在走路,摩托車由一個穿白襯衫的男人駕駛。那個男人穿著紅襯衫和黑褲子,穿藍襯衫的人騎著踏板車。杆子上的標誌可見,那個人揹著一個揹包。✅

文件理解

輸入圖片 輸入提示 3B/448 的回應 10B/448 的回應
對於解析度敏感的任務,哪個變體最好? 448px 但首先調整為 224px 448px ✅
法國 2023 年的目標排放率是多少? 20 ✅ 20 ✅

定位任務

我們根據 PaliGemma 2 mix 變體的定位相關能力進行了評估。給定一個提示“detect {物體描述};{另一個物體描述}”,其中包含不同的感興趣物體,PaliGemma 可以檢測到不同的目標物體。這裡的提示不限於像“鳥”這樣的簡短類別,也可以是“棍子上的鳥”。

下面,您可以看到在固定解析度 448x448 下不同變體的檢測和分割輸出。為了視覺化,我們放大了感興趣的物體。

Segmentation with PaliGemma 2 mix

Detection with PaliGemma 2 mix

影像中的文字識別

輸入圖片 輸入提示 3B/448 的回應 10B/448 的回應
這張票的日期是什麼時候,花了多少錢? 26-05-2023 21:52
17.00 ✅
26-05-2023 17.00 ✅
讀取文字 FRIDAY, DEC 20th\nNEW OFFICE PARTY\nCOCKTAIL MENU -\nOFFICE MARTINI\nvodka fraise des bois - jus de framboise - liqueur de fleur de sureau - fleur wild strawberry vodka - raspberry puree - elderflower liquor - flower\nDIFFUSERS SUNRISE\ntequila - mandarine impériale - jus d'orange sanguine - cointreau - cherry bitter tequila - tangerine liquor - blood orange juice - cointreau - cherry bitter\ngin infused à la mangue rôtie - citronnelle, kiwi vert & jaune - citron - poivre blanc roasted mango infused gin - lemongrass - green & yellow kiwi, lemon - white pepper\nTRANSFORMERS TWIST\npâte crème de cerise - caramel jamplémousse - bananas\nPERUVIAN PEFT\npêches - cherry liquor - grapefruit cordial - pineapple ✅ FRIDAY, DEC 20th NEW OFFICE PARTY COCKTAIL MENU - OFFICE MARTINI vodka fraise des bois - jus de framboise - liqueur de fleur de bureau - fleur wild strawberry vodka - raspberry puree - elderflower liqueur - flower DIFFUSERS SUN-HISE tequila - mandarine impériale - jus d'orange sanguine - cointreau - cherry bitter tequila - tangerine liquor - blood orange juice - cointreau - cherry bitter TRANSFORMERS TWIST gin infused à la mangue rôtie - citron vert & jaune - citron - poivre blanc roasted mango infused gin - lemongrass - green & yellow kiwi lemon - white pepper PERUVIAN PEFT piéce - eau de cèdre - eau de pamplemousse - ananas piece - cherry liquor - grapefruit vodka - pineapple ✅

使用 Transformers 進行推理和微調

您可以使用 transformers 來執行 PaliGemma 2 mix 模型。

from transformers import (
    PaliGemmaProcessor,
    PaliGemmaForConditionalGeneration,
)
from transformers.image_utils import load_image
import torch

model_id = "google/paligemma2-10b-mix-224"

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg"
image = load_image(url)

# Load the model and the processor
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto").eval()
processor = PaliGemmaProcessor.from_pretrained(model_id)

# Prepare the inputs
prompt = "describe en"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(torch.bfloat16).to(model.device)
input_len = model_inputs["input_ids"].shape[-1]

# Infer and postprocess the inference outputs
with torch.inference_mode():
    generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
    generation = generation[0][input_len:]
    decoded = processor.decode(generation, skip_special_tokens=True)
    print(decoded)

我們有一份關於微調 PaliGemma 2 的深度教程。同一個 notebook 也可用於微調 mix 檢查點。

演示

我們釋出了一個 10B 模型 (解析度 448x448) 的演示。您可以在下方進行體驗,或透過此連結訪問應用。

閱讀更多

在下方閱讀並瞭解更多關於 PaliGemma 模型的資訊。

致謝

我們在此感謝 Sayak PaulVaibhav Srivastav 對這篇部落格文章的審閱。我們感謝谷歌團隊釋出了這個卓越的開放模型系列。

非常感謝 Pablo Montalvo 將該模型整合到 transformers 中,並感謝 LysandreRaushanArthurYih-Dar 及團隊其他成員的快速審閱、測試和合並。

社群

你好,請問 `from transformers import AutoProcessor, AutoModelForVision2Seq` 是否可以用於所有的**視覺語言模型 (VLM)**,還是說我們必須為 **PaliGemma** 使用 `from transformers import PaliGemmaProcessor, PaliGemmaForConditionalGeneration`,為 **QwenVL** 使用 `from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor`?我的目標是建立一個統一的指令碼,可以處理 Hub 上所有 VLM,只需透過 `model_name` 引數指定即可。

·
文章作者

檢視 transformers 對映表,我很確定 `Auto` 類能夠同時載入 PaliGemma 和 Qwen2_5。

註冊登入 以發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.