BLIP 小结

news2024/12/28 18:33:01

论文:Bootstrapping Language-Image Pre-training (BLIP)

代码:https://github.com/salesforce/BLIP

1 motivation

目前多模态模型在图片理解类任务、生成类任务表现卓越主要源于Scale up model and scale up dataset(更大的模型,更多的数据)。但是VLP(vision-language pre-training)数据集大多是网络爬取而来(称之为web datasets),里面的caption包含很多噪声,并不是一个理想的监督来源。BLIP这篇文章提出一种boostrapping caption的方案来“提纯”带噪声web datasets,从而进一步提升多模态模型的能力。

概括来说:这篇文章设计了一种去噪方案,来提纯web datasets,以此带来精度提升。

2 method

2.1 模型架构

BLIP多模态架构为双塔架构。论文中用3个vision language pretraining(VLP) task来激发模型的多模态能力。

在这里插入图片描述

2.2 多模态预训练任务

2.2.1 Image-Text Contrastive Loss (ITC)

和CLIP训练任务一致。核心思想是:给定图片-文本向量对 { ( f e a i m g ( 1 ) , f e a t e x t ( 1 ) ) , ( f e a i m g ( 2 ) , f e a t e x t ( 2 ) ) , ⋯   , ( f e a i m g ( N ) , f e a t e x t ( N ) ) } \{(\mathrm{fea}_{\mathrm{img}}^{(1)}, \mathrm{fea}_{\mathrm{text}}^{(1)}), (\mathrm{fea}_{\mathrm{img}}^{(2)}, \mathrm{fea}_{\mathrm{text}}^{(2)}), \cdots, (\mathrm{fea}_{\mathrm{img}}^{(N)}, \mathrm{fea}_{\mathrm{text}}^{(N)}) \} {(feaimg(1),featext(1)),(feaimg(2),featext(2)),,(feaimg(N),featext(N))}.其训练目标为,同pair的 ( f e a i m g ( i ) , f e a t e x t ( i ) ) (\mathrm{fea}_{\mathrm{img}}^{(i)}, \mathrm{fea}_{\mathrm{text}}^{(i)}) (feaimg(i),featext(i))相似度越接近越好,非同pair的 ( f e a i m g ( i ) , f e a t e x t ( j ) , i ≠ j ) (\mathrm{fea}_{\mathrm{img}}^{(i)}, \mathrm{fea}_{\mathrm{text}}^{(j)}, i \neq j) (feaimg(i),featext(j),i=j)相似度越远越好,形如
L o s s = 1 2 ( ∑ i = 0 N C E ( exp ⁡ ( f e a i m g ( i ) ⋅ f e a t e x t ( i ) ) ∑ j = 0 N exp ⁡ ( f e a i m g ( i ) ⋅ f e a t e x t ( j ) ) ) + ∑ j = 0 N C E ( exp ⁡ ( f e a i m g ( j ) ⋅ f e a t e x t ( j ) ) ∑ i = 0 N exp ⁡ ( f e a i m g ( j ) ⋅ f e a t e x t ( i ) ) ) ) Loss = \frac{1}{2} \left(\sum_{i=0}^{N} CE(\frac { \exp ( \mathrm{fea}^{(i)}_{\mathrm{img}} \cdot \mathrm{fea}^{(i)}_{\mathrm{text}})} {\sum_{j=0}^{N}{\exp( \mathrm{fea}^{(i)}_{\mathrm{img}} \cdot \mathrm{fea}^{(j)}_{\mathrm{text}})} } ) + \sum_{j=0}^{N} CE(\frac { \exp ( \mathrm{fea}^{(j)}_{\mathrm{img}} \cdot \mathrm{fea}^{(j)}_{\mathrm{text}})} {\sum_{i=0}^{N}{\exp( \mathrm{fea}^{(j)}_{\mathrm{img}} \cdot \mathrm{fea}^{(i)}_{\mathrm{text}})} } ) \right) Loss=21(i=0NCE(j=0Nexp(feaimg(i)featext(j))exp(feaimg(i)featext(i)))+j=0NCE(i=0Nexp(feaimg(j)featext(i))exp(feaimg(j)featext(j))))
伪代码如下(from CLIP paper)

在这里插入图片描述

有了上面的背景知识,ITC的步骤就很好理解了:

STEP1: 图片经过image encoder得到image embedding R B × 3 × H × W ⟶ E n c o d e r i m g R B × L i m g × d \mathbb{R}^{B\times 3 \times H \times W} \stackrel{\mathrm{Encoder}_{\mathrm{img}}} \longrightarrow \mathbb{R}^ {B\times L_{\mathrm{img}} \times d} RB×3×H×WEncoderimgRB×Limg×d

