BLIP-2

article/2025/8/3 20:05:33

目录

摘要

Abstract

BLIP-2

模型框架

预训练策略

模型优势

应用场景

实验

代码

总结


摘要

BLIP-2 是一种基于冻结的图像编码器和大型语言模型的高效视觉语言预训练模型,由 Salesforce 研究团队提出。它在 BLIP 的基础上进一步优化,通过轻量级的查询 Transformer桥接图像和文本模态,解决了先前模型在参数效率和多模态对齐方面的不足。BLIP-2 在少样本学习和零样本生成任务中表现出色,例如:在 zero-shot VQAv2 任务上比 Flamingo 提升了 8.7% 的性能,同时可训练参数减少了 54 倍。其高效的计算性能和轻量级设计使其在图像描述生成、视觉问答和图像到文本检索等任务上展现出强大的能力,为多模态人工智能的发展提供了新的方向。

Abstract

BLIP-2 is an efficient vision-language pre-training model based on frozen image encoders and large language models, proposed by the Salesforce research team. Building on the foundation of BLIP, it further optimizes the model by using a lightweight Query Transformer to bridge the image and text modalities, addressing the limitations of previous models in terms of parameter efficiency and multimodal alignment. BLIP-2 performs exceptionally well in few-shot learning and zero-shot generation tasks. For example, it achieves an 8.7% improvement in performance on the zero-shot VQAv2 task compared to Flamingo, while reducing the number of trainable parameters by 54 times. Its high computational efficiency and lightweight design enable it to demonstrate strong capabilities in tasks such as image captioning, visual question answering, and image-to-text retrieval, providing a new direction for the development of multimodal artificial intelligence.

BLIP-2

项目地址:https://github.com/salesforce/LAVIS/tree/main/projects/blip2

模型框架

BLIP-2的核心架构包括三个主要部分:

冻结的图像编码器:通常使用类似CLIP的视觉模型(如ViT),其权重在训练过程中保持不变。

轻量级的查询Transformer:这是BLIP-2的核心模块,用于桥接图像编码器和语言模型之间的模态差距。Q-Former包含两个子模块:

  • 图像Transformer:用于从冻结的图像编码器中提取视觉特征;
  • 文本Transformer:作为文本编码器和解码器,用于生成文本。

冻结的大型语言模型:如Flan-T5或LLaMA,其权重在训练过程中也保持不变。

预训练策略

BLIP-2采用两阶段预训练策略:

第一阶段:视觉语言表示学习:

  • 使用冻结的图像编码器,通过图像-文本对比学习(ITC)、图像-文本匹配(ITM)和图像引导的文本生成(ITG)任务,学习视觉与语言的对齐;
  • ITC任务通过对比图像和文本嵌入来对齐模态;
  • ITM任务通过二分类任务判断图像和文本是否匹配。 ITG任务通过生成文本任务来学习图像特征。

第二阶段:视觉到语言的生成学习:

  • 将Q-Former提取的视觉特征传递给冻结的LLM,通过语言建模损失进行预训练;
  • 对于解码器型LLM,使用语言建模损失进行训练;
  • 对于编码器-解码器型LLM,使用前缀语言建模损失进行训练。

模型优势

高效利用预训练模型:通过冻结图像编码器和LLM,显著减少了可训练参数的数量。例如,BLIP-2在zero-shot VQAv2任务上比Flamingo模型提升了8.7%的性能,但可训练参数减少了54倍。

强大的少样本学习能力:即使在训练参数较少的情况下,BLIP-2也能在多种视觉语言任务上达到最先进的性能。

计算效率高:由于使用了冻结的模型和轻量级的Q-Former,BLIP-2的计算效率更高,更易于部署和使用。

零样本图像到文本生成能力:BLIP-2能够根据自然语言指令生成与图像相关的文本。

应用场景

图像描述生成:能够根据图像生成准确的描述文本;

视觉问答:能够根据图像和问题生成答案;

图像到文本检索:能够根据图像检索相关的文本内容。

实验

零镜头能力:

零镜头视觉问答:

图像文本检索:

