多模态小记:CLIP、BLIP与BLIP2

news2024/11/25 14:42:48

CLIP

使用网络上爬取得到的大量图文对进行对比学习,图文匹配的是正样本,图文不匹配的是负样本,使匹配样本的embedding之间的距离尽可能小,不匹配样本间的距离尽可能大。

缺点:网上爬的数据质量差,不能进行生成式任务。

BLIP

CLIP只有ITC(Image Text Contrastive)任务,但不能做生成式的任务,而BLIP则提出了一个新的框架将ITM(Image Text Match)和LM(Language Model,即生成文本)的任务融合在一个框架里,称为Mutimodal mixture of Encoder-Decoder (MED)。
在这里插入图片描述
ITC做的任务跟CLIP几乎一致;而ITM的任务是一个二分类,输出图文是否匹配;LM任务就是根据图片输出对应文本。这三个任务将在同一框架下一起训练。

对于CLIP中爬取的数据噪声太多的问题,BLIP也提出了一个全新框架,Captioner-Filter框架,类似一个数据增强训练框架。左侧浅紫色的部分对应上图的整个训练框架, T w T_w Tw T s T_s Ts分别表示网上爬取的文本和LM生成的文本,绿色为较干净的数据,而红色是包含噪声较多的数据, T h T_h Th为人工标注的高质量数据,但是数据量非常少。

如下图,我们先用红 T w T_w Tw T h T_h Th对MED做一个预训练。然后对于Filter(ITM任务部分)和Captioner(LM任务部分)我们使用人工标注的高质量数据集 T h T_h Th进行微调。紧接着开始数据增强进程,由于Filter和Captioner都是用高质量数据集微调过的,因此其都更倾向于低噪声、高匹配度数据。此时有两个增强路线,路线1是将网上爬取的低质量 T w T_w Tw通过Filter,筛选出高质量的部分,即绿色 T w T_w Tw;路线2是给Captioner输入图片,使其生成对应的描述,这个描述同样过一遍Filter得到高质量部分,记作绿色 T s T_s Ts,三个绿色的数据共同组成了增强版高质量数据集,用这个数据集我们可以继续训练整个MED。
在这里插入图片描述

BLIP2

在BLIP的基础上,BLIP2主要专注于如何增大模型的规模,因为BLIP肉眼可见是一个非常庞大的框架,里面包含非常多的需要训练的参数,限制了模型规模的进一步扩大。BLIP2的思路是首先冻结住参数量最多的Text/Image Encoder。但不训练编码器的话,图文编码之间会有巨大的gap,为了解决这个问题,BLIP2引入了Q-Former(Querying Transformer)一个轻量级的Transformer来弥合两个冻结的编码器之间的gap。
在这里插入图片描述
Q-Former的输入是图片编码、一个可学习的Queries向量以及对应的文本,输出则是要求提取出图片中与文本相关的信息。
在这里插入图片描述
上图对应BLIP第一阶段的学习过程,有三个任务,训练三个loss。其一是ITM,这个任务图片和文本都是可以相互看到的,因此没有元素被mask;其二是ITG,根据图像生成文本,在这个时候Queries提取到的信息会通过attention层传递过来,Q要能自主地提取图像中的关键信息,因此Q是不能看见T地,而由于这个是生成式任务,T也只能看到Q和当前位置之前地T;其三是ITC,这个任务就是Q和文本分别编码,期望得到的特征尽可能接近,因此QT之间都不能看到对方。在经过训练后,第一阶段就能输出一个图像中与文本最相关的信息的编码,在没有文本的时候也会尽力将图片中有价值的信息编码到与文本相近的空间中。
在这里插入图片描述
在第二阶段的训练中,我们把Q-Former输出的编码再接一个全连接层,直接给到冻结的语言大模型中。有两种模式,一种是完全不给文本,让LLM自行生成;另一种则是给一下开头,让LLM进行补全。

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

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

相关文章

个人求职简历(精选8篇)

HR浏览一份简历也就25秒左右,如果你连「好简历」都没有,怎么能找到好工作呢? 如果你不懂得如何在简历上展示自己,或者觉得怎么改简历都不出彩,那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…

最新! Gemini 1.5 Pro: 现已在 180 多个国家/地区发布;提供本地音频理解、系统说明、JSON 模式等功能!

概述 不久前,Gemini团队在Google AI Studio中推出了先进的Gemini 1.5 Pro模型,邀请开发者们进行体验和测试。社区成员利用Gemini模型的100万个上下文窗口进行的调试、创新和学习成果,令我们感到惊喜不已。 4月9号,Gemini团队骄傲…

C语言:指针详解(2)

目录 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 正文开始 一、数组名的理解 在上一篇博客中我们在使用指针访问数组的内容时有这样的代码: int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &…

基于ollama和CPU运行本地gguf量化模型

前言 本文先以Windows电脑运行为例,Linux同理 本案运行配置: Win11/CPU i5/RAM 32G (实际运行使用约占用10G) 假设你已经下载好了需要的xxx.gguf模型文件,本案: wizardcoder-python-13b-v1.0.Q5_K_M.gguf…

