Token Compression for Vision Domain_Generation

文章目录

  • Image Generation
    • Token Merging for Fast Stable Diffusion, CVPRW 2023.
    • Token Fusion: Bridging the Gap between Token Pruning and Token Merging, WACV 2024
    • ToDo: Token Downsampling for Efficient Generation of High-Resolution Images, IJCAIw 2024.
    • Turbo: Informativity-Driven Acceleration Plug-In for Vision-Language Models, ECCV 2024.
    • Importance-Based Token Merging for Efficient Image and Video Generation, arXiv 2025.
    • Token Merging for Training-Free Semantic Binding in Text-to-Image Synthesis, NeurIPS 2024.
  • Video Generation
    • Object-Centric Diffusion for Efficient Video Editing, ECCV 2024.

Image Generation

Token Merging for Fast Stable Diffusion, CVPRW 2023.

paper|code

ToMe 能显著提高图像生成的速度,同时又不会影响质量。此外,其优点还能与现有的方法(如 xFormers [8])相叠加。借助 ToMe 和 xFormers 的结合,在一台 4090 显卡上,仅用 28 秒就生成了这幅 2048×2048 的图像,比原始模型快了 5.4 秒。
在这里插入图片描述
通过将 ToMe 应用于Stable Diffusion来进行测试。初始应用下,它可以将扩散速度提高多达 2 倍,并减少 4 倍的内存消耗,但生成的图像质量却大打折扣(图 3)。为了解决这个问题,我们引入了新的token分区技术(图 5),并进行了多次实验来决定如何应用 ToMe(表 3)。结果是,我们能够保持 ToMe 的速度并提高其内存效益,同时生成的图像与原始模型极其接近。此外,这种速度提升与诸如 xFormers(图 1)等实现方式相结合。
在这里插入图片描述

在这里插入图片描述
对源数据(src)和目标数据(dst)进行分区。ToMe将源数据中的标记合并到目标数据中。(a)默认情况下,ToMe 交替使用源数据和目标数据的标记。在我们的例子中,这会导致目标数据形成规则的列,从而产生不良的输出(鱼的形状不佳)。(b)我们可以通过使用二维步幅(例如 2 2)对目标数据进行采样来改进生成过程,但这仍然形成了规则的网格。(c)我们可以通过随机采样来引入不规则性,但这可能会导致目标数据标记出现不期望的聚集现象。(d)因此,我们在每个 2x2 区域中随机选择一个目标数据标记。

在这里插入图片描述

在提出的方法中,Attention以及MLP前后均有一次合并以及拆分,这是因为U-Net的核心是编码器(下采样路径)和解码器(上采样路径)之间的跳跃连接。编码器某一层的输出特征图,需要与解码器对应层的特征图进行拼接,尺寸必须匹配。
在这里插入图片描述
Inspiration:根据任务及模型特点 1. 设计新的token分区技术。2. 模型里的哪些block是需要ToMe的?

Token Fusion: Bridging the Gap between Token Pruning and Token Merging, WACV 2024

paper|code
Token Fusion(ToFu),这是一种融合了 Token 剪枝和 Token 合并优点的方法。

  1. 当模型表现出对输入插值的敏感性时,token剪枝被证明是有利的,而当模型表现出接近对输入的线性响应时,token合并是有效的。
  2. 解决了平均合并的局限性,它不保留内在特征范数,导致分布偏移。为了缓解这种情况,引入了 MLERP( 球面线性插值)合并,这是 SLERP(SLERP的多线性扩展)技术的一种变体,专门用于合并多个令牌,同时保持常数分布。
  1. 模型能学习A和B,但是学习不了介于A和B之间的对象,这就是对输入插值敏感,此时应该剪掉其中某个对象。模型对学习范围内的对象满足可加性和齐次性,这就是表现出线性响应,此时应该合并其中某些对象。
  2. 首先要清晰范数代表什么,在向量空间中,范数(或模长)||t|| 代表了向量的“长度”或“强度”。在深度学习中,特征向量的范数往往也编码了重要的信息,比如特征的显著性。模型在训练时,看到的都是范数在某个范围内(比如接近1)的Token。而经过多层平均合并后,深层网络的Token范数变得越来越小。这就是分布偏移,测试时的数据分布与训练时不同了。

