BLIP论文笔记

2023-11-20

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


Unified Vision-Language Understanding and Generation)

Abstract

Vision-Language Pre-training(VLP)已经提高了许多vision-language tasks的性能,但是:

  • 现存的大多数pre-trained models仅在understanding-based tasks或generation-based tasks表现较好,很少有在二者上都能取得良好性能的model
  • 性能的改进大多是通过扩大dataset实现的,而从网上搜集的image-text pairs是noisy的

本文提出了BLIP:

  • 一个新的VLP框架
  • 能灵活地解决understanding-based tasks和generation-based tasks
  • 通过一个captioner生成synthetic captions和一个filter去除noisy的文字信息,处理网上noisy的数据,最终生成bootstrapping dataset

下游任务:

  • image-text retrieval(+2.7% in average recall@1)
  • image captioning(+2.8% in CIDEr)
  • VQA (+1.6% in VQA score)

BLIP可以以zero-shot的方式直接转移到video-language tasks上


1.Introduction

现有VLP的两个局限性:

  • 模型角度:使用的大部分是encoder-based model或encoder-decoder model。但encoder-based model难以直接转化到文本生成的任务上(如image captioning);encoder-decoder model还不能用于image-text retrieval tasks
  • 数据角度:大多SOTA的方法都是从网上搜集的image-text pairs,尽管能以扩大数据集的方式提升性能,但这些noisy的数据对vision-language learning来说不是最好的

BILP的两个贡献:

  • Multimodal mixture of Encoder-decoder(MED):MED可以作为unimodal encoder或image-grounded text encoder或image-grounded text decoder。与三个vision-language objectives联合训练:image-text contrastive learning, image-text matching, 和 image-conditioned language modeling
  • Captioning and Filtering (CapFilt):一种从noisy image-text pairs中进行bootstrapping的方法。将pre-trained MED分为两部分进行fintune:一个captioner从网上的图像中生成synthetic captions;一个filter用于从原始的数据和synthetic texts中去除noisy captions

在这里插入图片描述


2.Method

使用visual transformer作为image encoder,将输入的图像划分为patches并且将他们编码为一系列embeddings,并用额外的[CLS] token来表示图像的全局特征。并且对于视觉特征提取来说,使用visual transformer比使用pre-trained object detectors进行更易于计算

在这里插入图片描述

2.1 MED

  1. Unimodal encoder:分别对图像和文本进行编码。文本编码器与BERT相同,将[CLS] token加到输入文本的开头来总结句子
  2. Image-grounded text encoder:通过在text encoder的每个self-attention(SA) layer和feed forward network(FFN) layer之间插入一个额外的cross-attention(CA) layer来注入视觉信息。文本中附加的[Encode] token中输出的embedding用于image-text pair的多模态表示信息
  3. Image-grounded text decoder:将Image-grounded text encoder中的bi-directional self-attention layers替换为causal self-attention layers。[Decode] token用于表示序列的开始,end-of-sequence token表示结束

2.2 Pre-trained Objectives

在pre-train时用了三个objectives,包括两个understanding-based objectives和一个generation-based objective。对每个image-text pair只需在计算量较大的visual transformer上向前传播一次,并在text transformer上向前传播三次,用不同的函数计算下列的三个损失函数

  1. Image-Text Contrastive Loss(ITC):用于unimodal encoder。通过鼓励positive image-text pairs对相似的表示,而negative pairs相反,来对齐visual transformer和text transformer的特征空间。引入momentum encoder来产生特征,并从其产生的soft labels作为训练目标
    ALBEF相关论文
  2. Image-Text Matching Loss(ITM):用于image-grounded text encoder。旨在学习image-text multimodal representation。用ITM头来预测image-text pairs 是正的还是负的
  3. Language Modeling Loss(LM):用于image-grounded text decoder。旨在生成给定图像的文本描述。与广泛用于VLP的MLM loss相比,LM有能将视觉信息转换为连贯字幕的泛化能力
  • 为了预训练更高效,text encoder和text decoder共享除 SA 层之外的所有参数

