BLIP-2: 基于冻结图像编码器和大型语言模型的语言-图像预训练引导

news2024/11/19 2:29:21

BLIP-2: 基于冻结图像编码器和大型语言模型的语言-图像预训练引导

    • 项目地址
    • BLIP-2的背景与意义
    • BLIP-2的安装与演示
    • BLIP-2模型库
    • 图像到文本生成示例
    • 特征提取示例
    • 图像-文本匹配示例
    • 性能评估与训练
    • 引用BLIP-2
    • Hugging Face集成

在语言-图像预训练领域,BLIP-2的出现标志着一项重大进展。本篇博客将深入探讨BLIP-2的背景、意义以及它如何改变零-shot语言-图像任务的格局。
在这里插入图片描述

项目地址

https://github.com/salesforce/LAVIS/tree/main/projects/blip2

BLIP-2的背景与意义

BLIP-2是BLIP-2论文的官方实现,是一种通用且高效的预训练策略,可以轻松地利用预训练视觉模型和大型语言模型(LLMs)进行语言-图像预训练。BLIP-2在零-shot VQAv2上击败了Flamingo(65.0对56.3),在零-shot字幕生成上建立了新的技术水平(在NoCaps上的121.6 CIDEr分数,相对于之前的最佳113.2)。搭载强大的LLMs(如OPT、FlanT5),BLIP-2还为各种有趣的应用解锁了新的零-shot指导的视觉到语言生成能力!
在这里插入图片描述

BLIP-2的安装与演示

安装BLIP-2非常简单,只需执行以下命令:

pip install salesforce-lavis

或者根据LAVIS指令从源代码安装。

你还可以尝试我们的笔记本演示,体验指导式的语言到图像生成。

BLIP-2模型库

BLIP-2提供了多种模型架构和类型,包括:

  • blip2_opt:用于预训练和字幕生成
  • blip2_t5:用于预训练和字幕生成
  • blip2:用于特征提取和检索

图像到文本生成示例

让我们看看如何使用BLIP-2模型执行零-shot指导式的图像到文本生成。首先,我们从本地加载样本图像:

import torch
from PIL import Image

# 设置设备
device = torch.device("cuda") if torch.cuda.is_available() else "cpu"

# 加载样本图像
raw_image = Image.open("../../docs/_static/merlion.png").convert("RGB")
display(raw_image.resize((596, 437)))

然后,我们加载一个预训练的BLIP-2模型及其预处理器(变换):

import torch
from lavis.models import load_model_and_preprocess

# 加载预训练的BLIP-2模型
model, vis_processors, _ = load_model_and_preprocess(name="blip2_t5", model_type="pretrain_flant5xxl", is_eval=True, device=device)

# 准备图像
image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)

给定图像和文本提示,询问模型生成响应:

model.generate({"image": image, "prompt": "Question: which city is this? Answer:"})  # 'singapore'

特征提取示例

BLIP-2支持LAVIS的统一特征提取接口。

图像-文本匹配示例

BLIP-2可以使用与BLIP相同的接口计算图像-文本匹配分数。

性能评估与训练

你可以通过下载数据集并运行相应脚本来评估预训练和微调模型。训练过程分为两个阶段:从头开始的预训练和第二阶段的预训练。

引用BLIP-2

你可以在ICML会议上找到关于BLIP-2的更多信息和引用。

Hugging Face集成

BLIP-2已集成到Hugging Face Transformers库中,并且通过bitsandbytes可以利用int8量化,大大减少了加载模型所需的内存量,而不会降低性能。

以上就是BLIP-2的简要介绍和功能概览,希望能为你提供一个清晰的了解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413369.html

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

相关文章

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解 提示:最近开始在【医学图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解前言UNet模型运行环境搭…

【运行Python爬虫脚本示例】

主要内容:Python中的两个库的使用。 1、requests库:访问和获取网页内容, 2、beautifulsoup4库:解析网页内容。 一 python 爬取数据 1 使用requests库发送GET请求,并使用text属性获取网页内容。 然后可以对获取的网页…

数仓治理-数据表合规治理

注:文章参考:数据治理实践 | 数据表合规治理本期将从数据表治理角度出发,探讨数据表合规治理的最佳实践及相关挑战https://mp.weixin.qq.com/s/5ImY5niYNOb_VpicUcasCg 目录 前言 一、数据表合规治理的背景 二、数据表合规治理前的思考 三、数据表合…

c# cad2016选择封闭多段线获取多段线面积

在C#中,如果你想要通过AutoCAD .NET API来选择封闭多段线内部的其他闭合多段线并计算它们各自的面积,可以遵循以下基本步骤: 1、加载AutoCAD库: 确保你的C#项目引用了Autodesk.AutoCAD.Interop和Autodesk.AutoCAD.Interop.Common…

ERROR Failed to get response from https://registry.npm.taobao.org/ 错误的解决

