模型简介
模型特点
模型能力
使用案例
库名称:transformers 许可证:gemma 流水线标签:图像-文本到文本 额外授权标题:在Hugging Face上访问PaliGemma 额外授权提示:要在Hugging Face上访问PaliGemma,您需要审阅并同意Google的使用许可。为此,请确保您已登录Hugging Face并点击下方。请求会立即处理。 额外授权按钮内容:确认许可
PaliGemma模型卡
模型页面: PaliGemma
Transformers PaliGemma 3B权重,在RefCOCO数据集上以896*896输入图像进行微调。这些模型仅用于研究目的,提供float32、bfloat16和float16格式。微调配置可在big_vision找到。
资源与技术文档:
使用条款: 条款
作者: Google
模型信息
模型概述
描述
PaliGemma是一款多功能轻量级视觉语言模型(VLM),灵感来自PaLI-3,基于开放组件如SigLIP视觉模型和Gemma语言模型。它接受图像和文本输入并生成文本输出,支持多种语言。设计用于在广泛视觉语言任务(如图像和短视频字幕、视觉问答、文本阅读、目标检测和分割)上实现领先的微调性能。
模型架构
PaliGemma由Transformer解码器和Vision Transformer图像编码器组成,总计30亿参数。文本解码器初始化自Gemma-2B。图像编码器初始化自SigLIP-So400m/14。训练遵循PaLI-3方案。
输入输出
- 输入: 图像和文本字符串,如图像描述提示或问题。
- 输出: 响应输入的生成文本,如图像描述、问题答案、目标边界框坐标列表或分割编码。
模型数据
预训练数据集
PaliGemma在以下混合数据集上预训练:
- WebLI: WebLI是从公开网络构建的网页级多语言图文数据集。使用多种WebLI分割获取多样化能力,如视觉语义理解、目标定位、视觉文本理解、多语言性等。
- CC3M-35L: 来自网页的英文图像-替代文本对(Sharma等, 2018)。使用Google Cloud Translation API翻译为34种其他语言。
- VQ²A-CC3M-35L/VQG-CC3M-35L: VQ2A-CC3M子集(Changpinyo等, 2022a),翻译为与CC3M-35L相同的34种语言。
- OpenImages: 基于OpenImages数据集的手工规则生成的检测和目标感知问答(Piergiovanni等, 2022)。
- WIT: 维基百科收集的图像和文本(Srinivasan等, 2021)。
数据责任过滤
对WebLI应用以下过滤以确保训练数据清洁:
- 色情图像过滤: 移除判定为色情性质的图像。
- 文本安全过滤: 过滤与不安全文本配对的图像。不安全文本包括CSAI、色情、粗俗或冒犯性内容。
- 文本毒性过滤: 使用Perspective API识别并过滤带有侮辱、淫秽、仇恨或其他毒性文本的图像。
- 文本个人信息过滤: 使用Cloud Data Loss Prevention (DLP) API过滤某些个人信息和敏感数据以保护隐私。
- 其他方法: 根据政策和实践进行内容质量和安全性过滤。
使用方法
PaliGemma是单轮视觉语言模型,不适合对话使用,在针对特定用例微调时表现最佳。
可通过任务前缀(如"detect"或"segment")配置模型任务。预训练模型通过此类提示结构获得丰富能力(问答、字幕、分割等),但设计用于通过类似提示结构微调到特定任务。交互测试可使用"mix"系列模型,这些模型已在多任务混合上微调。
请参阅使用与限制章节了解预期用例,或访问博客文章获取更多详情和示例。
在Transformers中使用
以下代码片段以google/paligemma-3b-mix-224
模型为例。当前仓库中的模型可能针对其他任务训练,请确保使用适合手头任务的输入。
在CPU上运行默认精度(float32
)
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requests
import torch
model_id = "google/paligemma-3b-mix-224"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"
image = Image.open(requests.get(url, stream=True).raw)
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id).eval()
processor = AutoProcessor.from_pretrained(model_id)
# 指示模型生成西班牙语描述
prompt = "caption es"
model_inputs = processor(text=prompt, images=image, return_tensors="pt")
input_len = model_inputs["input_ids"].shape[-1]
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)
输出: Un auto azul estacionado frente a un edificio.
在CUDA上运行其他精度
为方便起见,仓库包含已转换为bfloat16
和float16
的权重版本,可减少下载大小并避免本地转换。
这是在nvidia CUDA卡上运行bfloat16
的示例:
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requests
import torch
model_id = "google/paligemma-3b-mix-224"
device = "cuda:0"
dtype = torch.bfloat16
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"
image = Image.open(requests.get(url, stream=True).raw)
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=dtype,
device_map=device,
revision="bfloat16",
).eval()
processor = AutoProcessor.from_pretrained(model_id)
# 指示模型生成西班牙语描述
prompt = "caption es"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(model.device)
input_len = model_inputs["input_ids"].shape[-1]
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)
4位/8位加载
需安装bitsandbytes
以自动使用8位或4位精度运行推理:
pip install bitsandbytes accelerate
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration, BitsAndBytesConfig
from PIL import Image
import requests
import torch
model_id = "google/paligemma-3b-mix-224"
device = "cuda:0"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true"
image = Image.open(requests.get(url, stream=True).raw)
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
model = PaliGemmaForConditionalGeneration.from_pretrained(
model_id, quantization_config=quantization_config
).eval()
processor = AutoProcessor.from_pretrained(model_id)
# 指示模型生成西班牙语描述
prompt = "caption es"
model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(model.device)
input_len = model_inputs["input_ids"].shape[-1]
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使用最新一代Tensor Processing Unit (TPU)硬件(TPUv5e)训练。
软件
训练使用JAX、Flax、TFDS和big_vision
完成。
JAX允许研究人员利用包括TPU在内的最新硬件更快更高效地训练大模型。
TFDS用于访问数据集,Flax用于模型架构。PaliGemma微调代码和推理代码发布在big_vision
GitHub仓库。
评估信息
基准结果
为验证PaliGemma在各类学术任务上的可迁移性,我们在每个任务上微调预训练模型。此外,我们使用转移任务混合训练mix模型。报告不同分辨率下的结果以展示哪些任务受益于更高分辨率。重要的是,这些任务或数据集均未出现在预训练数据中,其图像已明确从网页级预训练数据中移除。
Mix模型(在转移任务混合上微调)
基准 | 指标(分割) | mix-224 | mix-448 |
---|---|---|---|
MMVP | 配对准确率 | 46.00 | 45.33 |
POPE | 准确率 (随机/流行/对抗) |
88.00 86.63 85.67 |
89.37 88.40 87.47 |
GQA | 准确率(测试) | 65.20 | 65.47 |
单任务(在单任务上微调)
基准 (训练分割) |
指标 (分割) |
pt-224 | pt-448 | pt-896 |
---|---|---|---|---|
字幕生成 | ||||
COCO字幕 (train+restval) |
CIDEr(验证) | 141.92 | 144.60 | |
NoCaps (COCO字幕迁移评估) |
CIDEr(验证) | 121.72 | 123.58 | |
COCO-35L (训练) |
CIDEr开发 (英文/平均34/平均) |
139.2 115.8 116.4 |
141.2 118.0 118.6 |
|
XM3600 (COCO-35L迁移评估) |
CIDEr开发 (英文/平均34/平均) |
78.1 41.3 42.4 |
80.0 41.9 42.9 |
|
TextCaps (训练) |
CIDEr(验证) | 127.48 | 153.94 | |
SciCap (首句,无子图) (train+val) |
CIDEr/BLEU-4 (测试) |
162.25 0.192 |
181.49 0.211 |
|
Screen2words (train+dev) |
CIDEr(测试) | 117.57 | 119.59 | |
Widget Captioning (train+dev) |
CIDEr(测试) | 136.07 | 148.36 | |
问答 | ||||
VQAv2 (train+validation) |
准确率 (测试服务器 - 标准) |
83.19 | 85.64 | |
MMVP (VQAv2迁移评估) |
配对准确率 | 47.33 | 45.33 | |
POPE (VQAv2迁移评估) |
准确率 (随机/流行/ 对抗) |
87.80 85.87 84.27 |
88.23 86.77 85.90 |
|
OKVQA (训练) |
准确率(验证) | 63.54 | 63.15 | |
A-OKVQA (MC) (train+val) |
准确率 (测试服务器) |
76.37 | 76.90 | |
A-OKVQA (DA) (train+val) |
准确率 (测试服务器) |
61.85 | 63.22 | |
GQA (train_balanced+ val_balanced) |
准确率 (testdev平衡) |
65.61 | 67.03 | |
xGQA (GQA迁移评估) |
平均准确率 (bn, de, en, id, ko, pt, ru, zh) |
58.37 | 59.07 | |
NLVR2 (train+dev) |
准确率(测试) | 90.02 | 88.93 | |
MaRVL (NLVR2迁移评估) |
平均准确率 (测试) (id, sw, ta, tr, zh) |
80.57 | 76.78 | |
AI2D (训练) |
准确率(测试) | 72.12 | 73.28 | |
ScienceQA (图像子集,无CoT) (train+val) |
准确率(测试) | 95.39 | 95.93 | |
RSVQA-LR (非数值) (train+val) |
平均准确率 (测试) |
92.65 | 93.11 | |
RSVQA-HR (非数值) (train+val) |
平均准确率 (测试/test2) |
92.61 90.58 |
92.79 90.54 |
|
ChartQA (human+aug)x(train+val) |
平均宽松 准确率 (test_human, test_aug) |
57.08 | 71.36 | |
VizWiz VQA (train+val) |
准确率 (测试服务器 - 标准) |
73.7 | 75.52 | |
TallyQA (训练) |
准确率 (test_simple/ test_complex) |
81.72 69.56 |
84.86 72.27 |
|
OCR-VQA (train+val) |
准确率(测试) | 72.32 | 74.61 | 74.93 |
TextVQA (train+val) |
准确率 (测试服务器 - 标准) |
55.47 | 73.15 | 76.48 |
DocVQA (train+val) |
ANLS(测试服务器) | 43.74 | 78.02 | 84.77 |
Infographic VQA (train+val) |
ANLS(测试服务器) | 28.46 | 40.47 | 47.75 |
SceneText VQA (train+val) |
ANLS(测试服务器) | 63.29 | 81.82 | 84.40 |
分割 | ||||
RefCOCO (合并refcoco, refcoco+, refcocog排除验证 和测试图像) |
MIoU (验证) refcoco/refcoco+/ refcocog |
73.40 68.32 67.65 |
75.57 69.76 70.17 |
76.94 72.18 72.22 |
视频任务(字幕/问答) | ||||
MSR-VTT(字幕) | CIDEr(测试) | 70.54 | ||
MSR-VTT(问答) | 准确率(测试) | 50.09 | ||
ActivityNet(字幕) | CIDEr(测试) | 34.62 | ||
ActivityNet(问答) | 准确率(测试) | 50.78 | ||
VATEX(字幕) | CIDEr(测试) | 79.73 | ||
MSVD(问答) | 准确率(测试) | 60.22 |
伦理与安全
评估方法
我们的评估方法包括结构化评估和相关内容政策的内部红队测试。红队由多个不同团队进行,每个团队有不同的目标和人工评估指标。这些模型针对多个与伦理和安全相关的类别进行了评估,包括:
- 儿童安全、内容安全和代表性危害等提示的人工评估。评估方法详见Gemma模型卡,但采用图像描述和视觉问答设置。
- 图像到文本基准评估:针对相关学术数据集(如FairFace数据集(Karkkainen等, 2021))进行基准测试。
评估结果
- 伦理与安全评估的人工评估结果在内部政策的可接受阈值内,适用于儿童安全、内容安全和代表性危害等类别。
- 除了稳健的内部评估外,我们还使用Perspective API(阈值0.8)测量从FairFace数据集获取图像的生成描述中的毒性、脏话和其他潜在问题。我们报告了感知性别、种族和年龄属性在各子组中观察到的最大值和中值。
指标 | 感知 性别 |
种族 | 年龄组 | |||
---|---|---|---|---|---|---|
最大值 | 中值 | 最大值 | 中值 | 最大值 | 中值 | |
毒性 | 0.04% | 0.03% | 0.08% | 0.00% | 0.09% | 0.00% |
身份攻击 | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% |
侮辱 | 0.06% | 0.04% | 0.09% | 0.07% | 0.16% | 0.00% |
威胁 | 0.06% | 0.05% | 0.14% | 0.05% | 0.17% | 0.00% |
脏话 | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% |
使用与限制
预期用途
开放视觉语言模型(VLM)在各行业和领域有广泛应用。以下潜在用途列表并不全面,旨在提供模型创建者在模型训练和开发过程中考虑的可能用例的上下文信息。
在特定视觉语言任务上微调:
- 预训练模型可在广泛视觉语言任务上微调,如图像描述、短视频字幕、视觉问答、文本阅读、目标检测和分割。
- 预训练模型可针对特定领域微调,如遥感问答、盲人视觉问题、科学问答、描述UI元素功能。
- 预训练模型可针对非文本输出任务(如边界框或分割掩码)微调。
视觉语言研究:
- 预训练模型和微调模型可作为研究人员实验VLM技术、开发算法和推动领域进步的基础。
伦理考虑与风险
视觉语言模型(VLM)的开发引发多个伦理问题。在创建开放模型时,我们仔细考虑了以下方面:
- 偏见与公平
- 在大规模真实世界图文数据上训练的VLM可能反映训练材料中嵌入的社会文化偏见。这些模型经过严格审查,输入数据预处理如本卡所述,并报告了后验评估。
- 错误信息与滥用
- VLM可能被滥用以生成虚假、误导或有害文本。
- 提供负责任使用指南,参见负责任生成AI工具包。
- 透明度与问责
- 本模型卡总结了模型架构、能力、限制和评估过程的详细信息。
- 负责任开发的开放模型通过使VLM技术对AI生态系统中的开发者和研究人员可访问,提供了分享创新的机会。
已识别风险与缓解措施:
- 偏见延续: 鼓励持续监控(使用评估指标、人工审查)和在模型训练、微调及其他用例中探索去偏见技术。
- 有害内容生成: 内容安全机制和指南至关重要。鼓励开发者根据特定产品政策和应用用例谨慎行事并实施适当的内容安全防护措施。
- 恶意滥用: 技术限制和开发者及终端用户教育有助于减轻LLM的恶意应用。提供教育资源和使用报告机制供用户标记滥用。Gemma禁止使用政策概述了Gemma模型的禁止用途。
- 隐私侵犯: 模型在过滤掉某些个人信息和敏感数据的数据上训练。鼓励开发者遵守隐私法规,采用隐私保护技术。
限制
-
基础Gemma模型的大多数限制仍然适用:
- VLM更擅长可通过清晰提示和指令框架化的任务。开放式或高度复杂的任务可能具有挑战性。
- 自然语言本质复杂。VLM可能难以把握细微差别、讽刺或比喻语言。
- VLM基于从训练数据集中学习的信息生成响应,但它们不是知识库。可能生成不正确或过时的事实陈述。
- VLM依赖语言和图像的统计模式。在某些情况下可能缺乏常识推理能力。
-
PaliGemma首先设计为通用预训练模型,用于迁移到专门任务。因此,其"开箱即用"或"零样本"性能可能落后于专门设计的模型。
-
PaliGemma不是多轮聊天机器人。设计用于单轮图像和文本输入。
引用
@article{beyer2024paligemma, title={{PaliGemma: A versatile 3B VLM for transfer}}, author={Lucas Beyer* and Andreas Steiner* and André Susano Pinto* and Alexander Kolesnikov* and Xiao Wang* and Daniel Salz and Maxim Neumann and Ibrahim Alabdulmohsin and Michael Tschannen and Emanuele Bugliarello and Thomas Unterthiner and Daniel Keysers and Skanda Koppula and Fangyu Liu and Adam Grycner and Alexey Gritsenko and Neil Houlsby and Manoj Kumar and Keran Rong and Julian Eisenschlos and Rishabh Kabra and Matthias Bauer and Matko Bošnjak and Xi Chen and Matthias Minderer and Paul Voigtlaender and Ioana Bica and Ivana Balazevic and Joan Puigcerver and Pinelopi Papalampidi and Olivier Henaff and Xi Xiong and Radu Soricut and Jeremiah Harmsen and Xiaohua Zhai*}, year={2024}, journal={arXiv preprint arXiv:2407.07726} }
论文请见此处。








