当前位置: 首页 > news >正文

VLMs之Gemma 2:PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略

VLMs之Gemma 2:PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略

导读:2024年12月4日,PaliGemma 2是一个基于Gemma 2系列语言模型的开源视觉语言模型 (VLM) 家族。PaliGemma 2 通过提供一个规模化、多功能且开源的VLM家族,为视觉语言模型的研究和应用提供了重要的贡献,并为未来研究提供了宝贵的经验和数据。

>> 背景痛点:现有的视觉语言模型 (VLM) 在模型规模和图像分辨率方面缺乏系统性的研究,尤其缺乏对不同大小的语言模型与图像分辨率对微调迁移性能影响的联合研究。许多先前工作使用不同架构和训练方法的模型,难以进行公平比较。现有的开源VLM在处理一些特定任务(如OCR相关任务、长细粒度字幕生成、医学影像报告生成等)方面性能不足,或者需要依赖特定任务的架构组件。

>> 具体的解决方案:PaliGemma 2 通过将SigLIP-So400m视觉编码器与Gemma 2系列语言模型(2B、9B、27B参数量)结合,并训练三种不同分辨率(224px²、448px²、896px²)的模型来解决上述痛点。它采用三阶段训练策略,提升模型的迁移学习能力。

>> 核心思路步骤:

● 三阶段训练:

 阶段1:将预训练的SigLIP-So400m和Gemma 2模型联合训练,使用10亿个多模态数据样本,目标是提升模型的迁移能力。分辨率为224px²。

 阶段2:在448px²和896px²分辨率下继续训练,提升高分辨率任务的性能,并增加输出序列长度以适应OCR等任务。

 阶段3:对阶段1或2的模型进行针对特定任务的微调

● 模型架构:采用SigLIP-So400m视觉编码器提取图像特征,并通过线性投影将其映射到Gemma 2语言模型的输入空间,然后与文本提示一起输入Gemma 2模型进行自回归预测

● 超参数调整:根据模型大小调整学习率,较大的模型使用较小的学习率。

>> 优势:

● 模型家族:提供不同大小和分辨率的模型,方便研究模型规模和分辨率对迁移性能的影响。

● 开源:所有模型权重都公开发布,方便其他研究者使用。

● 多功能性:在多种视觉语言任务上取得了最先进的结果,包括一些先前未深入探索的任务,例如表格结构识别、分子结构识别、乐谱识别、长细粒度字幕生成和医学影像报告生成等。

● 高效的CPU推理:通过gemma.cpp框架,支持低精度量化,可在CPU上进行高效推理。

>> 结论和观点

● PaliGemma 2在多种下游任务上表现出色,尤其是在计算资源充足的情况下,更大的模型尺寸和更高的分辨率能显著提升性能。

● 模型大小和分辨率对不同任务的影响不同,有些任务更受益于高分辨率,有些任务更受益于更大的语言模型。

● 较大的模型通常具有较低的最佳迁移学习率

● PaliGemma 2在一些特定领域任务(如OCR、分子结构识别、乐谱识别、医学影像报告生成等)上取得了最先进的结果,展示了其在各种应用中的通用性和强大能力。

● 虽然在经典目标检测任务上的表现不如专门设计的检测器,但PaliGemma 2依然在一些涉及目标定位的视觉语言任务(如指代表达式理解和分割)上表现出色。

目录

相关文章

《PaliGemma 2: A Family of Versatile VLMs for Transfer》翻译与解读

PaliGemma 2的简介

1、PaliGemma 2 版本包含以下检查点(bfloat16 精度):

2、模型性能

PaliGemma 2的安装和使用方法

1、安装

2、使用方法

推理示例 (使用 10B 参数量,在 DOCCI 数据集上微调的模型):

量化推理 (使用 bitsandbytes 库进行 4-bit nf4 量化):

PaliGemma 2的案例应用