STEP2: 文本经过text encoder得到text embedding R B × L × d ′ ⟶ E n c o d e r t e x t R B × L t e x t × d \mathbb{R}^{B\times L \times d'} \stackrel{\mathrm{Encoder}_{\mathrm{text}}} \longrightarrow \mathbb{R}^ {B\times L_{\mathrm{text}} \times d} RB×L×dEncodertextRB×Ltext×d

STEP3: 分别拿到image embedding中[CLS]token对应的embedding f e a i m g ∈ R B × d \mathrm{fea}_{\mathrm{img}} \in \mathbb{R} ^{B \times d} feaimgRB×d, 与文本text embedding中[CLS]token对应的embedding f e a t e x t ∈ R B × d \mathrm{fea}_{\mathrm{text}} \in \mathbb{R} ^{B \times d} featextRB×d.

STEP4: f e a i m g \mathrm{fea}_{\mathrm{img}} feaimg f e a t e x t \mathrm{fea}_{\mathrm{text}} featext投影到同一维度

STEP5: 同pair的 ( f e a i m g ( i ) , f e a t e x t ( i ) ) (\mathrm{fea}_{\mathrm{img}}^{(i)}, \mathrm{fea}_{\mathrm{text}}^{(i)}) (feaimg(i),featext(i))相似度约接近越好,非同pair的 ( f e a i m g ( i ) , f e a t e x t ( j ) , i ≠ j ) (\mathrm{fea}_{\mathrm{img}}^{(i)}, \mathrm{fea}_{\mathrm{text}}^{(j)}, i \neq j) (feaimg(i),featext(j),i=j)相似度越远越好。
在这里插入图片描述

2.2.2 Image-text matching (ITM)

ITM也是VLP的常用任务,它的实现形式有很多,核心思想是:给定图片-文本向量对 { ( f e a i m g ( 1 ) , f e a t e x t ( 1 ) ) , ( f e a i m g ( 2 ) , f e a t e x t ( 2 ) ) , ⋯   , ( f e a i m g ( N ) , f e a t e x t ( N ) ) } \{(\mathrm{fea}_{\mathrm{img}}^{(1)}, \mathrm{fea}_{\mathrm{text}}^{(1)}), (\mathrm{fea}_{\mathrm{img}}^{(2)}, \mathrm{fea}_{\mathrm{text}}^{(2)}), \cdots, (\mathrm{fea}_{\mathrm{img}}^{(N)}, \mathrm{fea}_{\mathrm{text}}^{(N)}) \} {(feaimg(1),featext(1)),(feaimg(2),featext(2)),,(feaimg(N),featext(N))}.其训练目标为预测 ( f e a i m g ( i ) , f e a t e x t ( j ) ) (\mathrm{fea}_{\mathrm{img}}^{(i)}, \mathrm{fea}_{\mathrm{text}}^{(j)}) (feaimg(i),featext(j))是否来自同一个pair。是为1,否则为0。形如:
L o s s = ∑ i ∑ j { C E ( L o g i t ( f e a i m g ( j ) , f e a t e x t ( i ) ) , 1 ) i f   i = j C E ( L o g i t ( f e a i m g ( j ) , f e a t e x t ( i ) ) , 0 ) i f   i ≠ j \mathrm{Loss} = \sum_{i} \sum_{j} \begin{cases} \mathrm{CE}(\mathrm{Logit}_{} (\mathrm{fea}^{(j)}_{\mathrm{img}}, \mathrm{fea}^{(i)}_{\mathrm{text}}), 1) \quad \mathrm{if \, i = j} \\ \mathrm{CE}(\mathrm{Logit}_{} (\mathrm{fea}^{(j)}_{\mathrm{img}}, \mathrm{fea}^{(i)}_{\mathrm{text}}), 0) \quad \mathrm{if \, i \neq j} \end{cases} Loss=ij{CE(Logit(feaimg(j),featext(i)),1)ifi=jCE(Logit(feaimg(j),featext(i)),0)ifi=j
下面来看具体是如何实现的。

STEP1: 图片经过image encoder得到 image embedding R B × 3 × H × W ⟶ E n c o d e r i m g R B × L i m g × d \mathbb{R}^{B\times 3 \times H \times W} \stackrel{\mathrm{Encoder}_{\mathrm{img}}} \longrightarrow \mathbb{R}^ {B\times L_{\mathrm{img}} \times d} RB×3×H×WEncoderimgRB×Limg×d

STEP2: 文本经过text encoder得到text embedding R B × L × d ′ ⟶ E n c o d e r t e x t R B × L t e x t × d \mathbb{R}^{B\times L \times d'} \stackrel{\mathrm{Encoder}_{\mathrm{text}}} \longrightarrow \mathbb{R}^ {B\times L_{\mathrm{text}} \times d} RB×L×dEncodertextRB×Ltext×d,和ITC有所区别的是,此处将image embedding 作为encoder_hidden_states也送入到text encoder(image embedding与text embedding在cross-attent层进行特征交互,image se quence embedding作为key,value。text embedding作为query)。因此最后输出的text embedding也同时蕴含了image sequence embedding的信息。作者将此时的text encoder称为 image-ground text encoder

image embedding与text embedding在cross-attention的特征交互实现可见transformers库BertSelfAttention函数

STEP3: 取文本text embedding中[CLS]token对应的embedding f e a t e x t ∈ R B × d \mathrm{fea}_{\mathrm{text}} \in \mathbb{R} ^{B \times d} featextRB×d

  • 当送入image sequence embedding与text是pair时, f e a t e x t \mathrm{fea}_{\mathrm{text}} featext的类别标签为1
  • 当送入image sequence embedding与text非pair时, f e a t e x t \mathrm{fea}_{\mathrm{text}} featext的类别标签为0

随后用cross-entropy计算损失。

训练完成后:得到 image-ground text encoder

在这里插入图片描述

2.2.3 Language modeling loss(LM)

LM时GPT系列的预训练任务。简单来说就是根据前面的词来预测下一个词。与NLP的LM有所不同的是VLP同时将image-embedding引入到上下文信息。

STEP1: 图片输入到image encoder中的得到 image embedding( f e a i m g \mathrm{fea}_{\mathrm{img}} feaimg)。 R B × 3 × H × W ⟶ E n c o d e r i m g R B × L i m g × d \mathbb{R}^{B\times 3 \times H \times W} \stackrel{\mathrm{Encoder}_{\mathrm{img}}} \longrightarrow \mathbb{R}^ {B\times L_{\mathrm{img}} \times d} RB×3×H×WEncoderimgRB×Limg×d

STEP2: 将 image embedding( f e a i m g \mathrm{fea}_{\mathrm{img}} feaimg)作为key,value送入到text-decoder的cross-attention中与text embedding进行特征交互。作者将此时的text-decoder称为image-ground text decoder

STEP3:最大化自回归序列的似然概率进行训练。训练完成后:得到 image-ground text decoder
∑ i = 1 L log ⁡ ( p ( y i ∣ y < i , f e a i m g ; Θ ) ) \sum_{i=1} ^ {L} \log (p(y_i|y_{<i}, \mathrm{fea}_{img}; \Theta)) i=1Llog(p(yiy<i,feaimg;Θ))
在这里插入图片描述

通过以上预训练任务:得到

  • image encoder
  • image-ground text encoder
  • image-ground text decoder

2.3 boostrapping caption

通过2.2节的预训练任务我们得到3个模型:1)image encoder;2)image-ground text encoder ;3) image-ground text decoder

下面来看如何结合上述上个模型来对web dataset进行“提纯”,主要步骤如下:

STEP1: 用人工标注的数据集 { ( I h , T h ) ∣ h = 1 , 2 , . . . } \{(I_h, T_h)|h=1,2, ...\} {(Ih,Th)h=1,2,...}对预训练模型image-ground text encoder与 image-ground text decoder 进行微调。 ( I h , T h ) (I_h, T_h) (Ih,Th)为图文对。

STEP2: 遍历web datasets { ( I w , T w ) ∣ w = 1 , 2... } \{(I_w, T_w)|w=1,2... \} {(Iw,Tw)w=1,2...}.进行下面操作

  • STEP2.1 通过 image-ground text decoder (论文称之为Captioner)预测 I w I_w Iw的caption T s T_s Ts。此时对于图片 I w I_w Iw有两个图文对 ( I w , T w ) (I_w, T_w) (Iw,Tw) ( I w , T s ) (I_w, T_s) (Iw,Ts)
  • STEP2.2 通过image-ground text encoder(论文称之为Filter)来判别图文对 ( I w , T w ) (I_w, T_w) (Iw,Tw) ( I w , T s ) (I_w, T_s) (Iw,Ts)是否matching。过滤不matching的图文对 ( I w , T w N o t   m a t c h i n g ) , ( I w , T s N o t   m a t c h i n g ) (I_w, T^{\mathrm{Not \, matching}}_w), (I_w, T^{\mathrm{Not \, matching}}_s) (Iw,TwNotmatching),(Iw,TsNotmatching)

STEP3: 汇总所有图文对 D = { ( I w , T w m a t c h ) + ( I w , T s m a t c h ) + ( I h , T h ) } D = \{(I_w, T_w^{\mathrm{match}})+(I_w, T_s^{\mathrm{match}}) + (I_h, T_h) \} D={(Iw,Twmatch)+(Iw,Tsmatch)+(Ih,Th)}

用提纯后的数据集用2.2的预训练任务重新训练。

在这里插入图片描述

3 result

从作者给出的实验来看,boostrapping caption不论在retrieval还是在caption任务上都能带来一定的提升。但当scale up dataset and scale up model后,boostrapping caption的提升就很有限了(在caption任务上尤为明显),如下表的最后一行。

在这里插入图片描述

BLIP只评估了在flickr30K上的zero-shot retrieval的能力,相比之前的SOTA在image-to-text retrieval的R@1上有2个点的提升,其它指标提升不大。其它对比结果见原论文。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

加速attention计算的工业标准:flash attention 1和2算法的原理及实现

transformers目前大火&#xff0c;但是对于长序列来说&#xff0c;计算很慢&#xff0c;而且很耗费显存。对于transformer中的self attention计算来说&#xff0c;在时间复杂度上&#xff0c;对于每个位置&#xff0c;模型需要计算它与所有其他位置的相关性&#xff0c;这样的计…

【Unity】万人同屏高级篇, BRG Jobs实战应用, 海量物体同屏

博文开发测试环境&#xff1a; Unity&#xff1a;Unity 2022.3.10f1&#xff0c;URP 14.0.8&#xff0c;Burst 1.8.8&#xff0c;Jobs 0.70.0-preview.7&#xff0c;热更HybridCLR 4.0.6PC&#xff1a;Win11&#xff0c;CPU i7-13700KF&#xff0c;GPU 3070 8G&#xff0c;RAM…

[SWPUCTF 2022 新生赛]善哉善哉题目解析

这一题结合的东西挺多的&#xff0c;但也不是说很难。 他先给了压缩包&#xff0c;正常压缩他没有密码卡你压缩出来是一张图片 打开看没什么提示&#xff0c;就按自己的思路走先查看属性&#xff0c;一般属性是最优先查看的&#xff0c;因为他在属性藏东西的地方不多&#xff…

网络安全(黑客)从零开始的自学指南(第二章)

第二章&#xff1a;黑客入门 2.1 什么是黑客 黑客是指具有高超计算机技术和网络知识的个人或组织&#xff0c;通过技术手段侵入他人的计算机系统或网络&#xff0c;获取非法利益或破坏目标系统的行为。黑客可以分为两类&#xff1a;道德黑客&#xff08;白帽黑客&#xff0…

接扫理解.exe文件的结构原理即运行过程

爱像时间&#xff0c;永恒不变而又短暂&#xff1b;爱像流水&#xff0c;浩瀚壮阔却又普普通通。 .exe .exe文件是Windows操作系统中可执行文件的常见格式&#xff0c;它包含了计算机程序的二进制代码以及其他必要的信息&#xff0c;以便操作系统能够加载和执行该程序。下面是…

秒验:可以自定义UI的一键登录服务

一键登录如今成为越来越多移动应用的首选&#xff0c;但千篇一律的登陆界面在引发用户担忧其安全性的同时&#xff0c;也容易让用户在不同APP切换时产生误解。因此&#xff0c;由国内知名移动应用开发服务商MobTech打造的一键登录工具——秒验&#xff0c;通过允许开发者自定义…

【MVDiffusion】完美复刻场景,可多视图设计的生成式模型

文章目录 MVDiffusion1. 自回归 生成 全景图1.1 错误积累1.2 角度变换大 2. 模型结构2.1 多视图潜在扩散模型(mutil-view LDM)2.1.1 Text-conditioned generation model2.1.2 Image&text-conditioned generation model2.1.3 额外的卷积层 2.2 Correspondence-aware Attenti…

使用 TensorFlow 创建 DenseNet 121

一、说明 本篇示意DenseNet如何在tensorflow上实现&#xff0c;DenseNet与ResNet有类似的地方&#xff0c;都有层与层的“短路”方式&#xff0c;但两者对层的短路后处理有所不同&#xff0c;本文遵照原始论文的技术路线&#xff0c;完整复原了DenseNet的全部网络。 图1&#x…

评价指标篇——IOU(交并比)

什么是IoU(Intersection over Union) IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。 即是产生的候选框&#xff08;candidate bound&#xff09;与原标记框&#xff08;ground truth bound&#xff09;的交叠率 即它们的交集与并集的比值。最理想情况是完全重叠…

CVE-2023-5129:libwebp开源库10分漏洞

谷歌为libwebp漏洞分配新的CVE编号&#xff0c;CVSS评分10分。 Libwebp是一个用于处理WebP格式图像编解码的开源库。9月6日&#xff0c;苹果公司安全工程和架构&#xff08;SEAR&#xff09;部门和加拿大多伦多大学研究人员在libwebp库中发现了一个0 day漏洞&#xff0c;随后&…

Linux SSH连接远程服务器(免密登录、scp和sftp传输文件)

1 SSH简介 SSH&#xff08;Secure Shell&#xff0c;安全外壳&#xff09;是一种网络安全协议&#xff0c;通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式&#xff0c;例如Telnet、FTP&#xff0c;使用明文传输数据&#xff0c;存在很多的安全…

水果种植与果园监管“智慧化”,AI技术打造智慧果园视频综合解决方案

一、方案背景 我国是水果生产大国&#xff0c;果园种植面积大、产量高。由于果园的位置大都相对偏远、面积较大&#xff0c;值守的工作人员无法顾及到园区每个角落&#xff0c;因此人为偷盗、野生生物偷吃等事件时有发生&#xff0c;并且受极端天气如狂风、雷暴、骤雨等影响&a…

NOSQL Redis 数据持久化 RDB、AOF(二) 恢复

redis 执行flushall 或 flushdb 也会产生dump.rdb文件&#xff0c;但里面是空的。 注意&#xff1a;千万执行&#xff0c;不然rdb文件会被覆盖的。 dump.rdb 文件如何恢复数据 讲备份文件 dump.rdb 移动到redis安装目录并启动服务即可。 dump.rdb 自动触发 和手动触发 自…

Android 更新图标

什么是Android Multidex热更新 • Worktile社区 在不重启app的情况下热更新 &#xff0c;在所有新文件下载完成后&#xff0c;提示用户&#xff0c;是否重启 在不频繁新增图标的情况下可以使用 <adaptive-icon>在AndroidManifest.xml中设置app别名&#xff0c;以实现…

PCB走线的传输延时有多少

信号在PCB上的传输速度虽然很快&#xff0c;但也是存在延时的&#xff0c;一般经验值是6mil/ps。 也就是在PCB上&#xff0c;当信号线走线长度为6mil的时候&#xff0c;信号从驱动端到达接收端需要经过1ps。 信号在PCB上的传输速率&#xff1a; 其中C为信号在真空中的传播速率…

2023年【煤炭生产经营单位(安全生产管理人员)】证考试及煤炭生产经营单位(安全生产管理人员)模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 煤炭生产经营单位&#xff08;安全生产管理人员&#xff09;证考试是安全生产模拟考试一点通生成的&#xff0c;煤炭生产经营单位&#xff08;安全生产管理人员&#xff09;证模拟考试题库是根据煤炭生产经营单位&…

记一次问题排查

1785年&#xff0c;卡文迪许在实验中发现&#xff0c;把不含水蒸气、二氧化碳的空气除去氧气和氮气后&#xff0c;仍有很少量的残余气体存在。这种现象在当时并没有引起化学家的重视。 一百多年后&#xff0c;英国物理学家瑞利测定氮气的密度时&#xff0c;发现从空气里分离出来…

练[BJDCTF2020]EasySearch

[BJDCTF2020]EasySearch 文章目录 [BJDCTF2020]EasySearch掌握知识解题思路关键paylaod 掌握知识 ​ 目录扫描&#xff0c;index.php.swp文件泄露&#xff0c;代码审计&#xff0c;MD5区块爆破&#xff0c;请求响应包的隐藏信息&#xff0c;.shtml文件RCE漏洞利用 解题思路 …

cpp primer plus笔记01-注意事项

cpp尽量以int main()写函数头而不是以main()或者int main(void)或者void main()写。 cpp尽量上图用第4行的注释而不是用第5行注释。 尽量不要引用命名空间比如:using namespace std; 函数体内引用的命名空间会随着函数生命周期结束而失效&#xff0c;放置在全局引用的命名空…

【LeetCode: 901. 股票价格跨度 | 单调栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…