BLIP-2:低计算视觉-语言预训练大模型

BLIP-2

    • BLIP 对比 BLIP-2
      • BLIP
      • BLIP-2
        • 如何在视觉和语言模型之间实现有效的信息交互,同时降低预训练的计算成本?
        • 视觉语言表示学习
        • 视觉到语言的生成学习
        • 模型架构设计
    • 总结
      • 主要问题: 如何在计算效率和资源有限的情况下,有效地结合冻结的图像编码器和大型语言模型,来提高在视觉语言任务上的性能?
        • 子解法1: 视觉语言表示学习
        • 子解法2: 视觉到语言的生成学习
        • 子解法3: 模型预训练

 


论文:https://arxiv.org/pdf/2301.12597.pdf

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

 

BLIP 对比 BLIP-2

BLIP:跨越视觉-语言界限:BLIP的多任务精细处理策略

BLIP(Bootstrapping Language-Image Pre-training)和BLIP-2都是在视觉-语言预训练领域的重要工作,旨在通过学习视觉和语言之间的联系来提升模型在多种下游任务上的性能。

然而,这两个模型在设计理念、实现方法以及目标任务上存在显著的差异。

BLIP

设计理念

  • BLIP采用了一种创新的预训练框架,通过结合图像编码器和语言模型,并引入标题生成与过滤(CapFilt)机制来优化训练数据的质量。

实现方法

  • 通过多模态混合编解码器(MED),BLIP能够灵活处理不同的视觉-语言任务,包括图像-文本检索、图像描述生成等。
  • CapFilt机制通过生成合成标题并过滤掉噪声数据,提高了模型学习的效率和准确性。

目标任务

  • BLIP旨在提升模型在多种视觉-语言任务上的表现,特别是在数据质量和多任务适用性方面进行了优化。

 


BLIP-2

设计理念

  • BLIP-2关注于降低视觉-语言预训练的计算成本,通过利用现成的、冻结的图像编码器和大型语言模型来实现预训练策略。

实现方法

  • 引入了轻量级的查询变换器(Querying Transformer,简称Q-Former),它在两个阶段中进行预训练:首先从冻结的图像编码器学习视觉-语言表示,然后从冻结的语言模型学习视觉到语言的生成学习。
  • Q-Former作为信息瓶颈,将图像特征有效地传递给语言模型,以生成相关的文本描述。

目标任务

  • BLIP-2在多种视觉-语言任务上实现了最先进的性能,包括视觉问答、图像描述和图像-文本检索等。
  • 特别地,BLIP-2展示了零样本图像到文本生成的能力,能够遵循自然语言指令生成文本,开启了如视觉知识推理、视觉对话等新能力。

对比总结

  • BLIP强调通过数据质量优化和多任务灵活性来提升性能,而BLIP-2则侧重于计算效率的提升,利用冻结的单模态模型和轻量级转换器降低预训练成本。
  • BLIP-2相比于BLIP,在保持高性能的同时,大大减少了可训练参数的数量,显示出在计算资源有限情况下的优势。
  • 两者均展现了视觉-语言模型的强大潜力,但各自通过不同的策略和技术实现来解决视觉和语言联合理解的挑战。

 


如何在视觉和语言模型之间实现有效的信息交互,同时降低预训练的计算成本?

BLIP-2 结构:
在这里插入图片描述
该模型通过两个阶段的预训练Querying Transformer来连接视觉和文本模态。

第一阶段通过冻结的图像编码器启动视觉与语言的表示学习。

第二阶段通过冻结的大型语言模型(LLM)启动视觉到语言的生成学习,使得模型能够实现零样本的图像到文本生成。

 

  • 子问题: 如何有效地从图像中提取特征以供语言模型使用,而不需要重新训练图像编码器?
  • 子解法: Bootstrapping Pre-trained Image Models
  • 利用冻结的预训练图像编码器来提取图像特征,降低了额外的计算成本,同时利用了图像编码器强大的视觉理解能力。
  • 之所以使用此解法,是因为预训练图像模型已经具有高质量的视觉表示能力,这样可以直接利用这些能力,而无需通过昂贵的重新训练来适应视觉任务。

假设有一张图片,图片上是一只在公园里追球的小狗。

使用BLIP-2的方法,我们不需要对图像编码器进行任何新的训练。

这个冻结的预训练图像编码器已经学会如何识别图片中的对象,比如小狗、球和公园。