2.3 CapFilt

在这里插入图片描述

  • 数据集:COCO
  • (Iw,Tw)为web image-text pair;(Ih,Th)为人工标注的image-text pair
  • 包括两个模块:给web图片生成caption的captioner、去除noisy image-text pairs的filter。二者都是从相同的pre-trained MED model初始化的,并在COCO数据集上单独finetun
  • captioner:是一个image-grounded text decoder,用LM进行finetun,以解码给定图像的文本。对于给定的web图像Iw,captioner生成synthetic captions Ts,每张图片都有对应的caption
  • filter:是一个image-grounded text encoder,用ITC和ITM进行finetun,以判断图像和文本是否匹配。如果ITM头预测文字与图像不匹配,则认为该文字noisy,并去除。最后将过滤后的image-text pairs与人工标注的pairs合并为一个新的数据集,并用于pre-train一个新的model

在这里插入图片描述
在这里插入图片描述


3.Experiments

数据集:

  • 两个人工标注的数据集:COCO, Visual Genome
  • 三个web数据集:Conceptual Captions, Conceptual 12M, SBU captions
  • 一个额外的web数据集:LAION(包括115M的有更多noisy文本的图像)

在这里插入图片描述
caption和filter的影响

在这里插入图片描述
beam search和nucleus sampling对生成synthetic caption的影响

在这里插入图片描述
参数共享策略的影响

在这里插入图片描述
caption与filter之间共享参数的影响

在这里插入图片描述
与SOTA的image-text retrieval方法的比较

在这里插入图片描述

在这里插入图片描述
与SOTA的image caption方法的比较

在这里插入图片描述

在这里插入图片描述
与SOTA的VQA和NLVR的比较

在这里插入图片描述
与SOTA的VisDial的比较

在这里插入图片描述
与SOTA的text-to-video retrieval方法的比较

在这里插入图片描述
与SOTA的video question answering的比较


4.Conclusion

提高BLIP性能的潜在方法:

  1. 进行多轮数据集bootstrapping
  2. 为每张图片生成多个synthetic caption以扩大语料库
  3. 训练多个不同的captioner和filter进行model ensemble

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BLIP论文笔记 的相关文章

