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

news2024/9/26 3:30:24

论文地址: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,共享参数都是可以的。当把这个模型做大,数据集做大后,模型性能都差不多,其实往往最后拼的都是数据

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

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

相关文章

回溯法解决地图填色问题

目录 回溯法 最大度优先 最少可选颜色优先 向前探测 随机产生不同规模的图,分析算法效率与图规模的关系(四色) 回溯法 回溯法的基本思想是采用递归和深度优先搜索的方法,尝试在一组可能的解中搜索出符合要求的解&#xff0c…

Langchain的新课程;Mozilla开发的AI文档工具遭到开发者批评

🦉 AI新闻 🚀 Mozilla开发的AI文档工具遭到开发者批评,已下线 摘要:Mozilla开发的基于生成式AI的工具AI Help在开发者群体中遭到广泛批评。开发者认为该工具提供的信息常常错误,甚至认为它没有这个功能反而更好。针对…

Flutter 仿抖音、豆瓣、知乎、番茄小说的评论弹窗开发实践

最近用flutter做了一个评论弹窗的功能,本来以为很简单的烂大街的一个功能,结果却遇到了不少的问题,而且这些问题我觉得很有意义,以至于我觉得我如果分享出来可能会对其他人很有帮助。 要做一件事情可能会很容易,但做好…

ModaHub魔搭社区: AI模型社区ModelScope和Hugging Face行业分析报告

目录 引言: 一、github星数: 二、模型数: 三、数据集: 四、演示应用程序数: 五、下载数: 六、开发者、付费企业和公司用户数: 结论: 引言: AI模型开源社区在近年…

MQTT资料储备

1、官网 https://mqtt.org/ MQTT 5.0官方协议 https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html 说明:官网可以获取到好多资料(比如常用软件、协议、usecase等) 2、安装部署EMQX 当前有好多MQTT服务器,初步选择了EM…

MyBatis查询数据库【秘籍宝典】

0.MyBatis执行流程1.第一个MyBatis查询1.创建数据库和表1.2.添加MyBatis框架依赖【新项目】1.3.添加MyBatis框架依赖【旧项目】1.4.配置连接数据库1.5.配置MyBatis的XML路径2.MyBatis模式开发2.1 添加MyBatis的xml配置 3.增查改删(CRUD)5.1.增加操作5.2.…

机器学习之多元微积分

机器学习的多元微积分跟高等数学中的多元微积分有很多不同之处。 机器学习中的变量都是向量或者矩阵机器学习中的函数一般都是线性函数,而不是高数中的曲线和曲面、体积等函数。因此,机器学习中的微积分跟线性代数结合在一起。机器学习中导数的分子分母…

Chapter 4: Functions | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介FunctionsFunction callsBuilt-in functionsType conversion functionsMath functionsRandom numbersAdding new functionsDefinitions and usesFlow of executionParameters and argumentsFruitful functions and void functionsWhy fun…

GEE:GEE上一些好看的可视化参数

作者:CSDN _养乐多_ 为了方便使用,总结了几种可视化参数。 文章目录 一、连续型1.11.21.31.41.5 二、离散型2.1 一、连续型 1.1 var phenoPalette [ff0000,ff8d00,fbff00,4aff00,00ffe7,01b8ff,0036ff,fb00ff]1.2 var evapotranspirationVis {min…

异地手机卡如何在当地办理宽带【纯教程篇】

有一些小伙伴常年在外漂泊会经常使用异地卡套餐,但是当你需要办理宽带业务的时候,很多时候当地的营业厅会让你再办理一张他们本地的手机卡,不方便不说还要多支付一张卡的月租也不划算。 其实呢运营商早就有异地办理宽带的业务,只不…

公司新来了个卷王,还是个00后,我们这帮老油条真干不过...

都说00后躺平了,但是有一说一,该卷的还是卷。这不,前段时间我们公司来了个00后,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …

浅析集群、分布式、负载均衡

平时开发或者面试中进场听到集群、分布式、负载均衡等系列的名词,他们之间有什么联系呢,本文就简要的抛砖引玉一下。 集群 1.什么是集群 集群一般指的是服务器集群。集群其实就是一组相互独立的计算机,通过高速的网络组成一个计算机系统。…

深度学习笔记之Transformer(六)Position Embedding铺垫:Skipgram与CBOW模型

深度学习笔记之Transformer——PositionEmbedding铺垫:Skipgram与CBOW模型 引言回顾: Word2vec \text{Word2vec} Word2vec模型补充:关于 Word2vec \text{Word2vec} Word2vec的一些说明 引言 上一节介绍了 Word2vec \text{Word2vec} Word2vec…

【动态规划算法】第九题:64. 最小路径和

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你…

Todo-List案例版本一

初级使用e.target.value 记得安装npm i nanoid与UUID类似 快捷键ctrlH替换内容 src/components/MyHeader.vue <template><div class"todo-header"><input type"text" placeholder"请输入你的任务名称&#xff0c;按回车键确认&quo…

express框架中使用ejs

1.设置模块引擎为ejs app.set("view engine","ejs") 2. 设置模版文件存放位置 说明&#xff1a;模版文件&#xff1a;具有模版语法内容的文件。 app.set(vies,path.resolve(__dirname,"./views")) 3.render渲染 app.get(/home,(req,res)>{/…

MySQL第三天(简单单表查询)

前言 今天的三个题目是针对于单表查询和多表查询的课后作业&#xff0c;针对于初学者还是很合适的听有用处的&#xff0c;我会把我的答题过程一步一步写出来&#xff0c;有需要的小伙伴可以参考哦… 第一题、单表信息查询 题目代码如下&#xff1a; 作业&#xff1a;1.创建表…

【计算机组成原理总结】

第一章计算机系统概述 第二章数据的表示与运算 第三章存储系统 第四章 指令系统 第五章 中央处理器 第六章 总线 第七章 输入输出设备

Mac如何在终端使用diskutil命令装载和卸载推出外接硬盘

最近用 macOS 装载外接硬盘的时候&#xff0c;使用mount死活装不上&#xff0c;很多文章也没详细的讲各种情况&#xff0c;所以就写一篇博客来记录一下。 如何装载和卸载硬盘&#xff08;或者说分区&#xff09; mount和umount是在 macOS 上是不能用的&#xff0c;如果使用会…

Clickhouse入门(一)

第一章 Clickhouse简介 ClickHouse (C编写)是俄罗斯的Yandex(相当于百度)于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据…