顶图:两个输入点 x1 (蓝色) 和 x2 (红色)连接它们的彩色直线代表了 x1 和 x2 之间的线性插值 (linear interpolation)。紫色星号代表了 x1 和 x2 的简单平均值
底层四张图:分别展示了将顶图中的整条彩色线作为输入,送入ViT模型中不同深度(第1到第4层)的MLP模块(表示为f1到f4)后,得到的输出是什么样的。
在这里插入图片描述
(左)在 ViT 主干网络内部的令牌融合集成。每个 Transformer 块都包含一个令牌缩减操作,用符号 R 表示。在该图示中,R 在多层感知机(MLP)之前被调用。通过二分软匹配(BSM),每个 R 都会识别出相似度最高的 r 个索引,例如,在此图示中 r = 2。值得注意的是,层的深度决定了所选择的合并策略:早期层使用剪枝合并,而后期层则过渡到平均(或 MLERP)合并。这种动态方法加快了 ViT 的运行速度,同时仍能保留完整令牌推理的大部分性能。(右)将两个特征(x1 和 x2)组合在一起的不同合并方法的可视化。所有方法都可以适应合并更多的特征。
在这里插入图片描述

ToDo: Token Downsampling for Efficient Generation of High-Resolution Images, IJCAIw 2024.

paper|code

图像中的相邻像素往往与它们的邻近像素具有相似的值。因此,我们采用了降采样技术来减少Token数量,类似于图像处理中的网格式采样。

原始的 ToMe 方法基于在输入到注意力层之前通过合并相似的向量来减少计算量。这一过程包括计算一个相似性矩阵,其中相似度最高的token会被合并。随后,解合并过程旨在将合并后的token信息重新分配回原始token位置。
然而,这种方法引入了两个关键的瓶颈:

  1. 计算复杂度:相似性矩阵的计算(O(n²)复杂度)本身就很昂贵,尤其是在整个过程的每个步骤中都需要进行计算的情况下。
  2. 质量下降:ToMe 中固有的合并-解合并循环会导致图像细节的显著损失,尤其是在合并比例较高的情况下。

在这里插入图片描述
具体实现:
Optimized Merging Through Spatial Contiguity. ToMe计算所有token对内容的相似度,认为相似的token应该被合并,复杂度O(n²)。ToDo认为空间上相邻的令牌就是相似的,使用下采样计算,复杂度O(n)。
Enhanced Attention Mechanism with Downsampling. 将合并(下采样)操作直接嵌入到了注意力计算的内部。保持 Q (Queries) 不变,对 K (Keys) 和 V (Values) 进行下采样:
在这里插入图片描述
因为 Q 是完整的,所以注意力机制的输出结果仍然是针对所有原始令牌位置的。每个原始令牌 q 会根据它与下采样后的 D(K) 的关系,去有选择地从下采样后的 D(V) 中提取信息。这个过程是“多对少”的信息聚合,而不是粗暴的“反向合并”,因此自然地将信息聚合到了原始分辨率上,保留了图像的完整性。

Turbo: Informativity-Driven Acceleration Plug-In for Vision-Language Models, ECCV 2024.

paper|code
设计了一个由信息度指导的即插即用 Turbo 模块应用于VLM。信息度考虑了两个关键因素:相互冗余和语义价值。具体来说,前者评估顺序token之间的数据重复;而后者则根据每个token对整体语义的贡献来评估。因此,具有高信息度的 Token 具有较少的冗余和更强的语义。
在这里插入图片描述

  1. 信息度计算。采用了二分图匹配策略,计算每个token 与其他token的余弦相似度,最大的相似度作为互冗余度R。token的语义价值 A 定义为 [CLS] token 在注意力计算中分配给 xi 的注意力权重。两者融合得到信息度
    在这里插入图片描述

  2. 根据下游任务选择合并策略
    VLMs理解对像素级的精细信息要求不高
    1)Atten之后执行Turbo
    2)计算E并排序
    3)选择分数最低的 r 个 token将它们合并到它们各自最相似的 token 中
    VLMs生成对像素级的精细信息要求高
    1)在进入 VLM 的每一个 block 之前,Turbo 模块根据信息度 E 合并冗余的 token,缩短序列长度。
    2)合并后的token进入attn计算
    3)在 block 计算完成之后,Turbo 模块需要将之前合并的 token “恢复”回来,以保持序列的原始长度和结构,供下一层使用或最终生成图像。

