多模态系列论文--CoCa 详细解析

论文地址:CoCa: Contrastive Captioners are Image-Text Foundation Models
代码地址:CoCa

CoCa

  • 1 摘要
  • 2 网络结构
  • 3 损失函数
  • 4 实验结果
  • 5 总结

1 摘要

CoCa代表Contrastive Captioners的缩写,代表模型用两个目标函数训练出来的,一个是Contrastive Loss,一个是Captioning Loss。本文因为数据集更大,模型也更大,所以它的效果很好,在多模态所有的任务均SOTA,而且在单模态里,在ImageNet上也得到了90以上的Top1准确度,在视频动作识别领域,在Paper with Code上CoCa在K400、K600、K700这些数据集上排名前三。

2 网络结构

在这里插入图片描述

CoCa是ALBEF的一个后续工作,它与ALBEF的模型类似,左边是一个Image Encoder,右边是一个Text Decoder,注意,这里是Decoder
不是Encoder。从左右来看还是左边图像分支,右边文本分支,文本分支分两部分,前面用来抽取Unimodel的文本特征,后面做多模态的特征。整个模型就是用两个目标函数训出来的,一个是ITC,一个是Language Modeling Loss,也就是Contrastive和Captioning,具体步骤如下:

  1. 图像通过Image Encoder,得到一系列的Token,文本通过文本的解码器,得到一系列的文本特征。
  2. 图像的CLS Token和文本的CLS Token计算ITC loss
  3. 图像其他的Token做Attention Pooling,然后再传到多模态的Text Decoder里做Cross Attention,这样把视觉和文本的特征融合在一起了。多模态的特征用Captioning Loss训练,也就是BLIP、GPT用的Language Modeling Loss。

所以CoCa的布局跟ALBEF是一模一样的,区别是:

  1. 在图像分支做Attentional Pooling,这一部分是可学的,这种可学的Pooling方式能够针对不同的任务学到更好的特征。
  2. 不论是单模态的文本特征的学习还是多模态的特征学习,整个文本端统一都用Decoder训练目标函数,使用Captioning的Loss,文本的输入从一开始前面的Self-Attention Layer就是Causal的(也就是mask住一个句子后半部分,然后用前半部分去预测句子后面内容)。因为作者在超大的几十亿的数据集上去做预训练,所以文本如何mask关系不大,模型应该是什么都见过。

Coca的模型实现并不难,但是想复现它难度非常大。原因是:

  1. 模型大:虽然很简单,但它训练出来最大的模型参数量已经达到了2.1 billion,算是视觉或者多模态里面非常大的一个模型(当然在NLP那边已经有几十亿上百亿的模型)
  2. 训练的数据集∶作者不只用了之前训练Align用的多模态的数据集,同时还把GFT 3 billion(google私有数据)图像分类的数据集转化成了多模态数据集,加在一起有几十亿的训练数据,所以不论是模型还是这个数据都远超之前所有工作的这个scale,效果也是非常明显的。

3 损失函数

  1. ITC loss:Contrastive Loss,图像的CLS Token和文本的CLS Token计算ITC loss。
  2. LM(Captioning) Loss:单模态、多模态的文本特征学习,计算LM Loss。

文本端统一都用Decoder训练目标函数,并且只用一个Captioning Loss而不用ITM Loss,原因是作者这里想解决训练的效率问题,之前不论是ALBEF还是VLMO,因为算各种的目标函数,往往一个Training Iteration要forward这个模型好几次,无形中增加了模型训练的时间长度,比如训练100个Epoch,其实forward三次之后相当于训练了300个Epoch。作者这里为了让ITC Loss和Captioning Loss能同时计算,所以文本的输入从刚开始就必须是Causal的,这样通过Unimodal Text Decoder出来的特征能直接做ITC Loss,同样的输入得到的多模态特征也直接能做Captioning Loss。这样一个Iteration就是只forward一次,训练时间就会降低一些。

4 实验结果

效果图插入
CoCa画了一张图,里面多边形的每一个顶点代表了一个数据集,或者说是一个任务。黄色圈指的是之前在所有的这些数据集上不同的方法表现出来的SOTA的performance。CoCa就是在这些State of Art的外面的紫色的框,就是CoCa的性能比之前所有的方法在这些所有的任务和数据集上都取得了更好的效果,而且在大部分数据集上都获得大幅度的提升。
在这里插入图片描述
CoCa用表格2展现了它在各个数据集上的表现。

5 总结

其实不论用ALBEF或者CoCa模型结构,还是VLMO、 BLIP,共享参数都是可以的。当把这个模型做大,数据集做大后,模型性能都差不多,其实往往最后拼的都是数据

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

selenium怎么使用代理IP

