多模态论文串讲-学习笔记(上)

news2024/11/15 15:33:58

入门参考:跟着chatgpt一起学|多模态入门-CSDN博客

学习参考:多模态论文串讲·上【论文精读·46】_哔哩哔哩_bilibili,强烈推荐这个博主啊,感觉比沐神讲的还要清楚,非常喜欢。

本文介绍只使用transformer encoder的方法,下中会介绍使用transformer encoder和decoder的方法。

目录

1.ViLT CLip回顾

(a) VSE

(b) CLIP

(c)ViLBERT/UNITER

(d) ViLT

一个好的模型结构:

2.ALBEF

摘要:

模型结构:

动量蒸馏

消融实验

 

​3.VLMO

摘要:

模型结构

MoME Transformer:

LOSS

分阶段预训练

模型效果


1.ViLT CLip回顾

图片部分对应4种类型的图文多模态模型,蓝色部分是从这个模型中学到的较好的部分,最右边的是融合这些好的部分的模型结构。

(a) VSE

visual embedding(VE)的大小远大于text embedding(TE),两者也都远大于最终的模态交互(MI),其中VE是来源于目标检测(OD)预训练算法中的,MI就是简单的点乘。

(b) CLIP

之前也有讲过:【经典论文】打通文本图像的里程碑--clip_clip论文-CSDN博客

双塔模型,通过对比学习,将已有的图片文本对在空间上拉的更近。

对图文匹配任务而言效果好,且高效。

缺点:在VQA,VR,VE这些任务上性能不够好(模态之间的交互不足)

(c)ViLBERT/UNITER

在VSE的基础上,使用transformer的encoder或者别的更复杂的模型结构来进行模态之间的交互

(d) ViLT

为了将目标检测从视觉端拿掉,有局限性。

使用基于patch的视觉特征来替代使用基于bounding box的视觉特征,visual embedding是基于patch的,所以VE的大小较小,大大降低了复杂度。而相应的MI,类似与上面的C类里的方法,复杂度较高。

缺点:

性能不够高,可能比不过c类中的方法。有可能是数据集的bias,也有可能是视觉部分不够强。(VE是随机初始化的)

推理快,但是训练慢。(4million的数据集,64张32G GPU训练3天)

一个好的模型结构:

ITC:Image Text Contrastive Loss,对比学习的loss

MLM:Mask Language Modeling Loss,bert中的loss,遮住一个词再去预判这个词

ITM:Image Text Matching Loss

更大的视觉特征

2.ALBEF

摘要:

1.ALBEF使用ITC(图像文本对比损失函数),在融合之前,将视觉特征和文本特征进行了对齐。

        之前的工作,使用Transformer来融合视觉特征和文本特征,而这个视觉特征是已经学习好的,后续并没有基于end-end继续学习,所以视觉特征和文本特征是没有对齐的。

2.使用momentum distillation这种自训练的方式去学习,提升模型在noisy数据集上的表现。

        使用momentum model来生成伪标签,再使用momentum distillation来提升表现。

模型结构:

  • 视觉特征:ViT,一个标准的ViT(什么是VIT?-CSDN博客)
    • 预训练参数:Data Efficient Vision Transformer(DEiT)
  • 文本特征:Bert,使用Bert模型进行初始化,但是只用了bert中的6层做文本特征,另外6层做模态之间的交互。
  • Momentum Model:也是一个ViT和Bert,参数是从上述的ViT和Bert通过moving average得到。阈值:0.995,Momentum Model会更稳定,产出更稳定的图像文本特征。(可参考MOCO)
  • ITM:判断VE和TE是否是同一个对。
    • 缺点:太简单了,负样本很容易学出来。
    • hard negative:每个batch内,每个图片基于ITC,找到和当前图片最相似的作为负样本。
  • MLM:类似于bert,也是对文本进行mask,但是会借助图像特征来帮助预测。

ALBEF每次做2次forward,一次使用原始的I和T(ITC,ITM),一次使用原始的I和mask之后的T’(MLM)

动量蒸馏

原因:网上爬下来的数据是noisy data,里面的正样本对中的文本可能和图片没什么关系,而负样本反而能很好地描述这个图像,可能比ground_truth还好。这种one-hot的label对于ITC和MLM而言是不友好的,使得模型学习困难。

构建:在已有的模型之上,使用EMA(exponential moving average),生成伪标签。

LOSS:在已有的基础上,添加基于伪标签的loss,因为伪标签是softmax score,所以使用KL散度来计算loss

