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.mzph.cn/news/890775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24.12.26 SpringMVCDay01

SpringMVC 也被称为SpringWeb Spring提供的Web框架,是在Servlet基础上,构建的框架 SpringMVC看成是一个特殊的Servlet,由Spring来编写的Servlet 搭建 引入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc<…

国产 HighGo 数据库企业版安装与配置指南

国产 HighGo 数据库企业版安装与配置指南 1. 下载安装包 访问 HighGo 官方网站&#xff08;https://www.highgo.com/&#xff09;&#xff0c;选择并下载企业版安装包。 2. 上传安装包到服务器 将下载的安装包上传至服务器&#xff0c;并执行以下命令&#xff1a; [rootmas…

Java程序设计,使用属性的选项库,轻松实现商品检索的复杂查询(上)

一、背景 本文我们以某商城的商品检索为例,说一说如何使用属性及选项,实现复杂的逻辑表达式的查询。 先贴图,总结出业务需求。 可以通过一系列属性及选项的组合,过滤出用户想要的商品列表。 1、属性 上文中的品牌、分类、屏幕尺寸、CPU型号、运行内存、机身内存、屏幕材…

机器学习(二)-简单线性回归

文章目录 1. 简单线性回归理论2. python通过简单线性回归预测房价2.1 预测数据2.2导入标准库2.3 导入数据2.4 划分数据集2.5 导入线性回归模块2.6 对测试集进行预测2.7 计算均方误差 J2.8 计算参数 w0、w12.9 可视化训练集拟合结果2.10 可视化测试集拟合结果2.11 保存模型2.12 …

WHAT KAN I SAY?Kolmogorov-Arnold Network (KAN)网络结构介绍及实战(文末送书)

一、KAN网络介绍 1.1 Kolmogorov-Arnold Network (KAN)网络结构的提出 2024年4月&#xff0c;来自MIT、加州理工学院、东北大学等团队的研究&#xff0c;引爆了一整个科技圈&#xff1a;Yes We KAN&#xff01; 这种创新方法挑战了多层感知器(Multilayer Perceptron&#xff…

YOLO11改进-模块-引入星型运算Star Blocks

当前网络设计中&#xff0c;“星型运算”&#xff08;逐元素乘法&#xff09;的应用原理未被充分探究&#xff0c;潜力有待挖掘。为解决此问题&#xff0c;我们引入 Star Blocks&#xff0c;其内部由 DW - Conv、BN、ReLU 等模块经星型运算连接&#xff0c;各模块有特定参数。同…

3.银河麒麟V10 离线安装Nginx

1. 下载nginx离线安装包 前往官网下载离线压缩包 2. 下载3个依赖 openssl依赖&#xff0c;前往 官网下载 pcre2依赖下载&#xff0c;前往Git下载 zlib依赖下载&#xff0c;前往Git下载 下载完成后完整的包如下&#xff1a; 如果网速下载不到请使用网盘下载 通过网盘分享的文件…

【理解机器学习中的过拟合与欠拟合】

在机器学习中&#xff0c;模型的表现很大程度上取决于我们如何平衡“过拟合”和“欠拟合”。本文通过理论介绍和代码演示&#xff0c;详细解析过拟合与欠拟合现象&#xff0c;并提出应对策略。主要内容如下&#xff1a; 什么是过拟合和欠拟合&#xff1f; 如何防止过拟合和欠拟…

【婚庆摄影小程序设计与实现】

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。所以各大互联网厂商都瞄准移动互联网这个潮…

12.26 学习卷积神经网路(CNN)

完全是基于下面这个博客来进行学习的&#xff0c;感谢&#xff01; ​​【深度学习基础】详解Pytorch搭建CNN卷积神经网络LeNet-5实现手写数字识别_pytorch cnn-CSDN博客 基于深度神经网络DNN实现的手写数字识别&#xff0c;将灰度图像转换后的二维数组展平到一维&#xff0c;…

Unity URP多光源支持,多光源阴影投射,多光源阴影接收(优化版)

