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

2023-11-12

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),每个序列有多个图像-文本对
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Mode 的相关文章

随机推荐

  • 鸿蒙系统是基于linux开发的吗

    鸿蒙系统不是基于linux开发的 而是基于微内核开发的 鸿蒙系统是一款基于微内核面向全场景的分布式操作系统 而Linux是一个单内核结构 同时又吸收了微内核的优点 避免了微内核设计上的缺陷 让一切都运行在内核态 直接调用函数 无需消息传递
  • sql-labs 5-22关(基础关)

    sql lab 第五关 这关是报错注入类型 也可以用盲注 1 判断注入类型 判断闭合方式 1 有回显 1 and 1 1 有回显 1 and 1 2 有回显 1 and 1 2 报错 猜测闭合为单引号 加上注释符 id 1 and 1 1
  • 基于QTreeView和QFileSystemModel,如何做到展开/收缩文件夹分支时改变图标?

    继承QFileSystemModel 添加变量set 重写data和setData函数即可 头文件 public QVariant data const QModelIndex index int role const bool setDa
  • 可重入锁和不可重入锁

    可重入锁 又名递归锁 是指在同一个线程中的在外层方法获取锁的时候 再进入该线程的内层方法会自动获取锁 前提锁对象得是同一个对象或者class 不会应为之前已经获取过还没释放而阻塞 java中ReentrantLock和synchronize
  • Python 爬虫天天基金数据——基金清单

    基金数据目录 1 场外基金清单 列表 2 基金净值 建议直接调用相关API接口 tushare and AKshare 3 业绩排行 4 基金评级 5 基金经理 6 基金公司 1 1关于 场外基金清单 我们可以通过天天基金网或者相关API接
  • windows下创建进程,CreateProcess()详解及用法

    windows下想要创建一个子进程不如linux的fork函数来得方便 通过CreateProcess函数创建一个新的进程 函数的定义如下 cpp view plain copy BOOL CreateProcess LPCTSTR lpA
  • JS执行机制、同步和异步、宏观任务和微观任务

    1 JS 是单线程 JavaScript 语言的一大特点就是单线程 也就是说 同一个时间只能做一件事 这是因为 Javascript 这门脚本语言诞生的使命所致 JavaScript 是为处理页面中用户的交互 以及操作 DOM 而诞生的 比
  • C# 映射递归对象

    首先映射对象很简单 同名的可以使用表达树进行一个深拷贝
  • 算法导论之单源最短路径(Bellman-Ford和Dijkstra)

    Bellman Ford 一 Bellman Ford算法的思想 Bellman Ford算法 以下简称BF算法 用于解决边的权重可以为负值的单源最短路径 它通过对边进行松弛操作逐渐降低从源结点s到各结点v的最短路径估计值v d 直到该估计
  • BT问题调试 -- HFP(AT指令)

    HFP基本知识 HFP的两个角色 AG和HF HFP AG角色发起连接请求 HFP HF角色发起连接请求 针对HFP的注意事项 必须先有SLC的建立过程 该过程可以由HF AG的任何一方发起 AT COPS用来查询运营商网络名称 AG的回应
  • 接口管理这下总会了吧?

    接口管理这下总会了吧 文章目录 接口管理这下总会了吧 使用方式 引入依赖 添加 Swagger 注解 配置扫描规则 application yaml 效果 实现原理 小结 利用 Spring Boot 快速集成 Swagger 实现 Swa
  • Massve MIMO波束成形

    转载https blog csdn net qq 23947237 article details 88395034 当 Massive MIMO 系统在基站端配置大量天线的时候 不仅提高系统硬件的复杂度 还加大了成本消耗 对于这点学术工作
  • sequence中常用的宏方法

    uvm do系列宏 宏 功能 uvm do 产生包 随机化 发包 uvm do on 在 uvm do基础上 指定用哪个sequenser发包 uvm do pri 在 uvm do基础上 给产生的transaction包指定优先级 uvm
  • 关于解决web工程在eclipse内置浏览器能显示图片,在外置浏览器不能显示的问题。

    今天下午在学习前端的一些基础 到了把图片导入网页的章节 我发现在eclipse内置的浏览器能够完美的显示 只要你把路径写好了就行 如 img alt 显示错误 src C Users Administrator eclipse worksp
  • Docker部署中间件总结(MySQL、Redis、ElasticSearch、XXL-JOB、Sentinel等...)

    文章目录 1 安装Docker 1 1 卸载旧版Docker 1 2 安装Docker前置准备 1 3 安装Docker 1 4 启动Docker服务 1 5 设置Docker开机自启动 1 6 配置Docker阿里云镜像加速 2 安装My
  • 美国的ACH支付体系

    美国支付体系研究 ACH支付网络 ACH是Automatic Clearing House的缩写 是美国支付体系中最主要的支付网络之一 是一个批量处理 存储和转发的电子支付系统 在美国支付体系中占据重要地位 ACH支付网络 以下简称ACH
  • 高级计算机网络(习题一加解析)

    个性不要个体 独立不要孤立 自由不要自私 浪漫不要散漫 路漫漫其修远兮 吾将上下而求索 屈原 离骚 文章介绍 这是计算机网络老师布置的课后作业 参考文章 习题二 习题三 习题四 持续更新 题目都很新型 网上很难能够找出所有答案 今天分享出来
  • C++ 基础编程 路灯问题

    问题描述 V先生有一天工作到很晚 回家的时候要穿过一条长l的笔直的街道 这条街道上有n个路灯 假设这条街起点为0 终点为l 第i个路灯坐标为ai 路灯发光能力以正数d来衡量 其中d表示路灯能够照亮的街道上的点与路灯的最远距离 所有路灯发光能
  • equals与==的区别

    1 equals 函数 只是用来比较两个变量中的值是否一致 它不管类型等要素 例s1 ssss s2 ssss s1 equals s2 为ture 2 是比较两个变量的地址是否一样 类型不一样地址也不一样 就算类型一样 储存的空间不一样的
  • BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Mode

    Paper name BLIP 2 Bootstrapping Language Image Pre training with Frozen Image Encoders and Large Language Models Paper R