代码

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
import torch
import pandas as pd
from lavis.models import load_model_and_preprocess
from transformers import Blip2Processor, Blip2ForConditionalGeneration
from PIL import Image
import requestsdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# loads BLIP caption base model, with finetuned checkpoints on MSCOCO captioning dataset.
# this also loads the associated image processors
processor = Blip2Processor.from_pretrained("blip2-opt-2.7b/")
model = Blip2ForConditionalGeneration.from_pretrained("blip2-opt-2.7b/", torch_dtype=torch.float16
)
model.to(device)
# preprocess the image
# vis_processors stores image transforms for "train" and "eval" (validation / testing / inference)
raw_image = Image.open("https://storage.googleapis.com/sfr-vision-language-research/LAVIS/assets/merlion.png").convert("RGB")image = vis_processors["eval"](raw_image).unsqueeze(0).to(device)
# generate caption
res = model.generate({"image": image})print(res)
# ['a large fountain spewing water into the air']

输入图像1:

输入图像2:

输出: 

1、a person is holding a cup in their hand.

2、a man is cleaning a car with a pressure gun.

总结

BLIP-2 是一种创新的视觉语言预训练模型,通过结合冻结的图像编码器和大型语言模型,并引入轻量级查询Transformer桥接视觉与文本模态,有效解决了先前模型在参数效率和多模态对齐方面的不足。在少样本学习和零样本生成任务中,BLIP-2 表现卓越,例如在 zero-shot VQAv2 任务上性能比 Flamingo 提升了 8.7%,同时可训练参数减少了 54 倍。其高效的设计和强大的性能使其在图像描述生成、视觉问答和图像到文本检索等任务中展现出巨大优势,为多模态人工智能的发展提供了新的高效路径。


http://www.hkcw.cn/article/PmeEWSRiBX.shtml

相关文章

通过WiFi无线连接小米手机摄像头到电脑的方法