当这张图片通过图像编码器时,它能有效地提取出这些特征(小狗、球和公园)。

这些特征随后被用作语言生成模型的输入,即使这个语言模型原本并不直接处理图像数据。

这样,我们就能利用已有的高质量视觉表示,而无需额外的计算成本来重新训练图像编码器。

 

  • 子问题: 如何使冻结的大型语言模型能理解和生成与图像内容相关的文本?
  • 子解法: Bootstrapping Pre-trained Large Language Models (LLMs)
  • 通过连接一个轻量级的Querying Transformer(查询变换器)到冻结的LLM,使其能够基于图像特征生成相关的文本描述。
  • 之所以使用此解法,是因为大型语言模型虽然在文本生成方面能力强大,但它们未经训练以直接处理图像数据。引入查询变换器可以将图像特征转换成语言模型能理解的格式,从而实现跨模态学习。

现在我们有了小狗追球的图像特征,接下来的挑战是如何让一个未曾直接处理过图像的大型语言模型理解这些特征,并生成相关的文本。

这里,BLIP-2引入了一个轻量级的查询变换器。

这个查询变换器被训练以从图像编码器提取的特征中挑选出最有意义的信息,然后以一种语言模型能理解的方式呈现这些信息。

在这个例子中,查询变换器可能会学习到如何将“小狗”、“球”和“公园”的视觉特征转换成语言模型可以利用的提示,比如“一只小狗在公园里追一个球”。

因此,即使语言模型原先并不直接处理图像数据,它现在也能基于这些转换后的提示生成描述性文本,如“快乐的小狗在阳光下追逐着球”,实现了有效的视觉到语言的跨模态学习。

 

  1. 子问题: 如何确保从图像编码器提取的特征对语言生成最有用?
    • 子解法: 学习查询向量
    • 通过训练Querying Transformer中的查询向量来选择性地提取对语言模型最有意义的图像特征。
    • 例子: 假如我们要从一张图片中生成描述,查询变换器学习到的查询向量可能专注于图像中的关键物体或场景,以便生成准确的描述。

 

  1. 子问题: 如何优化这种跨模态的信息流动,以提高效率和性能?
    • 子解法: 两阶段预训练策略
    • 第一阶段,专注于视觉语言表示学习,强化视觉特征和文本之间的相关性。
    • 第二阶段,专注于视觉到语言的生成学习,优化查询变换器以便其输出能被语言模型有效解释。
    • 例子: 在第一阶段,系统可能学习将图像中的狗与“狗”这个词联系起来。在第二阶段,系统则学习如何基于图像生成如“一只在草地上玩耍的狗”的详细描述。

通过这种方式,BLIP-2框架有效地解决了视觉和语言之间的信息交互问题,同时显著降低了预训练所需的计算资源。

 

视觉语言表示学习
  • 子问题: 如何让视觉和语言模型在保持冻结状态下有效交互以提高多模态理解?
  • 子解法: Bootstrap Vision-Language Representation Learning from a Frozen Image Encoder
  • 通过将Q-Former连接到冻结的图像编码器并使用图像-文本对进行预训练,训练Q-Former使查询能够提取最具文本信息的视觉表示。
  • 之所以使用此解法,是因为冻结的图像编码器已经具备高质量的视觉表示能力,而Q-Former通过学习这些表示与文本的关系,可以在不增加计算成本的前提下提高模型的视觉语言理解能力。

Q-Former模型架构:
在这里插入图片描述

Q-Former由图像变换器和文本变换器组成,共享自注意力层。

上图展示了三个预训练目标:图像-文本对比学习、基于图像的文本生成和图像-文本匹配。

图的右侧显示了用于每个目标的不同自注意力遮罩策略,以控制查询和文本之间的交互。
 

视觉到语言的生成学习
  • 子问题: 在不直接修改大型语言模型的情况下,如何利用其语言生成能力以响应视觉输入?
  • 子解法: Bootstrap Vision-to-Language Generative Learning from a Frozen LLM
  • 在预训练的第二阶段,将Q-Former(附带冻结的图像编码器)连接到冻结的LLM,使用全连接层将输出查询表示投影到与LLM文本嵌入相同的维度,作为视觉提示输入LLM。
  • 之所以使用此解法,是因为LLM的强大语言生成能力可以通过预训练的Q-Former来触发,其中Q-Former作为信息瓶颈,筛选最有用的视觉信息输入LLM,减轻LLM学习视觉语言对齐的负担,同时避免灾难性遗忘问题。