这个问题最近才出现的。可能跟淘宝镜像的证书到期有关。 解决方式一:更新淘宝镜像(本人测试无效,但建议尝试) 虽然无效,但感觉是有很大关系的。还是设置一下比较好。 淘宝镜像的地址(registry.npm.taobao…

燃烧的指针(二)

🌈个人主页:小田爱学编程 🔥 系列专栏:c语言从基础到进阶 🏆🏆关注博主,随时获取更多关于c语言的优质内容!🏆🏆 😀欢迎来到小田代码世界~ &#x…

MacBook自带邮箱设置

MacBook自带邮箱设置 邮件—->偏好设置 服务器设置 收件服务器(POP) 用户名: xxxxxxliang 密码: ***** 主机名:mail.xxx.com.cn 自动管理连接设置 勾上 发件服务器(SMTP) 帐户:xxx.com.cn 用户名:xxxxxxliang 密码:**** 主机名:mail.xxx.com.cn 注意: 自动管理连接设置 不…

transformer和vit学习笔记

以下记录自己对transformer的学习笔记,可能自己看得懂【久了自己也忘了看不懂】,别人看起来有点乱。以后再优化文档~ 小伙伴请直接去看学习资源: Transformer的理解T-1_哔哩哔哩_bilibili 首先,时序处理:一些模型的出…

go 引用fork后的模块的两种方式(replace和工作区)

很久没更新了,一是工作琐碎,二是处在舒适区,但最近看着身边的同事一个个离开,危机感骤然而生,不得不重拾书本,毕竟生活还得继续,不卷是不可能的,谁让我们生在这个卷中卷的国度&#…

组件冲突、data函数、组件通信

文章目录 1.组件的三大组成部分 - 注意点说明2.组件的样式冲突(用 scoped 解决)3.data是一个函数4.组件通信1.什么是组件通信?2.不同的组件关系 和 组件通信方案分类 5.prop详解prop 校验①类型校验②完整写法(类型,非…

QtRVSim(二)一个 RISC-V 程序的解码流程

继上一篇文章简单代码分析后,本文主要调研如何实现对指令的解析运行。 调试配置 使用 gdb 工具跟踪调试运行。 c_cpp_properties.json 项目配置: {"name": "QtRvSim","includePath": ["${workspaceFolder}/**&quo…

如何在Shopee平台上进行家居类目的选品

在Shopee平台上进行家居类目的选品是卖家们提高销售业绩和市场竞争力的重要步骤。通过深入了解市场趋势、竞争对手、消费者偏好和供应链等方面的信息,卖家可以制定有效的选品策略。本文将介绍一些在Shopee平台上进行家居类目选品时的策略和注意事项。 先给大家推荐…

分布式因果推断在美团履约平台的探索与实践

美团履约平台技术部在因果推断领域持续的探索和实践中,自研了一系列分布式的工具。本文重点介绍了分布式因果树算法的实现,并系统地阐述如何设计实现一种分布式因果树算法,以及因果效应评估方面qini_curve/qini_score的不足与应对技巧。希望能…

pytest参数化

一、pytest.mark.parametrize介绍 pytest.mark.parametrize(argnames, argvalues, indirectFalse, idsNone)参数说明: argnames: 一个或多个参数名,用逗号分隔的字符串,如"arg1,arg2,arg3",参数名与用例入参数一致。 a…

Flink问题解决及性能调优-【Flink根据不同场景状态后端使用调优】

Flink 实时groupby聚合场景操作时,由于使用的是rocksdb状态后端,发现CPU的高负载卡在rocksdb的读写上,导致上游算子背压特别大。通过调优使用hashmap状态后端代替rocksdb状态后端,使吞吐量有了质的飞跃(20倍的性能提升…

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…

【Web】CTFSHOW SQL注入刷题记录(上)

目录 无过滤注入 web171 web172 web173 web174 web175 时间盲注 写马 过滤注入 web176 web177 web178 web179 web180 web181-182 web183 web184 web185-186 web187 web188 web189 web190 布尔盲注 web191 web192 web193 web194 堆叠注入 web195 …

对于gzip的了解

gzip基本操作原理:通过消除文件中的冗余信息,使用哈夫曼编码等算法,将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用,减小了传输数据的大小,从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…

Task04:DDPG、TD3算法

本篇博客是本人参加Datawhale组队学习第四次任务的笔记 【教程地址】https://github.com/datawhalechina/joyrl-book 【强化学习库JoyRL】https://github.com/datawhalechina/joyrl/tree/main 【JoyRL开发周报】 https://datawhale.feishu.cn/docx/OM8fdsNl0o5omoxB5nXcyzsInGe…

【原神游戏开发日志3】登录和注册有何区别?

版权声明: ● 本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明 ● 文章内容不得删减、修改、演绎 ● 本文视频版本:见文末 ● 相关学习资源:见文末 前言 ● 这是我们原神游戏开发日记的第三期 ●…