通过WiFi无线连接小米手机摄像头到电脑的方法 以下是基于Scrcpy和DroidCam两种工具的无线连接方案,需提前完成开发者模式与USB调试的开启(参考原教程步骤): 方法一:Scrcpy无线投屏(无需手机端安装&#xf…

8088 单板机 NMI 中断程序示例 (脱离 DOS 环境)

求组DeepSeek给的将要进行的8088单板机NMI中断编程示例。 /* nmidemo.c - 8088 单板机 NMI 中断演示程序 */ /* 脱离 DOS 环境,直接运行在裸机上 */ /* 使用 Digital Mars C 编译器,TINY 模式编译 *//* 硬件配置假设:- 8088 CPU 4.77MHz- 8255 PPI (可…

详解鸿蒙开发如何上传三方库到ohpm仓库

前两天幽蓝君在ohpm仓库上传了自己的第一个三方库,完整体验了一下ohpm的上传流程,感觉还是比较繁琐的,所以把上传流程和一些注意事项分享给大家。 先介绍一下怎么开发一个三方库,在项目名称右键,新建Module&#xff0…

PHP与MYSQL结合中中的一些常用函数,HTTP协议定义,PHP进行文件编程,会话技术

MYSQL: 查询函数: 执行查询语句: 1.mysql_query("SQL语法"); 凡是执行操作希望拿到数据库返回的数据进行展示的(结果返回: 数据结果); 2.执行结果的处理:成功为结果集,失败为false; 成功返回结果:SQL指令没有错误,但是查询结果…

[Protobuf]常见数据类型以及使用注意事项

[Protobuf]常见数据类型以及使用注意事项 水墨不写bug 文章目录 一、基本数据类型1、字段2、字段的修饰规则 二、自定义数据类型1、message类型2、enum类型3、Any类型4、oneof类型5、map类型 三、小工具1.hexdump2.decode 四、注意事项 一、基本数据类型 protobuf 支持多种基础…

邂逅Webpack和打包过程

前端开发方向 目前国内的前端开发 主要使用Vue和React 一般你写个项目,过程就是:npm/yarn --> webpack架构 --> Vue/React框架 而针对Vue和React都有脚手架的,脚手架是基于webpack搭建的 你写.jsx或者ts之类的浏览器是不认识的&…

计算机网络第1章(下):网络性能指标与分层模型全面解析

目录 一、计算机网络的性能指标1.1 性能指标1:速率1.2 性能指标2:带宽1.3 性能指标3:吞吐量1.4 性能指标4:时延1.5 性能指标5:时延带宽积1.6 性能指标6:往返时延1.7 性能指标7:信道利用率 二、计…

多模态大语言模型arxiv论文略读(102)

Chat2Layout: Interactive 3D Furniture Layout with a Multimodal LLM ➡️ 论文标题:Chat2Layout: Interactive 3D Furniture Layout with a Multimodal LLM ➡️ 论文作者:Can Wang, Hongliang Zhong, Menglei Chai, Mingming He, Dongdong Chen, Ji…

python学习打卡day42

DAY 42 Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 1.回调函数 Hook本质是回调函数,所以我们先介绍一下回调函数 回调函数是作为参数传递给其他函数的函数&#xff0…

VeriFree:无需Verifier的通用RL框架

文章目录 前言1. 研究背景与挑战1.1 传统强化学习框架(RLVR)的领域局限性1.2 引入LLM作为验证器的新挑战1.3 研究目标的提出 2. VeriFree方法核心原理2.1 问题定义与形式化建模2.2 核心思想:隐式验证与概率最大化2.3 训练技术细节 3. 实验4. …

uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能

(3) 使用云对象sendEmailCode 发送邮箱验证码,报错送邮箱验证码失败 Error: 已启动测试模式,直接使用:123456作为邮箱验证码即可。 如果是正式项目,需自行实现发送邮件的相关功能 - DCloud问答 uni-id 没有实现邮箱验证码逻辑&am…

HiEV独家 | 整合智能化战线,奇瑞辅助驾驶驶向何方?

作者 |德新 编辑 |王博 组织调整是战略变革的映射,而战略变革最终要在产品上体现。 5月30日,奇瑞汽车官宣整合旗下雄狮科技、大卓智能与研发总院相关业务,成立「智能化中心」。智能化中心下设有智能座舱、智能辅助驾驶、电子电气架构等子中…

什么是软件需求可视化?如何实际运用?

一、什么是软件需求可视化? 将软件需求可视化是一个有助于团队成员更好地理解项目需求、促进沟通和协作的重要过程。以下是几种常见的方法和技术,可以帮助你有效地实现这一目标: 用户故事地图:这是一种通过创建一个从用户角度出发…

腾讯:强化学习提高LLM机器翻译

📖标题:TAT-R1: Terminology-Aware Translation with Reinforcement Learning and Word Alignment 🌐来源:arXiv, 2505.21172 🌟摘要 最近,像DeepSeek-R1这样的深度推理大型语言模型(LLM&…

C++ IO流

目录 一、C语言的输入与输出 二、流 三、CIO流 3.1 C标准IO流 3.2 C文件IO流 3.3 stringstream字符串流 一、C语言的输入与输出 在 C 语言中,最常用的输入输出函数是 scanf() 和 printf()。它们分别用于从标准输入读取数据,以及将数据输出到标准输出…

linux文件管理(补充)

1、查看文件命令 1.1 cat 用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。 用法: cat 参数 文件名 参数: -n:显示行号,会在输出的每一行前加上行号。 -b:显示行号,…

Relational Algebra(数据库关系代数)

目录 What is an “Algebra” What is Relational Algebra? Core Relational Algebra Selection Projection Extended Projection Product(笛卡尔积) Theta-Join Natural Join Renaming Building Complex Expressions Sequences of Assignm…

操作系统:进程管理(王道+计算机操作系统)

第二章 进程与线程 2.1进程的概念、组成与特征 2.1.1 进程与程序的区别 ​ 1.程序:静态的,就是放在磁盘里的可执行文件,如:QQ.exe。 ​ 2.进程:动态的,是程序的一次执行过程,如:…

浅谈简历制作的四点注意事项

如大家所了解的,一份工作,往往是从制作一份简历开始。 对于新人来说,简历制作的注意事项,你又了解多少呢?下面一起来看看吧! 简历字数:一封合格的简历字数大概在 350 词 – 650 词之间&#xf…

软考-数据库系统工程师-程序设计语言知识要点

小房学堂,程序设计语言知识要点 汇编、编译、解释系统的基础知识 计算机只能理解由0-1组成的指令,就像一个只会本国语言的人,他听不懂其他国家的语言 而程序员编程使用的是低级语言(汇编语言)或者高级语言如C、C、Jav…