什么是selenium Selenium 是一个自动化测试框架,用于测试 Web 应用程序的功能性。它支持多个编程语言(如Java,Python,C#等)并且可以在操作系统和不同浏览器上运行测试。Selenium 可以模拟用户在浏览器中的操作&#x…

PyTorch从零开始实现Transformer

文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码(可直接运行) 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…

RDS-Tools RDS-Knight Crack

RDS 高级安全性 利用全面的网络安全工具箱中有史以来最强大的安全功能集来保护您的 RDS 基础架构。 全方位 360 保护 无与伦比的功能集 无与伦比的物有所值 企业远程桌面安全。现代工作空间的智能解决方案。 办公室正在权力下放。远程办公室和移动员工数量创历史新高。随…

机器学习技术(四)——特征工程与模型评估

机器学习技术(四)——特征工程与模型评估(1️⃣) 文章目录 机器学习技术(四)——特征工程与模型评估(:one:)一、特征工程1、标准化2、特征缩放3、缩放有离群值的数据4、非线性转换5、样本归一化6、特征二值化7、标称特征编码(one-…

设计模式——命令模式

命令模式 定义 将一个请求封装成一个对象,从而让你使用不同的请求吧客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式是一个高内聚的模式。 优缺点、应用场景 优点 类间解耦。调用者与接收者之间没有任…

Linux系统使用(超详细)

目录 Linux操作系统简介 Linux和windows区别 Linux常见命令 Linux目录结构 Linux命令提示符 常用命令 ls cd pwd touch cat echo mkdir rm cp mv vim vim的基本使用 grep netstat Linux面试题 Linux操作系统简介 Linux操作系统是和windows操作系统是并列…

Github Pages使用自定义域名

Github Pages使用自定义域名 部署好网站后默认访问地址是xxx.github.io,我们想要自定义为自己的域名 1.DNS解析 这里我使用的是腾讯云,DNS解析DNSPod 添加两条解析记录: 第一个解析记录的记录类型为A,主机记录为,记录值为ping 你的github用户名.githu…

【Java】单例模式

单例模式 设计模式概述单例模式实现思路饿汉式懒汉式饿汉式 vs 懒汉式 设计模式概述 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。就像是经典的棋谱,不同的棋局,我…

【unity之IMGUI实践】单例模式管理面板对象【一】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

electron globalShortcut 快捷键与系统全局快捷键冲突

用 electron 开发自己的接口测试工具(Post Tools),在设置了 globalShortcut 快捷键后,发现应用中的快捷键与系统全局快捷键冲突了,导致系统快捷键不可正常使用。 快捷键配置 export function initGlobalShortcut(main…

【宝塔】宝塔部署ThinkPHP项目

最近搞了个培训教育的小程序,后端服务用的是ThinkPHP。使用的过程中,发现对于这种小项目用php还是很不错的选择,开发便捷,轻量级。宝塔神器也是很不错的,值得推荐使用。 下面介绍一下项目中用宝塔部署ThinkPHP项目&…

【菜鸟の笔记_利用Excel自动总结表格数据_自动链接word文本】

自动更新总结表格数据 1. 撰写原因2. 解决的问题3. Excel自动总结表格数据内容(一段话)。3.1问题引出3.2解决方式 4.Excel数据、总结内容,自动链接更新Word文本 1. 撰写原因 【GPT的答案】利用Excel自动总结表格数据有以下好处: …

redis浅析

一 什么是NoSQL? Nosql not only sql(不仅仅是SQL) 关系型数据库:列行,同一个表下数据的结构是一样的。 非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。 NoSQL泛指非关系…

RocketMQ 为何性能高

本文主要从性能角度考虑 RocketMQ 的实现。 整体架构 这是网络上流行的 RocketMQ 的集群部署图。 RocketMQ 主要由 Broker、NameServer、Producer 和 Consumer 组成的一个集群。 **NameServer:整个集群的注册中心和配置中心,管理集群的元数据。包括 T…

解析Android VNDK/VSDK Snapshot编译框架

1.背景 背景一: 为解决Android版本碎片化问题,引入Treble架构,它提供了稳定的新SoC供应商接口,引入HAL 接口定义语言(HIDL/Stable AIDL,技术栈依然是Binder),它指定了 vendor HAL 和system fr…

容器化背后的魔法之Docker底层逻辑解密

Docker内部工作原理是怎样的? 现在我们知道了Docker是什么以及它提供了哪些好处,让我们逐个重要的细节来了解。 什么是容器?它们是如何工作的? 在深入研究Docker的内部机制之前,我们首先要了解容器的概念。简单地说…

从2023中国峰会,看亚马逊云科技的生成式AI战略

“生成式AI的发展就像一场马拉松比赛,当比赛刚刚开始时,如果只跑了三四步就断言某某会赢得这场比赛,显然是不合理的。我们现在还处于非常早期的阶段。” 近日,在2023亚马逊云科技中国峰会上,亚马逊云科技全球产品副总裁…

JSX的基础使用

1. JSX嵌入变量作为子元素的使用 ①当变量是Number、String、Array类型时,可以直接显示; ②当变量是null、undefined、Boolean类型时,内容为空; 若想要展示nul、undefined、Boolean类型,转字符串;转换方式…

增强型视觉系统 (EVS)

增强型视觉系统 EVS 1、增强型视觉系统概览2、车载相机 HAL2.1 EVS 应用2.2 EVS 管理器2.3 EVS HIDL 接口2.4 内核驱动程序 《增强型视觉系统 (EVS) 1.1 集成指南》 车载相机 HAL 1、增强型视觉系统概览 为了增强视频串流管理和错误处理,Android 11 更新了车载相机…

图像处理之图像灰度化

图像灰度化 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万 (255255255)的颜色的变化范用。而灰度图像是R、G、B三个分量相同的一种特…