Transfusion,Show-o and Show-o2论文解读

目录

一、Transfusion

1、概述

2、方法

二、Show-o

1、概述

2、方法

3、训练

三、Show-o2 

1、概述

2、模型架构

3、训练方法

4、实验


一、Transfusion

1、概述

        Transfusion模型应该是Show系列,Emu系列的前传,首次将文本和图像生成统一到单一Transformer架构中,并通过混合训练目标实现多模态协同学习。

        另外在Transfusion中提出了Omni-attention。

        整体来说,就是把文字和图片都转换成Transformer能理解的token,并通过一个巨大的Transformer来学习多模态,而图片其实中间先通过VAE转换为连续的patch序列,再通过Transformer,最后通过VAE解码。

2、方法

        训练目标:自回归语言建模损失LM loss(NTP loss)和图像的扩散模型损失DDPM loss。

        视觉部分的处理

        首先对256x256的原始图像通过预训练VAE压缩为32x32x8的潜在张量。之后通过分块,将潜在张量序列化为patch向量。

        之后通过加噪,对潜在向量添加高斯噪声,并经过一组U-Net下采样块,进一步压缩,然后输入到Transformer中。

        Transformer通过预测添加到图像里的噪声,注意力采用Omni-attention的方法。

        之后反复去噪,更新向量信息,并通过U-Net上采样还原维度信息,最终通过VAE解码器重建像素图像。

        

二、Show-o

1、概述

        视觉理解模型的发展,从单一的视觉理解,单一的图像生成,朝着视觉理解与生成统一的方向发展。但是以往的统一模型,要么是通过ViT+LLM,并将特征信息传输给diffusion用于生成图像(NExT-GPT,SEED-X),要么是通过tokenizer+LLM+de-tokenizer的方式(Chameleon),归根结底,都不是一个完整的Transformer架构。Show-o提出利用MAGVIT的分词器(本质上就是MaskGIT),实现单个Transformer同时处理理解和图像生成任务。

        但随之而来存在一个问题,文本是一个离散的tokens,图像则是一个连续的tokens,二者本身存在明显差异,也不容易集成到同一个网络中。同样以往的方法都是将文本利用text encoder后直接用LLM编码,图像则需要进入扩散模型中。

        Show-o为满足同时处理理解和生成任务,使用AR+diffusion混合建模,文本部分完全建立在以往LLM分词器上,保留文本推理的自回归建模能力。图像部分则采用MAGViT-v2,将图像离散化为256个token,实现与文本token的符号空间对齐。

2、方法

        受益于离散去噪扩散模型(D3PMs),区别于传统扩散模型只能用于连续信息,离散去噪扩散模型可以处理离散数据(文本)间的信息,比如VQDiffusion,Copliot4D,而MaskGIT继续简化模型,并应用到图像离散化数据中,Show-o则是建立在MAGVIT-v2上。

Image Tokenization

        利用MAGVIT-v2作为基础框架,训练一个无查找量化器,避免传统VQ-VAE的码本查询瓶颈。codebook size=8192,每张图片256x256被编码为16x16的离散tokens。由于MAGVIT-v2易于微调,所以未来将考虑衍生一个video tokenizer。(但是MAGVIT本身就是一个视频编码器啊,估计做了统一处理?),对于这个Image Tokenizer的架构,具体来说就是下图a,而b,c则是后续实验进行了对比。

Text tokenization

        Show-o基于预训练LLaMA,使用相同的tokenizer进行文本数据标记,不做修改。

LLM整体架构

        基于预训练LLM LLaMA设计,保留原始的Transformer结构,但是在每一个注意力层都添加QK-Norm操作,并新增8192个可学习嵌入向量,表示离散图像tokens。

        统一提示策略

        为了统一训练多模态理解和生成,设计了Unified Prompting 策略,对给定Image-text pair 通过tokenizer得到M个image tokens \bold{u}=\left \{ u_i \right \}_{i=1}^M和N个text tokens \bold{v}=\left \{ v_i \right \}_{i=1}^N

        并且根据下图的方法,设计为multi-modal understanding(多模态理解),visual generation(文生图),mixed-modality generation(混合模态生成)三种任务,其中右侧的 [MMU] 和 [T2I] 代表预定义的task token,表示执行什么具体的任务(生成文字or生成图片), [SOT] 和 [EOT] 代表text token的开始和结束token,[SOI] 和 [EOI] 代表image token的开始和结束token。

        Omni-Attention机制 

        对于Show-o注意力机制并不是Casual attention,也不是Full attention,而是一种全新的综合注意力机制,根据输入序列的格式,自适应地混合和更改。可以理解为在不同Image和Text混合下,Casual attention和Full attention范围内的一种自适应变换。

        其中Show-o通过Casual attention对sequence中的text tokens进行建模,通过Full attention对image tokens进行建模。

        所以鉴于上面的统一提示策略图,提出了四种任务的注意力机制变换。

