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 |
| 时间 | 2024年 12月4 日 |
| 作者 | 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 演示链接。
相关文章:
VLMs之Gemma 2:PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略
VLMs之Gemma 2:PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略 导读:2024年12月4日,PaliGemma 2是一个基于Gemma 2系列语言模型的开源视觉语言模型 (VLM) 家族。PaliGemma 2 通过提供一个规模化、多功能且开源的VLM家族,…...
qwenvl 代码中的attention pool 注意力池如何理解,attention pool注意力池是什么?
qwenvl 中的attention pool如何理解,其实这就是一个概念的问题 看qwenvl的huggingface的代码的时候,发现代码里有一个Resampler 以及attn_pool,这和之前理解的连接池 线程池 表示资源复用的意思不太一样,查了一下: 注…...
源码分析之Openlayers中GeometryCollection类
概述 本文主要介绍GeometryCollection类,GeometryCollection类继承于Geometry类,关于Geometry类,参考这篇文章源码分析之Openlayers中Geometry基类介绍 GeometryCollection类就是一组几何对象的集合. 源码分析 GeometryCollection类源码实现 GeometryCollection类源码实现…...
常见LLM大模型总结
常见LLM大模型总结 模型名称发布机构主要特点参数规模应用场景GPT-4OpenAI强大的推理能力,支持多模态(图像文本),上下文理解更深1.7万亿参数聊天机器人、内容生成、代码生成ChatGPTOpenAI面向对话优化,支持多轮对话记…...
向量检索+大语言模型,免费搭建基于专属知识库的 RAG 智能助手
随着生成式人工智能技术的飞速发展,越来越多的人和企业开始应用AI到日常的工作和生活中。但公域的AI助手其数据来自互联网上的大量公开文本,虽然具有广泛的知识,但在面对一些特定领域的专业问题时,可能会出现回答不够准确或深入的…...
基础11C++中的异常处理以及swap
一、异常处理手段 抛出异常:throw 异常 作用:让调用者看见这个异常,如果调用者不理睬,就让调用者的调用者看见 接住异常: try {可能异常的code} catch(异常类型) {处理方式} 异常类型:一般为const &,防…...
写作词汇积累:得偿所望、可见一斑、搭腔
得偿所望 【得偿所望】是指经过长时间的期盼和努力,最终实现了自己的愿望或目标。 【得偿所望】强调了愿望实现后的满足感和成就感,是一个充满正能量和积极情感的词语。 【得偿所望】与【得偿所愿】在表达上也具有相似的含义,都指愿望得到了…...
android jetpack compose Model对象更新变量 UI不更新、不刷新问题
以前是搞老本行Android原生开发的,因为工作原因,一直在用vue小程序;因为一些工作需要,又需要用到Android原生开发,建了个项目,打开源码一看,天塌了!!!我以前的…...
数据库概论
目录 1、数据库管理系统(DBMS) 1.1 DBMS的主要功能 1. 数据库的定义功能 2. 数据库的操纵功能 3. 数据库的运行控制功能 4. 数据库的维护 5. 数据字典(Data Dictionary,DD) 2、数据模型 2.1 信息和数据(了解) 2.2 数据模型的三个层次 2.3 信息世界中的基…...
基于python使用UDP协议对飞秋进行通讯—DDOS
基于飞秋的信息传输 声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 老规矩,封面在文末! 飞秋介绍 (…...
数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)
数据库管理275期 2024-12-25 数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)1 系统管理分片2 用户定义分片总结 数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225) 作者:胖…...
使用Streamlit部署机器学习模型
机器学习: 计算机能够从经验中学习,而无需明确编程。机器学习是目前最热门的领域之一,世界各地的顶级公司都在使用它来改善他们的服务和产品。但是没有使用在Jupyter Notebook中训练的机器学习模型。因此,我们需要部署这些模型&am…...
依图科技简介
依图科技(YITU Technology)是中国一家全球领先的人工智能(AI)公司,成立于2012年,总部位于上海。公司专注于计算机视觉、语音识别和自然语言处理等核心AI技术,致力于推动AI技术在医疗、安防、金融…...
苍穹外卖day07缓存部分分析
苍穹外卖Day07部分聚焦于缓存功能的实现与优化,通过引入redis缓存机制,结合Spring Cache 注解,降低了数据库负载,提升其响应速度。 以下是清除缓存功能代码: RestController RequestMapping("/admin/dish"…...
OCR实践-Table-Transformer
前言 书接上文 OCR实践—PaddleOCR Table-Transformer 与 PubTables-1M table-transformer,来自微软,基于Detr,在PubTables1M 数据集上进行训练,模型是在提出数据集同时的工作, paper PubTables-1M: Towards comp…...
HarmonyOS NEXT 实战之元服务:静态案例效果---电台推荐
背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index import { authentica…...
微信小程序 不同角色进入不同页面、呈现不同底部导航栏
遇到这个需求之前一直使用的小程序默认底部导航栏,且小程序默认入口页面为pages/index/index,要使不同角色呈现不同底部导航栏,必须要在不同页面引用不同的自定义导航栏。本篇将结合分包(subPackages)展开以下三步叙述…...
MATLAB符号计算-符号表达式基础运算操作
1.1.2符号变量取值域的限定 默认复数域 【例1-1-2】解不等式 1.1.3创建符号表达式 对符号对象进行各种运算(算术运算、关系运算、逻辑运算),即可创建符号表达式。 1.算术运算与转置 【例1-1-3】 f5是f4的共轭转置 f6是f4的转置 2.关系…...
服务器被攻击怎么办
当服务器遭受恶意流量攻击,如DDoS(分布式拒绝服务)或CC(Challenge Collapsar)攻击时,传统的防护措施可能不足以应对。此时,采用高防IP服务可以有效缓解攻击压力,确保业务连续性和数据…...
精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
精准检测花生豆:基于EfficientNet的深度学习分类项目 在现代农业生产中,作物的质量检测和分类是确保产品质量的重要环节。针对花生豆的检测与分类需求,我们开发了一套基于深度学习的解决方案,利用EfficientNetB0模型实现高效、准…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