BLIP-2如何使用不同类型的冻结LLM进行视觉到语言的生成学习:

顶部展示了基于解码器的LLM(例如OPT)的启动过程,其中全连接层将Q-Former的输出维度适配到LLM解码器的输入维度。

底部展示了基于编解码器的LLM(例如FlanT5)的启动过程,其中全连接层将Q-Former的输出适配到LLM的编码器,投影后的查询作为视觉提示用于文本生成。

 

模型架构设计
  • 子问题: 如何设计一个能够有效桥接冻结的视觉和语言模型的中间模块?
  • 子解法: Q-Former Model Architecture
  • Q-Former设计为能够从冻结的图像编码器提取固定数量的输出特征并与冻结的LLM交互的可训练模块。它包括图像转换器和文本转换器两个子模块,通过自注意力层共享信息,使用可学习的查询嵌入作为输入。
  • 之所以使用此解法,是因为需要一个轻量级但灵活的桥梁来提取和传递图像特征给LLM,而Q-Former正好提供了这样一个桥梁,它通过精心设计的查询机制和自注意力层,确保了有效的信息提取和传递。

 

假设我们有一张图片显示一只猫在窗边晒太阳,目标是生成描述这一场景的文本。

  • 视觉语言表示学习阶段,Q-Former学习从图像中提取代表“猫”、“窗户”和“晒太阳”等元素的特征。

这一阶段通过图像-文本对比学习和图像-文本匹配任务来优化,使得Q-Former能够识别和提取与文本信息最相关的视觉特征。

  • 视觉到语言的生成学习阶段,这些特征被用作触发冻结LLM生成描述文本的软提示。

例如,Q-Former的输出可能被转换成LLM能理解的形式:“一只猫坐在窗户旁边享受阳光”。

这时,冻结的LLM基于这些视觉提示开始生成文本,可能会产生如“一只悠闲的猫咪在温暖的阳光下打盹,享受着宁静的午后时光。”

这样详细且富有情感的描述。这个过程展示了Q-Former作为桥梁如何有效地将视觉信息转换成LLM可以理解和进一步加工的语言信息。

通过这个实例,我们看到了BLIP-2框架如何解决跨模态学习的挑战:

  • 通过预训练的Q-Former桥接冻结的视觉和语言模型,使得无需对这些大型模型进行昂贵的再训练或微调,就能有效地结合它们的能力来解决复杂的视觉语言任务。

  • 利用Q-Former的灵活架构和预训练策略,提取和传递最有意义的视觉信息给LLM,从而实现精确且自然的语言生成,这不仅提升了生成文本的质量,也展示了模型在理解和生成与视觉内容紧密相关的描述方面的能力。

这种方法的优点在于它结合了预训练模型的强大能力与新颖的训练策略,创造了一个既高效又强大的视觉语言学习框架。

BLIP-2证明了即使在资源有限的情况下,也能通过智能的模型设计和预训练策略,实现高水平的视觉语言任务性能。

 


总结

主要问题: 如何在计算效率和资源有限的情况下,有效地结合冻结的图像编码器和大型语言模型,来提高在视觉语言任务上的性能?

子解法1: 视觉语言表示学习
  • 子问题: 如何提取并学习图像的特征表示,使之能够与文本有效结合,而不需要重新训练图像编码器?
  • 子解法: 使用Q-Former进行视觉语言表示学习。Q-Former通过与冻结的图像编码器的交互来提取视觉特征,并通过自注意力和交叉注意力层来学习这些视觉特征与相关文本之间的对应关系。
  • 之所以使用此解法,是因为冻结的图像编码器具有高质量的视觉表示,而Q-Former可以在不改变这些预训练模型的前提下,学习这些特征与文本之间的关联

 

子解法2: 视觉到语言的生成学习
  • 子问题: 在不修改大型语言模型的前提下,如何实现基于视觉输入的语言生成?
  • 子解法: 从冻结的LLM进行视觉到语言的生成学习。Q-Former的输出通过全连接层适配到LLM的输入维度,使得冻结的LLM能够基于这些视觉提示来生成文本。
  • 之所以使用此解法,是因为LLM具有强大的语言生成能力,但不直接处理视觉数据。Q-Former作为一个信息瓶颈,筛选并传递关键视觉信息给LLM,使得LLM能够在没有视觉训练的情况下生成与图像相关的文本。

 

