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模型实现高效、准…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...