Importance-Based Token Merging for Efficient Image and Video Generation, arXiv 2025.

paper|code

在合并过程中保留高信息的token——那些对于语义保真度和结构细节至关重要的令牌——会显著提高样本质量,产生更精细的细节和更连贯、更逼真的生成结果。提出了一种基于重要性的token合并方法,在计算资源分配中优先考虑最关键的token
在这里插入图片描述

  1. 使用classifier-free guidance计算每块token的重要性。
  2. 构造important token pool。直接选择Top-K个最重要token作为合并目标(即“锚点”)存在两个问题:冗余和不重要的独立token。重要的token在空间上接近且特征相似,锚点集中产生冗余,不重要的独立token与其他token无法合并,导致计算浪费。
  3. Token Merging Process. 随机选择目标token dst,确定源token src,保留独立token ind,将其他token都合并到dst中

CFG的本质
最终的噪声预测 = 无条件的噪声预测 + w * (有条件的噪声预测 - 无条件的噪声预测)

Token Merging for Training-Free Semantic Binding in Text-to-Image Synthesis, NeurIPS 2024.

paper|code

现有的模型难以将文本中的对象与其属性或相关子对象正确关联,表现为错误的绑定或者属性的丢失。我们将这一问题称为语义绑定(Semantic Binding)。比如当提示词为“一只戴着帽子的狗和一只戴着太阳镜的猫”时,生成的图像可能会出现帽子戴在猫头上,太阳镜戴在狗头上的错误情况。
在这里插入图片描述

在这里插入图片描述

Video Generation

Object-Centric Diffusion for Efficient Video Editing, ECCV 2024.

paper|code

如何在不牺牲视频编辑质量的前提下,大幅提升扩散模型进行视频编辑的速度并降低计算成本?

Motivation

  1. 高昂的计算和内存成本:1)扩散反演 (Diffusion Inversion):先将原始视频“编码”回噪声,并保存大量的中间激活和注意力图,这会占用巨大的存储空间。2)跨帧注意力 (Cross-frame Attention):在生成时,让每一帧的注意力计算都参考其他帧,这导致计算量随着帧数的增加而急剧增长。3)大量的采样步数 (Sampling Steps):高质量的生成需要很多次的去噪迭代,非常耗时。
  2. 计算资源分配不合理:现有模型对前景和背景一视同仁,将大量的计算资源浪费在了不那么重要的背景区域上。

以物体为中心 (Object-Centric),将计算资源智能地、不均衡地分配给前景和背景,从而实现大幅加速。

Method
Object-Centric Sampling.

  1. 分离前景和背景: 首先利用一个前景蒙版 (foreground mask, m) 将潜在空间的噪声图 z_t 分离成前景部分 z_f 和背景部分 z_b。
  2. 差异化采样: 对前景和背景采用不同的去噪策略。前景区域: 使用正常的、较多的采样步数进行去噪,以保证编辑质量。背景区域: 使用一个加速因子 φ,大幅减少采样步数(例如,前景走3步,背景才走1步),因为背景通常不需要编辑或改动很小。
  3. 融合与平滑: 在去噪过程的某个中间时间点 T_γ(例如,总步数的25%处),将前景和背景的潜在表示重新合并,并用剩余的少量步数对整个图像进行联合去噪,以平滑两者边界处的伪影,保证最终结果的自然过渡。

Object-Centric Token Merging.
加权相似度引导 ToMe:

  1. 检查待合并的token是否属于前景
  2. 计算它与目标token的相似度 Sim(x_i, x_j) 时,引入一个权重因子 η。背景相似度计算不变,前景相似度乘η。
  3. spatio-temporal volumes. 同时在空间和时间维度上合并令牌,以最大化地利用视频中的时序冗余。

