模型简介
模型特点
模型能力
使用案例
库名称:transformers
许可证:gemma
流水线标签:图像文本到文本
额外授权标题:在Hugging Face上访问PaliGemma
额外授权提示:要在Hugging Face上访问PaliGemma,您需要审阅并同意Google的使用许可。为此,请确保您已登录Hugging Face并点击下方按钮。请求将立即处理。
额外授权按钮内容:确认许可
PaliGemma模型卡
模型页面: PaliGemma
Transformers PaliGemma 3B权重,基于448*448输入图像在OCR-VQA数据集上微调。这些模型仅以float32、bfloat16和float16格式提供,仅供研究用途。微调配置可在big_vision查看。
资源与技术文档:
使用条款: 条款
作者: Google
模型信息
模型概述
描述
PaliGemma是一款多功能且轻量级的视觉语言模型(VLM),灵感来自PaLI-3,并基于开放组件如SigLIP视觉模型和Gemma语言模型。它接受图像和文本作为输入,并生成文本输出,支持多种语言。该模型设计用于在广泛的视觉语言任务(如图像和短视频字幕生成、视觉问答、文本阅读、目标检测和分割)上实现领先的微调性能。
模型架构
PaliGemma由Transformer解码器和Vision Transformer图像编码器组成,总参数量为30亿。文本解码器初始化自Gemma-2B。图像编码器初始化自SigLIP-So400m/14。PaliGemma遵循PaLI-3的训练方法。
输入与输出
- 输入: 图像和文本字符串,例如为图像生成字幕的提示或问题。
- 输出: 响应输入生成的文本,如图像字幕、问题答案、目标边界框坐标列表或分割编码词。
模型数据
预训练数据集
PaliGemma在以下混合数据集上预训练:
- WebLI: WebLI(网络语言图像)是从公共网络构建的网页级多语言图像-文本数据集。使用多种WebLI分割以获取多样化的模型能力,如视觉语义理解、目标定位、视觉文本理解、多语言性等。
- CC3M-35L: 从网页中筛选的英语图像-替代文本对(Sharma et al., 2018)。使用Google Cloud Translation API翻译为34种其他语言。
- VQ²A-CC3M-35L/VQG-CC3M-35L: VQ2A-CC3M的子集(Changpinyo et al., 2022a),翻译为与CC3M-35L相同的34种语言。
- OpenImages: 基于OpenImages数据集的手工规则生成的检测和目标感知问答(Piergiovanni et al. 2022)。
- WIT: 从维基百科收集的图像和文本(Srinivasan et al., 2021)。
数据责任过滤
对WebLI应用以下过滤器,以确保PaliGemma在干净数据上训练:
- 色情图像过滤: 移除被判定为色情性质的图像。
- 文本安全过滤: 识别并过滤与不安全文本配对的图像。不安全文本包括涉及或关于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
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)
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-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字幕 (训练+验证) |
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 (首句,无子图) (训练+验证) |
CIDEr/BLEU-4 (测试) |
162.25 0.192 |
181.49 0.211 |
|
Screen2words (训练+开发) |
CIDEr(测试) | 117.57 | 119.59 | |
Widget Captioning (训练+开发) |
CIDEr(测试) | 136.07 | 148.36 | |
问答 | ||||
VQAv2 (训练+验证) |
准确率 (测试服务器 - 标准) |
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) (训练+验证) |
准确率 (测试服务器) |
76.37 | 76.90 | |
A-OKVQA(DA) (训练+验证) |
准确率 (测试服务器) |
61.85 | 63.22 | |
GQA (训练平衡+ 验证平衡) |
准确率 (测试开发平衡) |
65.61 | 67.03 | |
xGQA (GQA迁移评估) |
平均准确率 (bn, de, en, id, ko, pt, ru, zh) |
58.37 | 59.07 | |
NLVR2 (训练+开发) |
准确率(测试) | 90.02 | 88.93 | |
MaRVL (NLVR2迁移评估) |
平均准确率 (测试) (id, sw, ta, tr, zh) |
80.57 | 76.78 | |
AI2D (训练) |
准确率(测试) | 72.12 | 73.28 | |
ScienceQA (图像子集,无CoT) (训练+验证) |
准确率(测试) | 95.39 | 95.93 | |
RSVQA-LR(非数值) (训练+验证) |
平均准确率 (测试) |
92.65 | 93.11 | |
RSVQA-HR(非数值) (训练+验证) |
平均准确率 (测试/测试2) |
92.61 90.58 |
92.79 90.54 |
|
ChartQA (人工+增强)x(训练+验证) |
平均宽松 准确率 (测试人工, 测试增强) |
57.08 | 71.36 | |
VizWiz VQA (训练+验证) |
准确率 (测试服务器 - 标准) |
73.7 | 75.52 | |
TallyQA (训练) |
准确率 (测试简单/ 测试复杂) |
81.72 69.56 |
84.86 72.27 |
|
OCR-VQA (训练+验证) |
准确率(测试) | 72.32 | 74.61 | 74.93 |
TextVQA (训练+验证) |
准确率 (测试服务器 - 标准) |
55.47 | 73.15 | 76.48 |
DocVQA (训练+验证) |
ANLS(测试服务器) | 43.74 | 78.02 | 84.77 |
Infographic VQA (训练+验证) |
ANLS(测试服务器) | 28.46 | 40.47 | 47.75 |
SceneText VQA (训练+验证) |
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 et al., 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生态系统的开发者和研究人员可访问,提供了共享创新的机会。
已识别的风险与缓解措施:
- 偏见延续: 鼓励持续监控(使用








