BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Mode

article/2025/10/22 14:41:11

Paper name

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

Paper Reading Note

URL: https://arxiv.org/pdf/2301.12597.pdf

TL;DR

  • 2023 年 Salesforce 出的文章,提出了 BLIP-2,一种通用而有效的预训练策略,它从现成的冻结参数的图像编码器和冻结参数的大型语言模型中引导视觉语言预训练,在 Image Captioning、VQA、Image-Text Retrieval 任务的多个数据集上取得 SOTA

Introduction

背景

  • 由于大规模模型的端到端训练,视觉和语言预训练的成本变得越来越高
  • 为了降低计算成本并抵消灾难性遗忘的问题,希望在 Vision-language pre-training (VLP) 中固定视觉模型参数与语言模型参数。然而,由于语言模型在其单模态预训练期间没有看到图像,因此冻结它们使得视觉语言对齐尤其具有挑战性

本文方案

在这里插入图片描述

  • 本文提出了BLIP-2,这是一种通用而有效的预训练策略,它从现成的冻结预训练图像编码器和冻结的大型语言模型中引导视觉语言预训练

  • BLIP-2通过一个轻量级的 Querying Transformer (Q-Former是一个轻量级的 transformer,它使用一组可学习的查询向量来从冻结图像编码器中提取视觉特征,为LLM提供最有用的视觉特征,以输出所需的文本) 弥补了模态 gap,该 Transformer 分两个阶段进行预训练

    • 第一阶段从冻结图像编码器引导视觉-语言表示学习,强制 Q-Former 学习与文本最相关的视觉表示
    • 第二阶段基于冻结的语言模型引导从视觉到语言的生成学习,将Q-Former的输出连接到冻结的LLM,并对Q-Former进行训练,使其输出视觉表示能够被LLM解释
  • BLIP2 优势

    • 2stage 训练(表征学习阶段和生成学习阶段)有效利用冻结的预训练图像模型和语言模型,视觉问答、图像字幕和图像文本检索三个任务上取得了 SOTA
    • 由 LLM (如 OPT、FlanT5) 提供支持,BLIP-2 可以被提示执行遵循自然语言指令的 zero-shot 图像到文本生成,这实现了诸如视觉知识推理、视觉对话等新兴功能
    • 由于使用了冻结的单模态模型和轻量级的Q-Former,BLIP-2比现有技术的计算效率更高。比如,BLIP-2 在 zero-shot VQAv2 上比 Flamingo 高 8.7%,可训练参数减少了 54 倍

Dataset/Algorithm/Model/Experiment Detail

实现方式

模型架构

  • 提出Q-Former作为可训练模块,以弥合冻结图像编码器和冻结LLM之间的差距。它从图像编码器中提取固定数量的输出特征,与输入图像分辨率无关
    在这里插入图片描述
  • Q-Former 包含两个共享 self-attention 层的 transformer 模块
    • 一种与冻结图像编码器交互的图像 transformer,用于视觉特征提取
    • 一种既可以充当文本编码器又可以充当文本解码器的文本转换器
  • 通过自关注层相互交互,并通过交叉关注层与冻结图像特征交互,还可以通过相同的 self-attention 层与文本交互。根据预训练任务,应用不同的 self-attention 掩码来控制查询文本交互
  • Q-Former 包含 188M 参数,导入 BERTbase pretrain 参数,cross-attention layers 随机初始化,query 维度 32×768 (明显小于图像编码器输出特征维度 257 × 1024)

Bootstrap Vision-Language Representation Learning from a Frozen Image Encoder

  • 参考 BLIP,联合优化共享相同输入格式和模型参数的三个预训练目标。每个目标在查询和文本之间采用不同的注意力掩蔽策略来控制它们的交互
  • Image-Text Contrastive Learning (ITC)
    • 学习对齐图像表示和文本表示,以使它们的相互信息最大化。通过对比正负对的图像-文本相似性来实现这一点
    • 为了避免信息泄漏,采用了 unimodal self-attention 掩码,不允许 query 和文本相互查看
  • Image-grounded Text Generation (ITG)
    • 训练 Q-Former 生成文本,将输入图像作为条件
    • 由于 Q-Former 的架构不允许冻结图像编码器和文本 tokens 之间的直接交互,因此生成文本所需的信息必须首先由 query 提取,然后通过 self-attention 传递给文本 tokens。因此,query 被迫提取包含文本所有信息的视觉特征
    • 使用 multimodal causal self-attention 掩码来控制 query 与文本交互。query 可以相互关注,但不能关注文本 tokens。每个文本 tokens 都可以处理所有 query 及其以前的文本标记
  • Image-Text Matching (ITM)
    • 旨在学习图像和文本表示之间的细粒度对齐
    • 这是一个二进制分类任务,要求模型预测图像文本对是正(匹配)还是负(不匹配)
    • 使用 bi-directional self-attention 掩码,所有查询和文本都可以相互关注。因此,输出的 query embedding 捕获多模态信息