(a)多模态理解:文本关注先前所有图像token,但是文本之间只关注以前的文本token

(b)文生图:图像token可以交互所有先前文本token,但是图像间互相全交互

(c)文本建模中:退化会casual attention

(d)混合模态生成:综合以上多种方法自适应调整。

3、训练

        训练目标

        训练目标包含LLaMA本身的自回归(Next-token-prediction)用于处理文本的语言建模损失,以及图像离散扩散建模的扩散损失(Mask-token-prediction)。

        对于给定M个image tokens \bold{u}=\left \{ u_i \right \}_{i=1}^M和N个text tokens \bold{v}=\left \{ v_i \right \}_{i=1}^N

        NTP:L_{NTP}=\sum_i logp_\theta(v_i|v_1,...,v_{i-1},u_1,...,u_M)

        MTP:对于输入的M个Image tokens \bold{u}=\left \{ u_i \right \}_{i=1}^M,首先以一定的比例(受 timestep控制)随机将图像token随机替换为[MASK] token,得到u_*,然后目标以unmasked区域和text token,重建原始图像的token。

                L_{MTP}=\sum_j logp_\theta(u_j|u_*,u_2,...,u_{*},u_M,v_1...,v_N)    

        基于classifier-free guidance做法,以一定的概率用空文本随机替换conditioned text token。   

        总损失为L=L_{MTP}+\alpha L_{NTP}

        训练策略

        训练分为三个阶段,由于缺乏了文本编码器模块,这对于文本与图像对齐产生了很大挑战,所以我们采用三阶段的方法。

        第一阶段,训练图像token嵌入(8192个新增向量)和像素依赖学习,通过纯文本RefinedWeb训练语言建模能力,图像分类库ImageNet-1K训练图像生成能力,图文对CC12M+SA1B训练基础图文对齐。

        第二阶段:跨模态深度对齐,将ImageNet的分类名,转为自然语言描述训练文本对齐能力,文本描述能力。

        第三阶段:高质量数据微调。利用高质量图文对LAION-aesthetics-12M,JourneyDB,训练文生图,另外通过LLaVA-Pretain-558K和LLaVA-v1.5-mix-665K训练复杂推理指令和多任务混合指令。

        推理策略

        对于文本的预测,直接给定图像或多模态问题,text token从具有更高置信度的预测token中自回归采样。

        对于图像的预测,通过输入文本信息(N个token),和M个token [MASK]作为输入,通过show-o为每一个[MASK] token预测一个logit l^t,其中t是时间步,每个[MASK]token的最终预测logit使用conditional logit l^t_c和masked token的unconditional logit l^t_u

        l^t=(1+w)l_c^t-wl_u^t,其中w是guidance scale

        下图为去噪过程,包含T步,其中每一步保留置信度更高的image token,并替换以往的[MASK] token,随后反馈到下一轮预测。

三、Show-o2 

1、概述

        Show-o2首次实现同一模型下原生统一地集成自回归建模和Flow matching机制,实现了大规模下对文本、图像和视频多模态理解和生成。

        对于以往的统一多模态模型(UMM)从两个方面进行分类,视觉表示类型和统一建模类型,对于视觉表示类型,要么是统一表示(Unified),要么是解耦模型(Und & Gen Representation)。对于统一建模类型,要么是原生统一的(Native Und & Gen),要么是组装专家模型(Assembling Tailored Models)。下图为所有相关模型的对比,Show-o2是第一个统一的原生多模态,支持视频的,AR+Diff架构的模型。

        Show-o2引入了CogVideoX中的特色,使用3D Causal VAE对视频进行编码 。在训练过程中同样采用分层次训练,先具备语言表达能力,在提升理解和图、视频生成能力。并且由于Show-o2训练数据集的多样性,也使得Show-o2可以理解中英文,同时可以在文档中穿插文字,图像,视频序列。