目录 前言&#xff1a; 一、属性 二、SubShader 三、ForwardLitPass 定义Tags 声明变体 声明变量 定义结构体 顶点Shader 片元Shader 四、全代码 四、添加官方的LitShader代码 五、全代码 六、效果图 七、结语 前言&#xff1a; 哈喽啊&#xff0c;我又来啦。这…

如何使用React,透传各类组件能力/属性?

在23年的时候&#xff0c;我主要使用的框架还是Vue&#xff0c;当时写了一篇“如何二次封装一个Vue3组件库&#xff1f;”的文章&#xff0c;里面涉及了一些如何使用Vue透传组件能力的方法。在我24年接触React之后&#xff0c;我发现这种扩展组件能力的方式有一个专门的术语&am…

109.【C语言】数据结构之求二叉树的高度

目录 1.知识回顾&#xff1a;高度&#xff08;也称深度&#xff09; 2.分析 设计代码框架 返回左右子树高度较大的那个的写法一:if语句 返回左右子树高度较大的那个的写法二:三目操作符 3.代码 4.反思 问题 出问题的代码 改进后的代码 执行结果 1.知识回顾&#xf…

分析排名靠前的一些自媒体平台,如何运用这些平台?

众所周知&#xff0c;现在做网站越来越难了&#xff0c;主要的原因还是因为流量红利时代过去了。并且搜索引擎都在给自己的平台做闭环改造。搜索引擎的流量扶持太低了。如百度投资知乎&#xff0c;给知乎带来很多流量扶持&#xff0c;也为自身内容不足做一个填补。 而我们站长…

2024大模型在软件开发中的具体应用有哪些?(附实践资料合集)

大模型在软件开发中的具体应用非常广泛&#xff0c;以下是一些主要的应用领域&#xff1a; 自动化代码生成与智能编程助手&#xff1a; AI大模型能够根据开发者的自然语言描述自动生成代码&#xff0c;减少手动编写代码的工作量。例如&#xff0c;GitHub Copilot工具就是利用AI…

Ubuntu网络配置(桥接模式, nat模式, host主机模式)

windows上安装了vmware虚拟机&#xff0c; vmware虚拟机上运行着ubuntu系统。windows与虚拟机可以通过三种方式进行通信。分别是桥接模式&#xff1b;nat模式&#xff1b;host模式 一、桥接模式 所谓桥接模式&#xff0c;也就是虚拟机与宿主机处于同一个网段&#xff0c; 宿主机…

3.系统学习-熵与决策树

熵与决策树 前言1.从数学开始信息量(Information Content / Shannon information)信息熵(Information Entropy)条件熵信息增益 决策树认识2.基于信息增益的ID3决策树3.C4.5决策树算法C4.5决策树算法的介绍决策树C4.5算法的不足与思考 4. CART 树基尼指数&#xff08;基尼不纯度…

SpringBoot + HttpSession 自定义生成sessionId

SpringBoot HttpSession 自定义生成sessionId 业务场景实现方案 业务场景 最近在做用户登录过程中&#xff0c;由于默认ID是通过UUID创建的&#xff0c;缺乏足够的安全性&#xff0c;决定要自定义生成 sessionId。 实现方案 正常的获取session方法如下&#xff1a; HttpSe…

破解海外业务困局:新加坡服务器托管与跨境组网策略

在当今全球化商业蓬勃发展的浪潮之下&#xff0c;众多企业将目光投向海外市场&#xff0c;力求拓展业务版图、抢占发展先机。而新加坡&#xff0c;凭借其卓越的地理位置、强劲的经济发展态势以及高度国际化的营商环境&#xff0c;已然成为企业海外布局的热门之选。此时&#xf…

数学课程评价系统:客户服务与教学支持

2.1 SSM框架介绍 本课题程序开发使用到的框架技术&#xff0c;英文名称缩写是SSM&#xff0c;在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等&#xff0c;作为一个课题程序采用SSH框架也可以&#xff0c;SSM框架也可以&#xff0c;SpringMVC也可以。SSH框架是属于重量级…