DOCCI 数据集上的长细粒度字幕生成

VQAv2 数据集上的视觉问答


相关文章

《PaliGemma 2: A Family of Versatile VLMs for Transfer》翻译与解读

地址

论文地址:https://arxiv.org/abs/2412.03555

时间

2024124 日

作者

Google DeepMind

摘要

PaliGemma 2 是基于 Gemma 2 系列语言模型的 PaliGemma 开放式视觉语言模型(VLM)的升级版。我们将 PaliGemma 也使用的 SigLIP-So400m 视觉编码器与整个 Gemma 2 模型系列相结合,从 20 亿参数的模型一直到 270 亿参数的模型。我们在三个分辨率(224 像素、448 像素和 896 像素)下分多个阶段训练这些模型,以使它们具备广泛的知识,以便通过微调进行迁移。由此产生的涵盖不同模型大小和分辨率的基础模型系列,使我们能够研究影响迁移性能的因素(如学习率),并分析任务类型、模型大小和分辨率之间的相互作用。我们进一步增加了 PaliGemma 范围之外的迁移任务的数量和广度,包括不同的 OCR 相关任务,如表格结构识别、分子结构识别、乐谱识别,以及长细粒度描述和放射学报告生成,在这些任务上 PaliGemma 2 取得了最先进的结果。

PaliGemma 2的简介

PaliGemma 2 是 PaliGemma 模型的迭代升级版本。它沿用了强大的 SigLIP 视觉编码器,但将文本解码器升级到了最新的 Gemma 2。 PaliGemma 2 提供了三种不同参数规模的预训练模型:3B、10B 和 28B 参数量,并且都支持 224x224、448x448 和 896x896 三种输入分辨率。这种组合提供了很大的灵活性,使用者可以根据自己的需求在质量和效率之间取得平衡。相比之下,之前的 PaliGemma 只有 3B 参数量版本。

预训练模型设计易于微调到下游任务。PaliGemma 2 使用了 Gemma 许可证,允许重新分发、商业用途、微调和创建模型衍生品。

总而言之,PaliGemma 2 提供了多种参数规模和分辨率的模型,易于使用和微调,并在多个视觉语言任务上表现出色,是一个功能强大的开源视觉语言模型。

地址:https://huggingface.co/blog/paligemma2

1、PaliGemma 2 版本包含以下检查点(bfloat16 精度):

>> 9 个预训练模型:3B、10B 和 28B 参数量,分辨率分别为 224x224、448x448 和 896x896。

>> 2 个在 DOCCI 数据集上微调的模型支持 3B 和 10B PaliGemma 2 变体,输入分辨率为 448x448。这些模型展示了生成长、细致和详细字幕的多功能性和鲁棒性。

>> 预训练模型的数据混合包含:WebLI(大规模多语言图像文本数据集)、CC3M-35L(精选的英语图像 alt_text 对,并翻译成 34 种其他语言)、VQ2A(改进的用于问答的数据集,也翻译成 34 种其他语言)、OpenImages(检测和目标感知的问答)、WIT(从维基百科收集的图像和文本)。

2、模型性能

#char:生成的标题中的平均字符数。

#sent:平均句子数。

NES:用于衡量事实不准确性的非蕴涵句子(越低越好)。

PaliGemma 2的安装和使用方法

1、安装

首先需要安装 transformers 库的 4.47 或更高版本:

pip install --upgrade transformers

2、使用方法

主要介绍了使用 Transformers 库进行推理。

推理示例 (使用 10B 参数量,在 DOCCI 数据集上微调的模型):


