这篇文章介绍多模态模型-BLIP
Transformer基础介绍可以看:深度学习基础-5 注意力机制和Transformer
多模态基础知识点可以看:多模态-1 基础理论
ViT相关介绍可以看:计算机视觉Transformer-1 基础结构
CLIP相关介绍可以看:多模态-2 CLIP
BLIP原论文:《BLIP: Bootstrapping Language-Image Pre-training for
Unified Vision-Language Understanding and Generation》
一 网络结构
基于多任务学习构建了一个兼顾图像理解与生成的多模态模型BLIP,具体结构如下:
整体包含四部分:
1)图像编码器:上图中最左侧部分,论文中使用的是ViT模型,负责对输入的图像进行特征编码
2)ITC(Image-Text Contrastive)任务:图像编码表示、文本编码表示对比学习组件,利用类似CLIP的对比学习方法,构建全局粒度的图像特征、文本特征语义对齐
3)ITM(Image-Text Matching)任务:判断图像编码表示、文本编码表示是否匹配,二分类任务,构建局部细粒度的图像特征、文本特征语义对齐
4)LM(Language Modeling)任务:文本生成组件,负责根据输入的图像编码表示、文本编码表示,生成输入图像对应的文本描述
BLIP不同学习任务不是完全独立的模型层,而是采用共享模型层的策略,减少模型整体体积的同时,提高BLIP整体性能。
二 训练过程
1.从训练数据集中获取一个batch的<图像,图像文本描述>训练数据
2.利用图像编码器获取图像的特征编码表示
3.将图像文本描述输入到ITC、ITM、LM中进行特征提取,其中ITM、LM中利用cross attention将图像的编码表示作为K、V,图像文本描述的编码表示作为Q,进行图像-文本编码特征语义对齐
4.ITC计算当前batch内所有图像编码表示、文本编码表示的相似度矩阵
5.ITM需要根据当前batch的训练数据构造负样本,因为输入的都是匹配的<图像,图像文本描述>对,如果都用这些匹配的正样本训练ITM,效果会不好,所以需要构造出负样本输入到ITM中进行训练,ITM根据最终融合图像编码表示的文本编码特征进行二分类判断,判断输入的<图像,图像文本描述>是否匹配
6.LM采取的是标准Transformer的Decoder流程,根据图像编码表示、文本编码表示,解码出图像对应的文本描述
7.计算ITC、ITM、LM三部分的损失,反向传播训练整个BLIP
三 数据集构建过程
基于已经训练完毕的BLIP模型,构建高质量的多模态训练数据集,整体流程如下:
四 实验结果
五 细节问题
1 模型、训练过程
1.对于ViT的图像编码输出,ITC使用的是ViT的[cls]嵌入向量,ITM、LM使用的是ViT的全部输出结果
2.BLIP使用了动量编码器方法增加ITC训练的稳定性
3.BLIP的ITM任务构建负样本时,会优先选择ITC匹配错误的样本对作为难样本来构建负样本,提升模型的效果