2、模型架构

        Show-o2模型由文本编码器+嵌入层、视觉编码器(3D Causal VAE)、双路径融合、多模态建模器LLM、语言头和流式头。

        文本编码器和多模态建模器没有具体说,基于Qwen2.5-1.5B-instruct和Qwen2.5-7B-instruct变体,并且LLM基于Show-o的Omni-Attention机制。

        视觉编码器:采用3D causal VAE编码器,生成latents,架构与Wan2.1模型中相同,空间压缩:432x432->27x27,支持8x空间压缩和4x时间压缩。

        双路径视觉融合:潜在空间加噪,双路径提取深度特征,融合特征三部分。

        潜在空间加噪:首先对潜在图像特征空间加噪处理。为了后续流匹配生成高质量图像、视频提供优化路径。(先对潜在空间x_1添加可控噪声,生成带噪状态x_t,之后进行语义层蒸馏和底层投影获得特征,最后通过流匹配预测速度场v_t=\frac{dx_t}{d_t},从纯噪声x_0出发,沿梯度v_t方向,积分生成x_1

        双路径结构:语义路径,利用基于SigLIP预先蒸馏的ViT块,提取高层语义特征(如物体类别,场景全局信息),之后通过预蒸馏损失,确保特征对齐,公式如下,就是将semantic layers对齐到SigLIP上。

                        L_{distil}=-\sum logsim(S(x_t),SigLIP(X))

        投影路径,则是通过一个轻量投影器,留下色彩,边界,细节等底层结构信息。

        融合机制STF:拼接双路径特征->RMSNorm归一化->两层MLP融合->输出统一表示\bold u

                        \bold u=STF(P(\bold x_t),S(\bold x_t))

        多模态建模器:token序列格式,[BOS] {Text} [BOI / BOV] {Image / Video} [EOI / EOV] {Text} · · · [EOS]。可以同时适应任意模态组合

        双重输出头语言头,通过NTP loss,预测文本token。流式头,通过流匹配预测速度场,并从噪声中,沿着速度场方向,重构图像/视频。流式头结构由DiT-style Transformer层+adaLN-zero时间步调制。

        总损失函数L=\alpha L_{NTP}+L_{FM}

3、训练方法

        现有的训练策略,一般分为三类。

        从头训练,Transfusion,无预训练基础,直接学习多模态对齐,并通过扩散建模实现视觉生成。但依赖大规模文本语料,语言知识容易退化。

        LLM或LMM微调,Show-o,EMU3,基于预训练LLaMA或视觉语言模型CLIP初始化,并添加扩散建模或自回归头,实现理解与生成。计算成本高,收敛慢。

        组装专家模型,NExT-GPT,SEED-X,独立训练理解模型BLIP和生成模型SD,通过Adaptor拼接模块,兼容性差,参数量冗余。

        具体Show-o2训练策略

        Show-o2提出两阶段训练,一阶段冻结预训练语言模型,训练特征提取部分。二阶段训练除VAE以外的全模型。

        Stage1:冻结预训练语言模型,Sematic layers通过SigLIP初始化,并且在带噪潜变量xt上优化,仅训练Projector,STF,Flow Head。数据采用66M图文对(扩展到512x512,1024x1024分辨率,来自CC12M,COYO,LAION-Aesthetic-12M,AI合成数据集,并且除合成数据集外,其他均使用ShareGPT4v重标注,多模态理解指令为DenseFusion-1M和LLaVA-Onevision子集),视频数据(Webvid,Pandas),交错数据(OmniCorpus)。

        Stage2:多模态对齐,全模型训练,联合优化语言头和Flow matching头,α=1.0,平衡两者。数据采用更高质量的文本对,视频数据,以及交错数据。并利用TextAtlas进行文本丰富图像增强文本渲染。

        相比于Show-o来说,Show-o采用随机噪声扩散,会导致高方差带来的图像生成随机性,另外,Show-o三阶段采样,也会造成上千步的采样时间。 

        不同模型大小

        训练过程中,先训练小模型1.5B,之后通过训练轻量MLP变换扩展到7B大模型,并复用除LLM部分,再次经过两阶段训练训7B模型。

       

4、实验

多模态理解

图像生成

        在GenEval和DPG-Bench上进行对比,在GenEval上甚至超过了SD3,但是最高的是Mogao。GenEval就是偏文生图的指标,DPG-Bench类似于动态编辑,推理能力的组合。

视频生成

        文生视频和图生视频,由于没有在运动上规范,所以运动上分数不高,但是描述能力很好。

推理能力

论文参考:

https://arxiv.org/abs/2506.15564

[2408.12528] Show-o: One Single Transformer to Unify Multimodal Understanding and Generation

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

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

相关文章

聊聊 Flutter 在 iOS 真机 Debug 运行出现 Timed out *** to update 的问题

最近刚好有人在问,他的 Flutter 项目在升级之后出现 Error starting debug session in Xcode: Timed out waiting for CONFIGURATION_BUILD_DIR to update 问题,也就是真机 Debug 时始终运行不了的问题: 其实这已经是一个老问题了&#xff0c…

《R for Data Science (2e)》免费中文翻译 (第1章) --- Data visualization(2)

写在前面 本系列推文为《R for Data Science (2)》的中文翻译版本。所有内容都通过开源免费的方式上传至Github,欢迎大家参与贡献,详细信息见: Books-zh-cn 项目介绍: Books-zh-cn:开源免费的中文书籍社区 r4ds-zh-cn …

【机器学习【9】】评估算法:数据集划分与算法泛化能力评估

文章目录一、 数据集划分:训练集与评估集二、 K 折交叉验证:提升评估可靠性1. 基本原理1.1. K折交叉验证基本原理1.2. 逻辑回归算法与L22. 基于K折交叉验证L2算法三、弃一交叉验证(Leave-One-Out)1、基本原理2、代码实现四、Shuff…

CodeBuddy三大利器:Craft智能体、MCP协议和DeepSeek V3,编程效率提升的秘诀:我的CodeBuddy升级体验之旅(个性化推荐微服务系统)

🌟 嗨,我是Lethehong!🌟 🌍 立志在坚不欲说,成功在久不在速🌍 🚀 欢迎关注:👍点赞⬆️留言收藏🚀 🍀欢迎使用:小智初学计…

Spring Boot 整合 Redis 实现发布/订阅(含ACK机制 - 事件驱动方案)

Spring Boot整合Redis实现发布/订阅&#xff08;含ACK机制&#xff09;全流程一、整体架构二、实现步骤步骤1&#xff1a;添加Maven依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

Sklearn 机器学习 线性回归

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Sklearn 机器学习线性回归实战详解 线性回归是机器学习中最基础也最经典的算法之一,…

AJAX案例合集

案例一&#xff1a;更换网站背景JS核心代码<script>document.querySelector(.bg-ipt).addEventListener(change, e > {//选择图片上传&#xff0c;设置body背景const fd new FormData()fd.append(img, e.target.files[0])axios({url: http://hmajax.itheima.net/api/…

vscode环境下c++的常用快捷键和插件

本文提供一些能够在vscode的环境下&#xff0c;提高c代码书写效率的快捷键&#xff0c;插件以及设置等等。 快捷键ctrlshiftx&#xff1a; 弹出插件菜单ctrlshiftp&#xff1a;弹出命令面板可以快捷执行一些常见命令插件安装这个后&#xff0c;可以按住ctrl跳转到方法的实现&am…

React + ts 中应用 Web Work 中集成 WebSocket

一、Web Work定义useEffect(() > {let webSocketIndex -1const websocketWorker new Worker(new URL(./websocketWorker.worker.ts?worker, import.meta.url),{type: module // 必须声明模块类型});//初始化WEBSOCKET&#xff08;多个服务器选择最快建立连接…

RabbitMQ面试精讲 Day 3:Exchange类型与路由策略详解

【RabbitMQ面试精讲 Day 3】Exchange类型与路由策略详解 文章标签 RabbitMQ,消息队列,Exchange,路由策略,AMQP,面试题,分布式系统 文章简述 本文是"RabbitMQ面试精讲"系列第3天内容&#xff0c;深入解析RabbitMQ的核心组件——Exchange及其路由策略。文章详细剖析…

深入解析Hadoop MapReduce Shuffle过程:从环形缓冲区溢写到Sort与Merge源码

MapReduce与Shuffle过程概述在大数据处理的经典范式MapReduce中&#xff0c;Shuffle过程如同人体血液循环系统般连接着计算框架的各个组件。作为Hadoop最核心的分布式计算模型&#xff0c;MapReduce通过"分而治之"的思想将海量数据处理分解为Map和Reduce两个阶段&…

Kafka MQ 消费者

Kafka MQ 消费者 1 创建消费者 在读取消息之前,需要先创建一个KafkaConsumer对象。创建KafkaConsumer对象与创建KafkaProducer对象非常相似—把想要传给消费者的属性放在Properties对象里。本章后续部分将深入介绍所有的配置属性。为简单起见,这里只提供3个必要的属性:boo…

人工智能——Opencv图像色彩空间转换、灰度实验、图像二值化处理、仿射变化

一、图像色彩空间转换&#xff08;一&#xff09;颜色加法1、直接相加1、直接相加2、调用cv.add()函数进行饱和操作 在OpenCV中进行颜色的加法&#xff0c;我们说图像即数组&#xff0c;所以从数据类型来说我们可以直接用numpy的知识来进行直接相加&#xff0c;但是存在…

【JToken】JToken == null 判断无效的问题

if (innerNode null) {continue; }Debug.Log($"toNode type: {node["toNode"]?.GetType()}");发现这个JToken 无法正确的判断 是否为 null&#xff0c;再排除逻辑问题后&#xff0c;我基本能确定的是 这个对象 不返回的不是真正的C# NULL 输出类型后是 N…

C++基于libmodbus库实现modbus TCP/RTU通信

今天看到了一个参考项目中用到了modbus库&#xff0c;看着使用很是方便&#xff0c;于是记录一下。后面有时间了或者用到了再详细整理。 参考&#xff1a;基于libmodbus库实现modbus TCP/RTU通信-CSDN博客 一、介绍 1.1库文件包含 1.2最简单的使用 本人在QT6.5下&#xff0…

【原创】微信小程序添加TDesign组件

前言 TDesign 是腾讯公司推出的一款UI界面库,至于腾讯的实力嘛,也不用多说了。 官网:https://tdesign.tencent.com/ 源码:https://github.com/Tencent/tdesign 目前处于活跃状态,发文前5日,该库仍在更新中… 遇到的问题 虽然腾讯为微信小程序开发提供了一个讨论的论坛,…

Vue的路由模式的区别和原理

路由模式 Vue 的路由模式指的是 Vue Router 提供的 URL 处理方式&#xff0c;主要有两种&#xff1a;Hash 模式和History 模式。 Hash模式 在 Vue Router 中&#xff0c;默认使用的是 hash 模式&#xff0c;即 mode: hash。如果想要使用 history 模式&#xff0c;可以设置 mode…

通过TPLink路由器进行用户行为审计实战

用户行为审计是指对用户在网络平台上的行为进行监控和记录&#xff0c;以便对其行为进行分析和评估的过程。随着互联网的普及和发展&#xff0c;用户行为审计在网络安全和数据隐私保护方面起到了重要的作用。 用户行为审计可以帮助发现和预防网络安全威助。通过对用户的行为进行…

MYSQL 第一次作业

新建产品库mysql> CREATE DATABASE mydb6_product;使用产品库mysql> USE mydb6_product;创建employess表mysql> CREATE TABLE employees (-> id INT PRIMARY KEY,-> name VARCHAR(50) NOT NULL,-> age INT,-> gender VARCHAR(10) NOT NULL DEFAULT unknow…

暑期前端训练day7——有关vue-diff算法的思考

前言 今天分享一下我对vue的diff的探究&#xff0c;跟我一起深入底层&#xff0c;看一看vue是怎么进行diff的&#xff0c;它的复杂度如何&#xff0c;为什么性能这么高&#xff0c;diff的目标是尽可能的复用原来的真实dom&#xff0c;减少删除真实dom和创建真实的dom的开销&…