Bootstrap Vision-to-Language Generative Learning from a Frozen LLM

在这里插入图片描述

  • 在生成预训练阶段,将 QFormer(附带冻结图像编码器)连接到冻结 LLM,以获取LLM 的生成语言能力
  • 使用 FC 层将QFormer 输出的 query embedding 线性投影到与 LLM 的文本 embedding 相同的维度。将投影的 query embedding 附加到输入文本 embedding
    • 它们用作 soft visual prompts,以 Q-Former 提取的视觉表示为 LLM 提供条件
    • 由于 Q-Former 已经有预训练以提取富含语言信息性的视觉表示,因此它有效地充当了一个信息 bottleneck,将最有用的信息提供给 LLM,同时去除不相关的视觉信息,减轻了 LLM 学习视觉语言对齐的负担,从而减轻了灾难性遗忘问题
  • 实验两种类型的LLM:基于解码器的LLM和基于编码器-解码器的LLMs
    • 对于基于解码的LLM,对语言建模损失进行预训练,其中冻结的LLM的任务是生成基于Q-Former视觉表示的文本
    • 对于基于编码器-解码器的LLM,使用前缀语言建模损失进行预训练,将文本分成两部分。前缀文本与视觉表示连接,作为LLM编码器的输入。后缀文本用作LLM解码器编码器的生成目标

模型训练

  • pretrain 数据和 BLIP 一样
    • 总共 129M 图片,来源于
    • COCO
    • Visual Genome
    • CC3M
    • CC12M
    • SBU
    • LAION400M (115M图片)
    • 使用 CapFilt 方法为网络图片合成 caption,也即基于 BLIPlarge 为每张图生成 10 个 captions。基于 CLIP ViT-L/14 模型产生的图像文本相似性,将合成 caption 与原始网络 caption 一起排序。保持每个图像的前两个 caption 作为训练数据,并在每个预训练步骤中随机抽取一个 caption
  • Pre-trained image encoder and LLM
    • vision transformer:将最后一层删除,使用倒数第二层特征
      • ViT-L/14 from CLIP
      • ViT-G/14 from EVA-CLIP
    • frozen language model
      • decoder-based LLMs: unsupervised-trained OPT
      • encoder-decoder-based LLMs:instruction-trained FlanT5
  • Pre-training settings
    • 一阶段训练 250k steps,二阶段训练 80k steps
    • 第一阶段对ViT-L/ViT-G使用2320/1680的 batchsize,在第二阶段对OPT/FlanT5使用1920/1520的 batchsize
    • 在预训练期间,将冻结的ViTs和LLM参数转换为FP16,但FlanT5除外,使用BFloat16。与 32 bit 模型相比没有精度损失
    • 使用一台16-A100(40G)机器,最大型号ViT-G和FlanT5 XXL第一阶段需要不到6天,第二阶段需要不超过3天

实验结果

  • 在不同任务上和其他 SOTA 方法对比,开源看起来也是很大优势
    在这里插入图片描述

Instructed Zero-shot Image-to-Text Generation

  • BLIP2 支持通过指令控制图像到文本的生成,只需在视觉提示后附加文本提示作为LLM的输入。下图展示了各种各样的 zero-shot 图像到文本生成功能的示例,包括视觉知识推理、视觉注释推理、视觉对话、个性化图像到文本生成
    在这里插入图片描述
    在这里插入图片描述