from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requestsmodel_id = "google/paligemma2-10b-ft-docci-448"
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id)
model = model.to("cuda")
processor = AutoProcessor.from_pretrained(model_id)prompt = "<image>caption en"
image_file = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/cats.png"
raw_image = Image.open(requests.get(image_file, stream=True).raw).convert("RGB")inputs = processor(prompt, raw_image, return_tensors="pt").to("cuda")
output = model.generate(**inputs, max_new_tokens=200)input_len = inputs["input_ids"].shape[-1]
print(processor.decode(output[0][input_len:], skip_special_tokens=True))
# A medium shot of two cats laying on a pile of brown fishing nets. The cat in the foreground is a gray tabby cat with white on its chest and paws. The cat is laying on its side with its head facing the bottom right corner of the image. The cat in the background is laying on its side with its head facing the top left corner of the image. The cat's body is curled up, its head is slightly turned to the right, and its front paws are tucked underneath its body. There is a teal rope hanging from the fishing net in the top right corner of the image.

量化推理 (使用 bitsandbytes 库进行 4-bit nf4 量化):


from transformers import BitsAndBytesConfigbnb_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_quant_type="nf4",bnb_4bit_compute_dtype=torch.bfloat16
)
model = PaligemmaForConditionalGeneration.from_pretrained(model_id,quantization_config=bnb_config,device_map={"":0}
)

还提供了在 textvqa 数据集上使用量化进行评估的结果,显示量化后的精度下降很小。

PaliGemma 2的案例应用

文章还提到了一个微调脚本和一个notebook,方便用户进行模型微调,并可以使用 LoRA 或 QLoRA 等内存高效的微调技术。

DOCCI 数据集上的长细粒度字幕生成

PaliGemma 2 在 DOCCI 数据集上微调后,能够生成包含文本渲染、空间关系和世界知识的长而细致的字幕。文章提供了与其他模型的性能比较,以及一些模型输出示例,展示了模型的强大能力。 指标包括:平均字符数 (#char)、平均句子数 (#sent) 和非蕴涵句子百分比 (NES,越低越好)。

VQAv2 数据集上的视觉问答

Hugging Face 团队使用 LoRA 微调技术对 PaliGemma 2 3B (448x448 分辨率) 模型进行微调,并在 VQAv2 数据集上进行视觉问答演示。 提供了演示的代码和 Gradio 演示链接。

http://www.lryc.cn/news/510221.html

相关文章:

  • qwenvl 代码中的attention pool 注意力池如何理解,attention pool注意力池是什么?
  • 源码分析之Openlayers中GeometryCollection类
  • 常见LLM大模型总结
  • 向量检索+大语言模型,免费搭建基于专属知识库的 RAG 智能助手
  • 基础11C++中的异常处理以及swap
  • 写作词汇积累:得偿所望、可见一斑、搭腔
  • android jetpack compose Model对象更新变量 UI不更新、不刷新问题
  • 数据库概论
  • 基于python使用UDP协议对飞秋进行通讯—DDOS
  • 数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)
  • 使用Streamlit部署机器学习模型
  • 依图科技简介
  • 苍穹外卖day07缓存部分分析
  • OCR实践-Table-Transformer
  • HarmonyOS NEXT 实战之元服务:静态案例效果---电台推荐
  • 微信小程序 不同角色进入不同页面、呈现不同底部导航栏
  • MATLAB符号计算-符号表达式基础运算操作
  • 服务器被攻击怎么办
  • 精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
  • 【UE5 C++课程系列笔记】13——GameInstanceSubsystem的简单使用
  • 实用工具推荐----Doxygen使用方法
  • js垃圾回收机制详细讲解
  • 【Linux/踩坑】Linux中启动eclipse或HDFS因JAVA_HOME设置报错
  • 百度千帆平台构建AI APP的基础概念梳理
  • Unity3D Huatuo技术原理剖析详解
  • 记Fastjson2的一个报ConcurrentModificationException的bug
  • 使用TimesFM 对车辆销售进行预测
  • OpenEuler 22.03 不依赖zookeeper安装 kafka 3.3.2集群
  • ubuntu 将python3.8 升级为python3.10并进行版本切换
  • 3. Kafka入门—安装与基本命令