ITC loss 公式:

MLM loss公式

伪标签示例,可以看到,伪标签描述的可能比ground_truth结果更好。

消融实验

在4M的数据集上,Momentum Modeling的提升可能比其他几种方式的提升要小一些,但是方向是不错的。在14M的数据集上,可能会更好。

3.VLMO

论文地址:https://arxiv.org/abs/2111.02358v2

摘要:

之前模型的弊端:

        双塔模型,clip和align,速度快,但是在其他下游任务中的表现不好。

       单塔模型:fusion-encoder,效果好,但是下游任务推理速度特别慢。

贡献:

  1. 提出了Mixture-of-Modality-Expert,后续推理时,根据任务的不同,选择不同的Expert网络。
  2. 提出了stage-wise pretraining strategy,利用单模态领域丰富的数据集,分阶段进行训练。

模型结构

MoME Transformer:

在Transformer的结构基础上,针对不同的输入,用3个FFN替代原先的FFN,分别代表了三个专家网络。

self-attention层是完全share weights的。

LOSS

和ALBEF一致

ITC:计算时类似一个clip模型,双塔输入

ITM/MLM:Fusion Encoder,单塔输入,图像和文本一起输入,

64张V100的卡训练2天。

分阶段预训练

  1. 使用图像数据进行预训练,V-FFN和self-attention层都可以进行训练,没有需要冻住的。
  2. 使用文本数据进行预训练,此时V-FFN和self-attention层都被冻住,仅训练L-FFN。
    1. 比较有意思的一点是,仅在图像数据上预训练好的self-attention在文本数据中也工作的很好,也在很多工作上验证过。但是反过来不行,推测可能图像数据蕴含的内容更丰富?
  3. 都可以进行训练

模型效果

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

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

相关文章

医院为什么要安装医疗设备防漏费系统?

一、医院防漏费管理的重要性 随着人们健康意识的加强,医生对诊断的依据都造就了检查和化验在新形式下的重要性。人们对体检重要性的认识等各方面因素。导致了现在医院检查和化验位置一度提升。成为了医院工作的重中之中。而在中国国情的大环境下,熟人检…

20240923 每日AI必读资讯

GPT-4o能玩《黑神话》!精英怪胜率超人类,无强化学习纯大模型方案 - 阿里巴巴的研究人员们提出了一个新型VARP(视觉动作角色扮演)智能体框架。 - 能直接将游戏截图作为输入,通过视觉语言模型推理,最终生成…

超强AI绘画工具StableDiffusion,SD整合包V4.9 来了 版本win加mac安装包以及搭载PS安装说明

众所周知,StableDiffusion 是非常强大的AI绘图工具,今天为大家带来的是 Stable Diffusion SD整合包v4.9 版本安装说明 。 这里带来的安装版本是9月最新整合包sd-webui-aki-v4.9 版本 。WIN加MAC stable diffusion整合包可以扫描下方,免费获取…

Spring实战——入门讲解

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 Spring介绍 Spring实战的入门讲解主要涵盖了Spring框架的基本概念、核心功能以及应用场景。以下是关于Spring实战入门的具体介绍: Spring框架概述:Spring是一个轻量级的Java开发框架…

Leetcode 65. 有效数字

1.题目基本信息 1.1.题目描述 给定一个字符串 s ,返回 s 是否是一个 有效数字。 例如,下面的都是有效数字:”2″, “0089”, “-0.1”, “3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e7”, “6e-1”, “53.5e93”, “-123.456e789…

WebLogic命令执行漏洞CVE-2019-2725

1.环境搭建 cd vulhub-master/weblogic/weak_password docker-compose up -d 2.漏洞验证 http://47.121.211.205:7001/_async/AsyncResponseService 说明存在漏洞 3.在当前页面抓包 修改请求包 写入shell wget http://47.121.211.205/1.txt -O servers/AdminServer/tmp/_W…

大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】 目录 Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】 一、简单介绍 二、工厂方法模式 (Factory Method Pattern) 1、什么时候使用工厂方法模式 2、使用工厂模式的好处 3、使用工厂方法模…

SPI驱动学习六(SPI_Master驱动程序)

目录 前言一、SPI_Master驱动程序框架1. SPI传输概述1.1 数据组织方式1.2 SPI控制器数据结构 2. SPI传输函数的两种方法2.1 老方法2.2 新方法 二、如何编写SPI_Master驱动程序1. 编写设备树2. 编写驱动程序 三、SPI_Master驱动程序简单示例demo1. 使用老方法编写的SPI Master驱…