子解法3: 模型预训练
  • 子问题: 如何有效地预训练Q-Former来实现上述两个子问题的目标?
  • 子解法: Q-Former的双阶段预训练。第一阶段是视觉语言表示学习,第二阶段是视觉到语言的生成学习。
  • 之所以使用此解法,是因为需要一个逐步学习和优化的过程来确保Q-Former能够有效地提取视觉特征,并且这些特征能够被LLM用于生成文本

 

假设我们的目标是生成一张图片的描述文本,其中图片显示一只戴着太阳镜的猫。

  • 视觉语言表示学习阶段,Q-Former学习如何从图像中提取代表“猫”和“太阳镜”等关键特征,并学习这些特征与“戴太阳镜的猫”这样的文本描述之间的关联。

  • 视觉到语言的生成学习阶段,这些视觉特征被转换成LLM能够理解的形式,并作为生成描述文本的输入。例如,Q-Former提取的特征被用来提示LLM生成文本描述“一只戴着太阳镜的猫”。

通过这个双阶段预训练过程,BLIP-2在视觉语言任务上实现了高性能,同时避免了对大规模预训练模型的昂贵重新训练。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【NTN 卫星通信】基于NTN的多3GPP连接应用场景

1 概述 同时聚合两条3GPP接入链路,其中一条为非地面网络,可以提供以下5G业务使能,尤其适用于带宽有限或接入链路不可靠的服务不足地区:   -扩展流动宽频   -超可靠的服务通信 如技术报告38.821所述,若干服务场景(例如在偏远地…

时间序列预测 —— ConvLSTM 模型

时间序列预测 —— ConvLSTM 模型 时间序列预测是一项重要的任务,ConvLSTM(卷积长短时记忆网络)是深度学习领域中用于处理时序数据的强大工具之一。本文将介绍 ConvLSTM 的理论基础、优缺点,与其他常见时序模型(如 LS…

golang开发window环境搭建

1.本人开发环境:window10,idea2020.1.3 2.Go语言环境版本1.5.1 2.1. go语言插件 下载地址 csdn - 安全中心 2.2下载安装 3.idea配置go环境 4.创建go项目 、5.运行

ShardingSphere 5.x 系列【4】产品介绍

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 简介2. 核心特性2.1 数据分片2…

空中加油3D可视化:引领航空领域的新革命

随着科技的日新月异,我们生活的方方面面都在发生着深刻的变化。而在航空领域,3D可视化技术正在引领新的革命。它不仅为飞行员提供了一种全新的视角,更在保障飞行安全、提高飞行效率方面发挥着不可替代的作用。 在传统的空中加油中&#xff0c…

无人机遥感技术在地质灾害监测应用分析,多旋翼无人机应急救援技术探讨

地质灾害是指在地球的发展演变过程中, 由各种自然地质作用和人类活动所形成的灾害性地质事件。给人民的生命和财产安全带来严重威胁,因此有必要开展地质灾害预测预报、灾害应急和风险区划 遥感技术的快速发展为我们提供了一种获取实时灾害信息的可靠手段…

Echarts+Vue 首页大屏静态示例Demo 第三版

效果图: 源码: <template><div class="content bg" style="height: 100vh;overflow-y: auto" :class="{ fullscreen-container: isFullScreen }"><div class="reaDiv" style="height: 10vh"><div…

FPGA项目(16)——基于FPGA的音乐演奏电路

1.设计要求 能在实验箱上&#xff0c;循环播放一段音乐。&#xff08;需要源码的直接看最后一节&#xff09; 2.设计原理 组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需要的两个基本要素&#xff0c;问题是如何来获取这两个要素所对应的数值以及通过纯硬件…

幻兽帕鲁内存溢出怎么办,一键设置定时重启,修改虚拟内存,定时清理,轻松解决卡顿!再也不怕爆内存了!

幻兽帕鲁的内存溢出问题&#xff0c;玩久了确实会变卡。这里给出三个解决思路&#xff1a; 第一种方法是定时进行内存清理&#xff08;装个软件就可以&#xff09;&#xff0c;网上也有很多教程&#xff0c;我会把下载地址放在文章后面&#xff0c;大家可以去下载。第二种方法…

c语言二叉树的创建,三种遍历方式,销毁

二叉树的创建 typedef char datatype; typedef struct Node {datatype data;struct Node *left_child;struct Node *right_child;}*Btree; //二叉树的创建 Btree create_node() {Btree t(Btree)malloc(sizeof(struct Node));if(NULLt)return NULL;t->data0;t->left_chil…

Unity项目从built-in升级到URP(包含早期版本和2023版本)

unity不同版本的升级URP的方式不一样&#xff0c;但是大体流程是相似的 首先是加载URP包 Windows -> package manager,在unity registry中找到Universal RP 2023版本&#xff1a; 更早的版本&#xff1a; 创建URP资源和渲染器​​ 有些版本在加载时会自动创建&#…

【PyTorch][chapter 14][李宏毅深度学习][Word Embedding]

前言&#xff1a; 这是用于自然语言处理中数据降维的一种方案。 我们希望用一个向量来表示每一个单词. 有不同的方案 目录&#xff1a; one-hot Encoding word-class 词的上下文表示 count-based perdition-based CBOW Skip-Gram word Embedding 词向量相似…

全流程机器视觉工程开发(三)任务前瞻 - 从opencv的安装编译说起,到图像增强和分割

前言 最近开始做这个裂缝识别的任务了&#xff0c;大大小小的问题我已经摸得差不多了&#xff0c;然后关于识别任务和分割任务我现在也弄的差不多了。 现在开始做正式的业务&#xff0c;也就是我们说的裂缝识别的任务。作为前言&#xff0c;先来说说场景&#xff1a; 现在相…

微服务的幂等性

微服务架构设计的中心思想是将服务进行拆分&#xff0c;但是在这个过程中&#xff0c;如果被依赖的服务发生奔溃&#xff0c;就会引起一系列问题。为了解决这个问题&#xff0c;就会引入重试的机制&#xff0c;重试又会引入幂等性的问题&#xff0c;下面我们就分析这个过程&…

电磁兼容(EMC):传导骚扰差模频段超标机理及解决方案

目录 1 家用电器传导发射限值要求 2 传导测量等效电路 3 传导测试数据差、共模干扰分段 4 差模干扰源分析及解决方案 电子产品需要满足电磁兼容EMC要求&#xff0c;EMC包括抗扰度试验&#xff08;EMS&#xff09;和辐射类试验&#xff08;EMI&#xff09;&#xff0c;发射类…

如何编写接口测试用例

作为测试人&#xff0c;我们经常要对项目中的接口进行接口测试&#xff0c;那么在做接口测试的时候&#xff0c;如何写接口测试用例呢&#xff1f; 什么是接口测试 首先我们要了解一下&#xff0c;什么是接口测试&#xff1f; 那么首先要搞清楚&#xff0c;我们一般说的接口…

<设计模式>单例模式懒汉和饿汉

目录 一、单例模式概述 二、懒汉模式和饿汉模式 1.饿汉模式 1.1代码实现 1.2实现细节 1.3模式优劣 2.懒汉模式 2.1代码实现 2.2实现细节 2.3模式优劣 三、多线程下的线程安全问题 1.懒汉和饿汉线程安全问题分析 1.1安全的饿汉模式 1.2不安全的懒汉模式 2.懒汉线程…

Jenkins(三):自动化部署SpringBoot项目

前言 在软件开发过程中&#xff0c;自动化部署已经成为不可或缺的一环。Jenkins是一个广泛使用的开源自动化部署工具&#xff0c;它提供了强大的功能和灵活的配置选项&#xff0c;可以帮助开发团队实现高效的持续集成和持续部署。本文将详细介绍如何使用Jenkins自动化部署Spri…

爬取58二手房并用SVR模型拟合

目录 一、前言 二、爬虫与数据处理 三、模型 一、前言 爬取数据仅用于练习和学习。本文运用二手房规格sepc(如3室2厅1卫)和二手房面积area预测二手房价格price&#xff0c;只是练习和学习&#xff0c;不代表如何实际意义。 二、爬虫与数据处理 import requests import cha…

EasyX图形库学习(二、文字输出)

目录 一、文字绘制函数 字体属性结构体:logfont 文字输出 outtextxy 在指定位置输出字符串。 ​编辑 但如果直接使用,可能有以下报错&#xff1a; 三种解决方案&#xff1a; 将一个int类型的分数,输出到图形界面上 如果直接使用&#xff1a; 会把score输入进去根据A…