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。

注册登录 以发表评论