Zero-shot VQA

  • 测试方法:
    • 对于 OPT 模型,prompt 为 “Question: {} Answer:”;对于 FlanT5 模型,prompt 为 “Question: {} Short answer:”
    • 还将长度惩罚设置为-1,这鼓励更短的答案与人类注释更一致
  • BLIP2 在 VQAv2 和 GQA 上取得 SOTA 结果,在 OK-VQA 上差于 Flamingo,原因可能是 OK-VQA 更关注开放世界知识,而不是视觉理解,Flamingo80B 中的 70B Chinchilla 语言模型拥有比11B FlanT5XXL 更多的知识。更强的图像编码器或更强的LLM都会带来更好的性能
    在这里插入图片描述

Vision-Language Representation Learning 的有效性

  • 没有一阶段训练明显精度更低,同时 OPT 遭受灾难性遗忘问题,随着训练的进行,性能急剧下降在这里插入图片描述

Image Captioning finetune 实验

在这里插入图片描述

VQA finetune 实验

在这里插入图片描述

  • finetune 实验配置

    • 微调 Q-Former 和图像编码器的参数,同时保持LLM冻结
    • 为了提取与问题更相关的图像特征,Q-Former 以 question 为条件。具体而言,问题 token 被作为 Q-Former 的输入,并通过 self-attention 与 query 交互,这可以引导 Q-Former crossattention 层关注提供更多信息的图像区域
    • 基于 VQAv2 和 Visual Genome 的数据进行 finetune
  • finetune 后精度明显提升,达到 SOTA 结果 在这里插入图片描述

Image-Text Retrieval

  • 大部分指标达到 SOTA
    在这里插入图片描述

failure cases

在这里插入图片描述

Thoughts

  • 基于 Q-former 来作为视觉和文本模态的连接模块看起来很合理,有效降低训练的资源消耗
  • 文章的 Limitation 中提到,BLIP2 在 VQA 任务中的 in-context learning 效果一般,作者将缺乏上下文学习能力归因于文章使用的预训练数据集:每个样本只包含一个图像-文本对。导致 LLM 无法从中学习单个序列中多个图像文本对之间的相关性。
    • Flamingo 为了解决这个问题,使用一个 close-sourced 的交错图像和文本数据集(M3W),每个序列有多个图像-文本对

http://chatgpt.dhexx.cn/article/qP2uE157.shtml

相关文章

【论文速递】BLIP:Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and G

背景介绍 什么是VL Vision and language 将视觉与语言进行一定程度的结合,从而产生出一些新的应用与挑战 有哪些任务类型 字幕生成Image Captioning 图像检索Image Retrieval 视觉问答Visual Question Answering 图像中标出文字描述的目标Grounding Refer…

十分流行的自举法(Bootstrapping )为什么有效

来源:DeepHub IMBA 本文约1000字,建议阅读5分钟本文旨在以一种为外行介绍的方式展示自举法的“为什么”。 我们的项目并不总是有充足的数据。通常,我们只有一个样本数据集可供使用,由于缺乏资源我们无法执行重复实验(例如A/B测试)…

强化学习笔记-07 n-step Bootstrapping 多步TD时分学习

本文是博主对《Reinforcement Learning- An introduction》的阅读笔记,不涉及内容的翻译,主要为个人的理解和思考。 上一节介绍了TD算法,其采用了Bootstrapping方法,当前过去的预估以及即期收益来更新累积收益函数: 前…

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Genera

Paper name BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation Paper Reading Note URL: https://arxiv.org/abs/2201.12086 TL;DR ICML 2022 文章,提出了BLIP,一种新的 Vision-Language…

2022: BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and

摘要 大多现有的视觉语言预训练好的模型只善于基于理解的任务或基于生成的任务,而且,性能的提高很大程度上是通过扩大来自web上收集的有噪声的图像-文本对的数据集,这是一个次优的监督来源。本文,提出BLIP,一种新的VLP…

同态加密:以CKKS为例的Bootstrapping操作介绍(不定期更新)

同态加密的Bootstrapping操作最早由Gentry在他的博士论文里提出,是实现分级同态加密到全同态加密之间转换的关键步骤。目前所有的bootstrapping工作都是基于Gentry的这个想法,未有出其右者。 这篇博客打算讲一下Bootstrapping的原理,同时看一…

TFHE拓展:Programmable Bootstrapping

Improved Programmable Bootstrapping with Larger Precision and Efficient Arithmetic Circuits for TFHE(对TFHE优化的可编程同态刷新的方案,拥有高精度和高效率) 索引 Improved Programmable Bootstrapping with Larger Precision and Ef…

