多模态视觉token压缩方法详解

简要

为提升MLLM对图像、视频的理解能力,最有效的方式就是提升visual token的个数,随之而来的则是训练、推理耗时的增加。因此,对视觉token进行压缩以提取最有用的信息至关重要。下文基于个人理解,进行梳理。

已知技术方案概览:

  • • 1.线性映射:采用多层MLP进行压缩,如Qwen2-VL中

  • • 2.下采样:采用Pooling(可以是不同的pool采样方式),如LLaVA-OneVision

  • • 3.Pixel-Shuffle:用通道换空间,如InternVL1.1及后续系列

  • • 4.Q-former:新增learned query实现视觉token压缩,如Flamingo、BLIP2

  • • 5.模型动态压缩:利用模型指导视觉token采样,如FocusLLaVA、MustDrop

  • • 6.注意力改造:改造注意力机制,不直接压缩token,但仍能达到提升推理速度的目的,如mPlug-owl3

其中,线性映射、下采样方法较易理解,不展开赘述

Pixel-Shuffle

该方案是用通道换空间,即减少空间增加通道,数据维度变化:[N, W, H, C] -> [N, Ws, Hs, C//(s^2)](当s>1时,则实现上采样;当s<1时,则实现下采样)

在InternVL1.1[1],利用此方案,将视觉token从1024压缩到256个(分辨率448x448,patch_size 14,s=0.5),代码[2]片段:

def pixel_shuffle(self, x, scale_factor=0.5):
    n, w, h, c = x.size()
    # N, W, H, C --> N, W, H * scale, C // scale
    x = x.view(n, w, int(h * scale_factor), int(c / scale_factor))
    # N, W, H * scale, C // scale --> N, H * scale, W, C // scale
    x = x.permute(0, 2, 1, 3).contiguous()
    # N, H * scale, W, C // scale --> N, H 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值