Flamingo论文介绍:把视觉特征向语言模型看齐

ops/2024/12/21 19:57:31/

今天介绍一篇经典的多模态论文,来自NeurIPS 2022的《Flamingo: a Visual Language Model for Few-Shot Learning》 ,论文地址:https://arxiv.org/pdf/2103.00020
在这里插入图片描述

文章目录

  • 一、Motivate
  • 二、Method
  • 三、模块细节:Perceiver Resampler 模块和Gated XATTN-DENSE 模块
    • 3.1 Perceiver Resampler 模块(感知重采样器)
    • 3.2 Gated XATTN-DENSE 模块(门控注意力模块)
  • 四、数据格式
  • 五、效果

一、Motivate

论文旨在桥接预训练好的视觉模型和语言模型,在不改变视觉模型和语言模型的基础上,做好两种模态模型的融合。简单来说这是一篇粘模型的工作,主要思想是将视觉模型的编码token向语言模型方向转化,使得语言模型能够直接利用视觉的token。

二、Method

Flamingo设计了两个模块达到多模态对齐, 一是 Perceiver Resampler 模块,这个模块将任意个数的输入的视觉(视频/图像)特征转换为固定个数的视觉tokens(64个);二是 Gated XATTN-DENSE 模块,将 Perceiver Resampler 输出的视觉 tokens,与新插入到 LM 中的层计算交叉注意力,从而将视觉信息注入到 LM 的生成过程中。过程中使用一个tanh做门控,使得融合更平滑缓慢。
在这里插入图片描述

三、模块细节:Perceiver Resampler 模块和Gated XATTN-DENSE 模块

3.1 Perceiver Resampler 模块(感知重采样器)

输入可以是图像也可以是视频,视频可以理解为多个帧的图像,在输入时,在时间维度上进行展开即可。以图像为例,输入图像后,通过一个视觉编码器(ResNet/NFNet/ViT)进行编码得到特征向量,展平,然后和64个可学习的token做交叉注意力,KV来自于视觉特征,Q来自于这64个可学习token(论文中叫做Learned latent queries),再经过多层 Attention + FFW 处理,这样这64个queries就能学习到来自视觉的特征信息,作为视觉表征。这里的 queries 就有点类似于 ViT 中的 cls token。在这里插入图片描述
视频过程可以理解为下图,其实就是把视频在时间维度上展开之后再铺平,后面的操作和图片一样。不管是视频还是图片,Learned latent queries的大小不会发生改变,都是64。
在这里插入图片描述

3.2 Gated XATTN-DENSE 模块(门控注意力模块)

Flamingo 将固定长度的视觉 query 注入到语言模型的方法称为 Gated xattn dense,其详细结构示意图及伪代码如下图所示。具体来说,在预训练好的 LM 的各层交替地插入一些随机初始化的交叉注意力层。所谓 gated门控,在每一新插入的层之后的残差链接之前添加一个 tanh gating,即 tanh(α) ,其中 α 是一个可学习的标量值,初始值为 0,从而保证初始化时的输出与原 LM 一致。
在这里插入图片描述

四、数据格式

Flamingo 的训练数据有三类:**图文交错数据集、图像文本对数据集和视频文本对数据集。**其中图文交错数据集是 Flamingo 数据的重点,其多模态 in-context learning (few-shot learning) 的能力可以说主要就是来自图文交错数据。作者收集了一个大规模图文交错数据集 M3W,通过解析 HTML 获取并标记图片在文本中的位置。

五、效果

可以通过论文中的示例图看到Flamingo的效果还是非常炸裂的,在多项任务上都有惊人的表现。当然Flaminggo也有一些待改进的地方,比如,Flamingo的输出只是单模态的文本
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/ops/143843.html

相关文章

短视频账号矩阵系统源代码-代码分享

PHP8.0 服务器安装准备 在进行抖音短视频矩阵系统源码部署前,安装 PHP8.0 服务器需要做好一些基础准备工作,这能让后续的安装过程更加顺利哦,下面就来给大家详细说一说。 首先,要了解服务器的配置要求呀。一般来说,服…

【集成部署打包】vue3+django集成部署打包成exe 文件

【集成部署打包】vue3django集成部署打包成exe 文件 文章目录 【集成部署打包】vue3django集成部署打包成exe 文件1. vue 打包部署配置2. django 打包部署配置3. 打包操作 总结 1. vue 打包部署配置 import { defineConfig } from vite import vue from vitejs/plugin-vue imp…

[Unity]【图形渲染】【游戏开发】Shader数学基础4-更多矢量运算

在计算机图形学和着色器编程中,矢量运算是核心的数学工具之一。矢量用于描述空间中的位置、方向、速度等各种物理量,并在图形变换、光照计算、纹理映射等方面起着至关重要的作用。本篇文章将详细讲解矢量和标量之间的乘法与除法、矢量的加法与减法、矢量的模与单位矢量、点积…

【Flutter_Web】Flutter编译Web第二篇(webview篇):flutter_inappwebview如何改造方法,变成web之后数据如何交互

前言 欢迎来到第二篇文章,这也是第二个难题,就是原有的移动端本身一些页面H5的形式去呈现(webview),例如某些需要动态更换内容的页面,某些活动页面、支付页面,不仅仅做页面呈现,还包…

Android 写排行榜,顶部前三

activity_step_rank.xml <?xml version"1.0" encoding"UTF-8"?> <FrameLayout android:layout_height"match_parent" android:layout_width"match_parent" android:id"id/fragment_parent" android:orientation…

进程间通信方式---消息队列(System V IPC)

进程间通信方式—消息队列&#xff08;System V IPC&#xff09; 文章目录 进程间通信方式---消息队列&#xff08;System V IPC&#xff09;消息队列1.消息队列进程间通信原理2.msgget 系统调用3.msgsnd 系统调用4.msgrcv 系统调用5.msgctl 系统调用6.函数使用案例7.实现生产者…

BOE(京东方)亮相世界显示产业创新发展大会 以创新科技全面引领行业风向标

2024年12月19日,世界显示产业创新发展大会在成都举办,来自全球的显示领域企业及行业专家汇聚一堂,共同探讨新一轮产业升级趋势及行业未来发展方向。BOE(京东方)总裁高文宝博士应邀出席大会,并在开幕式发表《屏之物联 聚智创新》主题演讲,引发现场嘉宾和观众强烈共鸣。大会期间,…

一文流:JVM精讲(多图提醒⚠️)

一文流系列是作者苦于技术知识学了-忘了,背了-忘了的苦恼,决心把技术知识的要点一笔笔✍️出来,一图图画出来,一句句讲出来,以求刻在🧠里。 该系列文章会把核心要点提炼出来,以求掌握精髓,至于其他细节,写在文章里,留待后续回忆。 目前进度请查看: :::info https:/…