WEB领域是不是黄了还是没黄

进入2024年后,WEB领域大批老表失业,一片哀嚎,个个饿的鬼叫狼嚎,为啥呢,下面是我个人的见解和看法。 中国程序员在应用层的集中 市场需求:中国的互联网行业在过去几年中经历了爆炸性增长,尤其是…

平板电容笔哪个牌子好?精选电容笔品牌排行榜前五名推荐!

在当今时代,平板电容笔已经成为平板电脑的重要配件,为人们的学习、工作和创作带来了极大的便利。然而,市场上平板电容笔的品牌众多,质量和性能也参差不齐,这让消费者在选择时常常感到困惑。平板电容笔究竟哪个牌子更好…

Revit 2018 提示 您使用的 Revit 授權無效。

昨天晚上想学下BIM,安装了这个软件,忘了给他断网了,今天早上起来一直提示这个信息,通过查看进程的位置找到了一个acwebbrowser 路径如下:C:\Program Files\Common Files\Autodesk Shared\CLM\V5\MSVC14\cliccore 防火…

如何使用 Rust 框架进行 RESTful API 的开发?

一、RESTful API 的开发 使用 Rust 框架进行 RESTful API 开发,你可以选择多种流行的 Rust Web 框架,如 Actix-web、Rocket、Warp 和 Tide 等。以下是使用这些框架进行 RESTful API 开发的基本步骤和概念: 选择框架:根据项…

OpenAI-gym how to implement a timer for a certain action in step()

题意:OpenAI-gym 如何在 step() 中为某个动作实现一个计时器 问题背景: One of the actions I want the agent to do needs to have a delay between every action. For context, in pygame I have the following code for shooting a bullet: 我希望代…

从趋势到常态:TikTok定制化产品的崛起与变革

随着数字化和TikTok的发展,定制化产品在消费者日常生活中愈发普及,逐渐从一种时尚潮流转变为常态。这一转变不仅改变了消费者的购物方式,也重塑了市场的供需关系、产品设计理念和商业模式。本文Nox聚星将和大家探讨TikTok定制化产品的未来发展…

QT 数据加密

一.使用环境 应该是通用的,此测试版本为如图 二.使用代码 1. 运行代码 QString data = "123abcAbc.-+";qDebug() << "加密:" << QAESEncryption::encodedText(data, "填入自己秘钥");qDebug() << "解密:" <…

Qemu开发ARM篇-4、kernel交叉编译运行演示

文章目录 1、kernel编译2、运行kernel3、FAQ 在前一篇 Qemu开发ARM篇-3、qemu运行uboot演示中&#xff0c;我们演示了如何使用 qemu运行uboot&#xff0c;在该篇中&#xff0c;我们将演示如何交叉编译 kernel并在qemu中运行 kernel. 1、kernel编译 本次演示使用kernel版本…

Java 中使用 Gson 实现深度克隆 #什么是深克隆与浅克隆?#clone方法为什么不能直接通过某个对象实例在外部类调用?

&#x1f310;Gson的jar包提供到本文上方&#xff0c;欢迎自取&#x1f310; 前言 &#x1f310;在 Java 编程中&#xff0c;克隆对象是一项常见的需求&#xff0c;特别是在处理不可变对象、避免引用传递时&#xff0c;深度克隆显得尤为重要。虽然 Java 提供了 clone() 方法&a…

【线程安全】如何区分线程安全还是线程不安全? 一文解释清楚线程安全问题,解释什么是锁重用、锁竞争、分段锁

线程安全问题 是一个重难点&#xff0c;编程就是这样&#xff0c;有的时候自己无论如何苦思冥想也弄不明白&#xff0c;但如果有人指点一二就能豁然开朗&#xff0c;希望本文可以给各位同学带来帮助 本文作者&#xff1a; csdn 孟秋与你 文章目录 如何判断一个类是否线程安全是…

抖音截流神器发布:不限量评论采集,实时推送,提升运营效率

在短视频风靡的今天&#xff0c;抖音成为品牌营销的新战场。如何在海量内容中脱颖而出&#xff0c;提升运营效率成为关键。本文将揭秘一款革命性的抖音运营工具&#xff0c;它不仅支持不限量评论采集&#xff0c;还实现了实时推送功能&#xff0c;助力运营者精准把握用户反馈&a…