十分流行自举法(Bootstrapping )为什么有效

我们的项目并不总是有充足的数据。通常,我们只有一个样本数据集可供使用,由于缺乏资源我们无法执行重复实验(例如A/B测试)。 幸运的是,我们有重采样的方法来充分利用我们所拥有的数据。自举法(Bootstrapping)是一种重…

《Hand Keypoint Detection in Single Images using Multiview Bootstrapping》及模型推理

论文:《Hand Keypoint Detection in Single Images using Multiview Bootstrapping》2017 链接:1704.07809.pdf (arxiv.org) code:Hand Keypoint Detection using Deep Learning and OpenCV | LearnOpenCV 论文略读 1.Introduction In th…

bootstraping

之前一位同学问及bootstrap,由此我查阅了几篇文献,初步知晓个皮毛:它是一种非参检验方法,利用重复抽样理论,来减少偏差、控制方差、得到有效置信区间等统计方法。国内bootstrap研究比较少,这里摘录了国外研…

CKKS自举笔记(CKKS Bootstrapping)

文章目录 CKKS Bootstrapping流程流程的框架如何做同态取模操作直接泰勒展开(naive idea)采用二倍角公式来拟合(欧密2018) 如何做同态编码或解码CKKS的编码和解码基础知识(明文下面怎么做)同态的旋转、共轭…

解决:‘config.status: error: Something went wrong bootstrapping makefile fragments......’问题

解决:‘config.status: error: Something went wrong bootstrapping makefile fragments......’问题 一、问题二、解决方法 一、问题 首先我们来看安装sqlite时报的这个错误: config.status: error: in ‘/home/dengyonghao/Downloads/sqlite-autoconf…

Bootstrapping的意义

一、原理解释 Bootstrapping 方法是种集成方法,通俗解释就是盲人摸象,很多盲人摸一头象,各自摸到的都不一样,但是都比较片面,当他们在一起讨论时,就得到了象的整体。 Bootstrap的过程,类似于重…

Bootstrapping method

Bootsrapping指的就是利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布的新样本。 统计中我们常常需要做参数估计,具体问题可以描述为:给定一系列数据 假设它们是从分布F中采样得到的,参数估计就是希望估计分…

【强化学习】n步Bootstrapping

目录 n步TD 预测 n-step Sarsa n步off - policy学习 Per-reward Off - policy 方法 n步Tree Backup算法 BootStrapping原是推论统计学里的概念。所谓推论统计学,就是根据样本统计量来推算总体的统计量。n部方法通常会被用作eligibility trace思想的一个例子&am…

Bootstrapping

Bootstrapping从字面意思翻译是拔靴法,从其内容翻译又叫自助法,是一种再抽样的统计方法。自助法的名称来源于英文短语“to pull oneself up by one’s bootstrap”,表示完成一件不能自然完成的事情。1977年美国Standford大学统计学教授Efron提…

Bootstrapping?

一、什么是Bootstrapping? 中文翻译也叫“自助法(自举法)”。 类似于给鞋子穿鞋带,把鞋带穿进去在穿出来再穿进去。 举个例子,一个总体有五十人,没有办法直接测量总体的情况,我们就从总体中抽取一些样本,用…

华为机试题整理

1、整数反转后求和 #include <iostream> using namespace std; int reversenum(int x) {int a0;while (x>0) {aa*10x%10;x/10;}return a; } int reverseAdd(int a,int b) {if(a<1||a>70000||b<1||b>70000){return -1;}int num1reversenum(a);int num2re…

2021.华为机试某题

问题描述&#xff1a; 有M*N的节点矩阵&#xff0c;每个节点可以向8个方向&#xff08;上、下、左、右及四个斜线方向&#xff09;转发数据包&#xff0c;每个节点转发时会消耗固定时延&#xff0c;连续两个相同时延可以减少一个时延值&#xff08;即当有K个相同时延的节点连续…

牛客网华为机试题训练汇总(JavaScript)

牛客网华为机试题训练&#xff08;JavaScript Node环境&#xff09; 文章目录 牛客网华为机试题训练&#xff08;JavaScript Node环境&#xff09;前言一、题目1. HJ11 数字颠倒2. HJ22 汽水瓶3. HJ53 杨辉三角的变形4. HJ2 计算某字母出现次数5. HJ8 合并表记录6. HJ17 坐标移…