在这里插入图片描述

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

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

相关文章

React封装过哪些组件-下拉选择器和弹窗表单

背景(S - Situation):在某活动管理系统中,前端页面需要支持用户选择“要配置的当前活动”,并提供「新增」「编辑」功能,操作内容包括填写活动名称、ID、版本号等字段。原始实现逻辑分散、复用性差&#xff…

多租户架构下的多线程处理实践指南

在现代 SaaS 系统中,多租户架构(Multi-Tenant Architecture)已成为主流。然而,随着系统性能要求的提升和业务复杂度的增加,多线程成为不可避免的技术手段。但在多租户环境下使用多线程,容易引发数据错乱、租…

MyBatis插件机制揭秘:从拦截器开发到分页插件实战

一、拦截器体系架构解析 1.1 责任链模式在MyBatis中的实现 MyBatis通过动态代理技术构建拦截器链&#xff0c;每个插件相当于一个切面&#xff1a; // 拦截器链构建过程 public class InterceptorChain {private final List<Interceptor> interceptors new ArrayList<…

百度文心一言开源ERNIE-4.5深度测评报告:技术架构解读与性能对比

目录一、技术架构解读1.1、ERNIE 4.5 系列模型概览1.2、模型架构解读1.2.1、异构MoE&#xff08;Heterogeneous MoE&#xff09;1.2.2、视觉编码器&#xff08;Vision Encoder&#xff09;1.2.3、适配器&#xff08;Adapter&#xff09;1.2.4、多模态位置嵌入&#xff08;Multi…

Matplotlib 模块入门

Python 中有个非常实用的可视化库 ——Matplotlib。数据可视化是数据分析中不可或缺的环节&#xff0c;而 Matplotlib 作为 Python 的 2D 绘图库&#xff0c;能帮助我们生成高质量的图表&#xff0c;让数据更直观、更有说服力。接下来&#xff0c;我们将从 Matplotlib 的概述、…

LeetCode 3169.无需开会的工作日:排序+一次遍历——不需要正难则反,因为正着根本不难

【LetMeFly】3169.无需开会的工作日&#xff1a;排序一次遍历——不需要正难则反&#xff0c;因为正着根本不难 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-days-without-meetings/ 给你一个正整数 days&#xff0c;表示员工可工作的总天数&#xff08;从第…

VUE3 el-table 主子表 显示

在Vue 3中&#xff0c;实现主子表&#xff08;主从表&#xff09;的显示通常涉及到两个组件&#xff1a;一个是主表&#xff08;Master Table&#xff09;&#xff0c;另一个是子表&#xff08;Detail Table&#xff09;。我们可以使用el-table组件来实现这一功能。这里&#x…

张量数值计算

一.前言前面我们介绍了一下pytorch还有张量的创建&#xff0c;而本章节我们就来介绍一下张量的计算&#xff0c;类型转换以及操作&#xff0c;这个是十分重要的&#xff0c;我们的学习目标是&#xff1a;掌握张量基本运算、掌握阿达玛积、点积运算 掌握PyTorch指定运算设备。Py…

部署项目频繁掉线-----Java 进程在云服务器内存不足被 OOM Killer 频繁杀死-----如何解决?

一、查询系统日志grep -i "java" /var/log/messages执行这条命令&#xff0c;检查系统日志里是否有 Java 进程被 OOM Killer 杀死的记录。日志中反复出现以下内容&#xff1a;Out of memory: Killed process 3679325 (java) total-vm:2947000kB, anon-rss:406604kB..…

【保姆级教程】基于anji-plus-captcha实现行为验证码(滑动拼图+点选文字),前后端完整代码奉上!

前言 验证码作为Web应用的第一道安全防线&#xff0c;其重要性不言而喻。但你是否还在为以下问题烦恼&#xff1a; 传统字符验证码用户体验差&#xff0c;识别率低&#xff1f;验证码安全性不足&#xff0c;轻易被爬虫破解&#xff1f;前后端对接繁琐&#xff0c;集成效率低&…

HTML-八股

