(多模态)VLP
0、图文多模态学习
包含以下:
- 普通多模态学习,如图文检索、视觉问答、视觉推理、视觉蕴含: CLIP
- language guided detection
- language guided segmentation
- 文本图像生成:Dall.E2, Stable Diffusion
- 文本视频生成
1、普通多模态学习:图文检索、视觉问答、视觉推理、视觉蕴含
1.1 只用encoder-transformer方法
1.1.1 ViLT
1.1.2 CLIP-OpenAI(->DELL)
大数据(400M/4亿 web image-caption pair)+大模型+对比学习
- 自然语言监督信号训练图片的好处(CONVIRT和CLIP非常像了,但只在医疗图像上做, 之前的那些方法没有这么大的数据集,没有这么多的算力, 没有这么大的模型,没有这么好的自监督训练的方式, 所以大家的效果都不好(特别是zero-shot))
1、不需要标注 2、文本和图片一起自监督学习,学习的是多模态特征;像Moco单模态对比自监督学习和MAE单模态的掩码自监督学习,只能学习到视觉特征,无法和自然语言联系,无法进行0-shot学习 - 大数据
WIT 自收集400M/4亿 image,text对 - 预训练方法/大数据怎么解决训练效率
不选择图片预测文字预测性的方法的原因:1、1个图片有很多文本描述,有很多可能 2、不需要逐字逐句预测文本,效率高
对比学习:只需要判断图片和文本是否配对
模型结构:
视觉分支resnet或者transformer-encoder,文本分支transformer-encoder - 数据增强
因为数据集大,只做了随机裁剪 - 调参
数据集大,模型大,不太好调参,所以温度设置为可学习的标量 - trick
1、由于模型大,数据量大,所以超参通过最小的模型resnet50训练1个epoch确定的
2、混合精度,transformer大部分都用
3、https://lilianweng.github.io/posts/2021-09-25-train-large/
4、训练好的模型在更大像素输入的数据上做finetune - 0-shot推理-prompt
1、使用模板a photo of a {label}
不使用单个词计算文本特征的原因: 1、单个词有歧义,比如remote遥控器/遥远 2、训练的时候用的语句,如果使用单词存在特征分布gap
2、增加描述,使用 a photo of a {label}, a type of pet
3、 prompt emsembel集成,使用多个模板 - 不足
1、效果只是比resnet50好,和sota差很远
2、不能直接生成类别,而是需要给一个类别,方向对比+生成方法合在一起
2、模型需要大量数据投喂,,方向减少数据用量,数据增强/自监督/伪标签
3、数据从网上爬,数据可能存在偏见
4、有些时候fewshot比0-shot效果差