【Ubuntu】远程连接乌班图的方式-命令行界面、图形界面

​​​​​​系统环境:ubuntu-22.04.2-amd64.iso 连接工具:MobaXterm、windows自带远程桌面mstsc.exe 重置root密码:Ubuntu默认root密码是随机的,需要使用命令sudo passwd 进行重置。 一、命令行界面-SSH连接 1.1 SSH服务安装 …

实现多文件合并和去重的MapReduce作业

实现多文件合并和去重的MapReduce作业 问题描述 我们有多个文本文件,每个文件包含一些文本行。我们的目标是将这些文件合并成一个文件,并去除重复的行,最终得到一个去重后的文本文件。 输入文件A数据如下: 输入文件B数据如下&…

完全可定制的富文本编辑器:逻辑清晰,插件赋能 | 开源日报 No.218

ianstormtaylor/slate Stars: 28.8k License: MIT slate 是一个完全可定制的框架,用于构建富文本编辑器。 可以构建类似 Medium、Dropbox Paper 或 Google Docs 的富文本编辑器通过一系列插件实现所有逻辑,避免代码复杂度受到 Draft.js、Prosemirror 和…

行锁升级表锁如何避免?表锁后如何排查?

一、那些场景会造成行锁升级表锁 说明: InnoDB引擎3种行锁算法(Record Lock、Gap Lock、Next-key Lock)都是锁定的索引。 当触发X锁(写锁)的where条件 无索引 或 索引失效 时,查询的方式就变成全表扫描&…

【机器学习】科学库使用第4篇:Matplotlib,学习目标【附代码文档】

机器学习(科学计算库)完整教程(附代码资料)主要内容讲述:机器学习(常用科学计算库的使用)基础定位、目标,机器学习概述定位,目标,学习目标,学习目标,1 人工智能应用场景,2 人工智能小…

AI实时换天解决方案:重塑汽车与旅行拍摄新视界

在汽车拍摄与旅行摄影领域,天空作为画面中的重要元素,往往决定着整体视觉效果的成败。美摄科技作为业界领先的AI视觉技术提供商,近日推出了全新的AI实时换天解决方案,为用户带来了前所未有的创意空间与效率提升。 传统的换天技术…

【简单讲解下WebView的使用与后退键处理】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

分布式文件系统——MinIo

1. 文件系统和分布式文件系统 1.1 文件系统 文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件。 1.2 分布式文件系统 一个计算机无法存储海量的文件,通过网络将若干计算…

Xshell连接CentOS7教程

一、在CentOS7中单击右键,打开命令行终端: 二、输入ifconfig命令之后,找到CentOS的ip地址: 三、打开Xshell,命令行中输入 “ssh 用户名上述查到的ip地址 ”,之后输入密码即可连接成功: 四、测试…

【鸿蒙开发】组件状态管理@Prop,@Link,@Provide,@Consume,@Observed,@ObjectLink

1. Prop 父子单向同步 概述 Prop装饰的变量和父组件建立单向的同步关系: Prop变量允许在本地修改,但修改后的变化不会同步回父组件。当父组件中的数据源更改时,与之相关的Prop装饰的变量都会自动更新。如果子组件已经在本地修改了Prop装饰…

嵌入式开发绝招:状态机+事件驱动框架

生活中有很多事件驱动的例子,上自习瞒着老师偷睡觉就是很生动的一个。在开始前我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无…

第十四届蓝桥杯C/C++大学B组题解(二)

6、岛屿个数 #include <bits/stdc.h> using namespace std; const int M51; int T,m,n; int vis[M][M],used[M][M]; int dx[]{1,-1,0,0,1,1,-1,-1}; int dy[]{0,0,1,-1,1,-1,1,-1}; string mp[M]; struct node{//记录一点坐标 int x,y; }; void bfs_col(int x,int y){ qu…

基于BP神经网络的时间序列预测模型matlab代码

整理了基于BP神经网络的时间序列预测模型matlab代码&#xff0c;包含数据集。采用了四个评价指标R2、MAE、MBE、MAPE对模型的进行评价。BP模型在数据集上表现优异。 代码获取链接&#xff1a;基于BP神经网络的时间序列预测模型matlab代码 训练效果&#xff1a; 训练集数据的R…

(学习日记)2024.04.11:UCOSIII第三十九节:软件定时器

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

一体式I/O模块与RS485串口联动,实现工业网络无缝对接

在现代工业自动化领域中&#xff0c;一体化I/O模块和RS485串口的联动应用已经成为实现工业设备高效、稳定通信的关键技术手段之一。这种联动机制能够有效地将各种现场设备的数据实时、准确地传输到上位机系统&#xff0c;从而实现工业网络的无缝对接。 一体化I/O模块&#xff…

HarmonyOS 开发-Grid和List内拖拽交换子组件位置

介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子组件&#xff0c;到目标List子组件…