1、DOM和BOM DOM是表示HTML或者XML文档的标准的对象模型&#xff0c;将文档中每个组件&#xff08;元素、属性等&#xff09;都作为一个对象&#xff0c;使用JS来操作这个对象&#xff0c;从而动态改变页面内容&#xff0c;结合等。 DOM是以树型结构组织文档内容&#xff0c;树…

ADI的EV-21569-SOM核心板和主板转接卡的链接说明

ADI提供给客户很多DSP的核心板&#xff0c;比如EV-21569-SOM&#xff0c;EV-21593-SOM&#xff0c;EV-SC594-SOM等&#xff0c;非常多&#xff0c;但是没有底板&#xff0c;光一个核心板怎么用呢&#xff1f;于是我就在想&#xff0c;我的21569评估板就有通用底板&#xff0c;能…

基于 Redisson 实现分布式系统下的接口限流

在高并发场景下&#xff0c;接口限流是保障系统稳定性的重要手段。常见的限流算法有漏桶算法、令牌桶算法等&#xff0c;而单机模式的限流方案在分布式集群环境下往往失效。本文将介绍如何利用 Redisson 结合 Redis 实现分布式环境下的接口限流&#xff0c;确保集群中所有节点的…

ubuntu播放rosbag包(可鼠标交互)

1 前言 众所周知&#xff0c;ubuntu中播放bag包最主要的工具是rviz&#xff0c;然而rviz有一个无法忍受的缺陷就是不支持鼠标回滚&#xff0c;并且显示的时间的ros时间&#xff0c;不是世界时间&#xff0c;因此在遇到相关bug时不能与对应的世界时间对应。基于以上&#xff0c…

一文理解缓存的本质:分层架构、原理对比与实战精粹

&#x1f4d6; 推荐阅读&#xff1a;《Yocto项目实战教程:高效定制嵌入式Linux系统》 &#x1f3a5; 更多学习视频请关注 B 站&#xff1a;嵌入式Jerry 一文理解缓存的本质&#xff1a;分层架构、原理对比与实战精粹 “缓存让系统飞起来”——但每一层缓存有何不同&#xff1f;…

【离线数仓项目】——电商域DIM层开发实战

摘要本文主要介绍了电商域离线数仓项目中DIM层的开发实战。首先阐述了DIM层的简介、作用、设计特征、典型维度分类以及交易支付场景下的表示例和客户维度表设计。接着介绍了DIM层设计规范&#xff0c;包括表结构设计规范、数据处理规范以及常见要求规范。然后详细讲解了DIM层的…

Unreal Engine 自动设置图像

void UYtGameSettingSubsystem::RunHardwareBenchmark(int32 WorkScale, float CPUMultiplier, float GPUMultiplier) {UGameUserSettings* UserSettings UGameUserSettings::GetGameUserSettings();if (UserSettings){// 运行基准测试&#xff08;异步操作&#xff0c;可能需…

使用Spring Boot和PageHelper实现数据分页

在Spring Boot项目中&#xff0c;利用PageHelper插件可以轻松实现数据分页功能。以下是具体的实现步骤和代码示例。添加依赖在项目的pom.xml文件中添加PageHelper和MyBatis的依赖。<dependency><groupId>com.github.pagehelper</groupId><artifactId>p…

【IT-Infra】从ITIL到CMDB,配置管理,资产管理,物理机与设备管理(含Infra系列说明)

【IT-Infra】从ITIL到CMDB&#xff0c;配置管理&#xff0c;资产管理&#xff0c;物理机与设备管理&#xff08;含Infra系列说明&#xff09; 文章目录序&#xff1a;Infra系列说明1、ITIL 信息技术基础架构库&#xff08;起源&#xff09;2、CMDB 配置管理数据库&#xff08;I…

vue使用printJS实现批量打印及单个打印 避免空白页

本文介绍了使用print-js库实现批量打印功能的实现方法。通过安装print-js依赖后,创建一个batchPrintAction方法,该方法接收选中行数据,生成包含多个标签页的HTML字符串。每个标签页以表格形式展示6个数据字段,并设置了80mm50mm的标签尺寸。方法使用PrintJS进行打印,配置了…