随机推荐

  • 如何终止java线程

    终止线程的三种方法 有三种方法可以使终止线程 1 使用退出标志 使线程正常退出 也就是当run方法完成后线程终止 2 使用stop方法强行终止线程 这个方法不推荐使用 因为stop和suspend resume一样 也可能发生不可预料的结果
  • n行Python代码系列:两行代码去除抖音快手短视频尾部Logo

    老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知识 带来了阅读量 撩动了老猿的心 决定跟风一把 推
  • 基于Springboot+Vue图书商城系统

    目录 1 系统架构 2 系统介绍 3 运行环境 4 系统演示 5 前端搭建 6 功能展示 7 代码展示 1 系统架构 后台 SpringBoot Mybatis plus Mybatis Hutool工具包 lombok插件 前台 Vue
  • UE4 制作导出Content目录下某个文件夹内所有模型的六视图并将模型资源文件复制到指定文件夹的插件

    一 新建空白插件 在Bulid cs内加入两个模块 EditorSubsystem UnrealEd PublicDependencyModuleNames AddRange new string Core EditorSubsystem
  • 用vue写一个学校官网

    首先 你需要准备一个文本编辑器 如 Sublime Text VSCode 等 和浏览器 然后 你需要安装 Vue 你可以通过使用 npm 命令来安装 npminstall g vue
  • Ubuntu Server 22.04 安装桌面

    Ubuntu Server 22 04 安装桌面 sudo apt get update sudo apt get upgrade apt get install y ubuntu desktop 如果你不想安装一些附加的程序 可用以下命令
  • Tomcat startup.bat Using CATALINA_OPTS: ““,启动闪退

    Tomcat 控制台打开startup bat 发现Tomcat终端窗口闪退打不开 在startup bat最后加一个pause 会弹出Using CATALINA OPTS 重新设置了JAVA HOME 没用 在startup bat最前
  • python对csv文档进行读,写,追加操作(csv,pandas)

    python处理csv文档的两种方法 csv pandas python处理csv一般采用两种方法一种是import pandas 另一种是 import csv 本文将介绍这两种方法对csv进行读 写 追加的操作 1 import pan
  • mysql unique key使用_mysql unique key在查询中的使用与相关问题

    1 建表语句 CREATE TABLE employees emp no int 11 NOT NULL birth date date NOT NULL first name varchar 14 NOT NULL last name v
  • WordPress多站点伪静态的设置方式(WP站群必备)

    apache的设置方式 正常参考wordpress自带的设置方式即可 本文只介绍Ngnix及IIS下Wordpress多站点伪静态设置方式 Ngnix的wordpress多站点伪静态设置方式 wordpress固定链接设置 try file
  • Arduino for ESP8266&ESP32适用库ESPAsyncWebServer:快速入门

    文章目录 目的 特征 安装 快速体验 注意事项 总结 目的 Arduino for ESP8266 和 Arduino for ESP32 中默认就有WebServer 不过这些WebServer都是同步的 不支持同时处理多个连接 这在很多
  • AngularJs单元测试

    这篇文章主要介绍了angularJS中的单元测试实例 本文主要介绍利用Karma和Jasmine来进行ng模块的单元测试 并用Istanbul 来生成代码覆盖率测试报告 需要的朋友们可以参考下 以下可全都是干货哦 当ng项目越来越大的时候
  • 如何在Insert插入操作之后,获取自增主键的ID值

    背景说明 MyBatis中 在大多数情况下 我们向数据库中插入一条数据之后 并不需要关注这条新插入数据的主键ID 我们也知道 正常在DAO中的插入语句虽然可以返回一个int类型的值 但是这个值表示的是插入影响的行数 而不是新插入数据的主键I
  • Unity3D如何修改Button显示的文字以及深入了解Button组件

    在创建了一个Button后 结构如图 先仔细观察一下Button的Inspector视图 发现其中竟然有一个叫Button的脚本组件 新建脚本 代码如下 并将该脚本绑定给Canvas组件 using UnityEngine UI using
  • winform记录

    SpeechSynthesizer 下边代码多次调用 会导致内存溢出outofmemory SpeechSynthesizer 需要改为全局静态 private void button Click object sender EventAr
  • 【MySQL笔记】MySQL8新特性 — 计算列

    什么叫计算列呢 简单来说就是某一列的值是通过别的列计算得来的 例如 a 列值为 1 b 列值为 2 c 列不需要手动插入 定义 a b 的结果为 c 的值 那么 c 就是计算列 是通过别的列计算得来的 在 MySQL 8 中 CREATE
  • Pytorch Torch.utils.data.Sampler

    对于 可迭代样式的数据集 数据加载顺序完全由用户定义的可迭代样式控制 这样可以更轻松地实现块读取和动态批处理大小 例如 通过每次生成一个批处理的样本 为了从数据集中读取数据 pytorch提供了Sampler基类与多个子类实现不同方式的数据
  • 天刀服务器维护4月19,5月19日服务器例行维护公告

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 亲爱的玩家 青龙乱舞区 大地飞鹰区 沧海云帆区 把酒邀月区全部服务器将在5月19日6 00 10 00停机维护更新 维护完成后上述各服务器客户端版本更新至2 1 47 18 由于机房网络波动 云
  • 【数字IC】从零开始的Verilog SPI设计

    从零开始的Verilog SPI协议设计 一 写在前面 1 1 协议标准 1 2 数字IC组件代码 1 3 设计要求 1 4 其他协议解读 1 4 1 UART协议 1 4 2 SPI协议 1 4 3 I2C协议 1 4 4 AXI协议 二
  • BLIP论文笔记

    BLIP Bootstrapping Language Image Pre training for Unified Vision Language Understanding and Generation Abstract 1 Intro