QuadTok:图像token不再一刀切,四叉树怎么做到按需分配?
你有没有想过,为什么给一张几乎全是蓝天的照片和一张挤满人群细节的照片,分配同样数量的"信息单元",是一件挺荒唐的事?这正是图像生成领域里一个长期被忽略的问题。几乎所有主流的图像生成模型,不管是早期的VQ-VAE还是后来红极一时的LlamaGen,都在做同一件事:把图片切成固定数量的格子,不管格子里是晴朗的天空还是繁..
一张照片里几乎全是蓝天,另一张挤满了人群和细节,却要给它们分配同样多的"信息单元",这事想想就不太合理。
图像生成领域长期忽略的正是这个问题。从早期的VQ-VAE到后来红极一时的LlamaGen,主流图像生成模型做的几乎是同一件事:把图片切成固定数量的格子,格子里是晴天还是繁复花纹都不管,一律给同样的"token"——也就是模型理解图像的基本单位。加州大学圣地亚哥分校的这篇论文,盯上的就是这个"一刀切"。
**核心问题:均匀分配,到底哪里不对**
假设你是编辑,要给一本画册配文字说明。一页是纯色背景的封面,另一页是故宫全景的工笔画,你会给这两页写同样多的字吗?显然不会。纯色封面一句话可能就交代完了,工笔画写上千字也未必讲得清细节。
图像生成模型过去面对的,正是这种"一视同仁"的尴尬。
传统2D网格式Tokenizer(视觉分词器,作用是压缩图片、把它变成模型能处理的离散符号序列)处理一张256×256的图片时,一律切成256个token,图片内容不同也一样。打个比方,一篇文章不论讲什么,都硬性规定每页写满300个字:内容简单的被灌水凑数,内容复杂的反倒被砍掉细节。
后来有人换了思路:绕开2D网格,用1D序列。TiTok、FlexTok这类方法把图片转成可变长度的token串,长度随图片复杂度伸缩。这确实治好了“胖瘦不均”的老毛病,可新麻烦跟着来了:序列里的token跟图片上的具体区域之间,再也对不上号了。
好比把一本书打乱重装,页数能按内容多少灵活调整,可你再没法说清“第五页对应书里哪个章节”。空间对应关系一旦丢掉,图片细节的还原精度会直接受损,这类方法也就很难用到需要精确空间定位的下游任务上。
论文作者看得很清楚:真正缺的是一条中间路线,既能像1D序列那样灵活伸缩,又能像2D网格那样保住空间对应关系。他们拿出的方案,是一种经典数据结构——四叉树(QuadTree,把二维空间递归分成四个象限的树形结构)。
**四叉树怎么解决这个矛盾**
四叉树在计算机图形学里已经用了几十年,道理不复杂:一块区域简单,就不再往下切;复杂,就分成四块,每块再按自己的复杂程度决定切不切。
论文提出的QuadTok,正是把这套老思路搬进了视觉Tokenizer。它默认用两层结构:第一层是8×8的粗粒度网格,对应图片的整体布局;某个粗粒度区域内容复杂,就把它展开成2×2共四个子节点,对应16×16网格里更细的区域。
这里有个技术细节值得展开讲讲。QuadTok并不是简单地把图片切块了事,而是先用一个ViT编码器(Vision Transformer,一种把图片切成小块、用注意力机制处理的视觉模型架构)提取出整张图片的密集特征。
接下来,每个四叉树节点分到一个可学习的“指令token”,用来记住自己在树里的层级和空间位置。这些指令token再去“读取”ViT提取的全局特征,借注意力机制把对应区域的视觉信息“抓”过来,变成该节点的特征表达。
这个过程被称为Aggregator(聚合器,论文中用于把密集的ViT特征汇聚成四叉树节点特征的Transformer模块)。
打个比方,这像开一场部门汇报会。每个部门代表(指令token)事先清楚自己要汇报哪块业务(哪片空间区域、什么层级的细节),然后到公司的大数据库(ViT提取的全局特征)里,专门摘出跟自己业务相关的信息,整理成汇报内容。少了这套“指令token”机制,每个节点就不知道自己该管哪块区域,信息抓取会乱成一锅粥,谁都说不清自己代表图片的哪个部分。
节点特征拿到手,还要过一道向量量化(Vector Quantization,把连续特征向量映射到离散“码本”里最近的那一条,得到离散符号),变成一串串离散的token编号。这串编号,就是QuadTok给这张图片最终发的“身份证”。
有了离散token之后,还得能把图片重建回来。QuadTok的解码过程也延续了四叉树的层级思路:先用粗粒度的level-1 token恢复出图片的整体轮廓,再用细粒度的level-2 token在对应区域里添加细节。这个过程被称为Hierarchical Decoding(层级解码,按照从粗到细的顺序,逐层叠加细节来重建图像)。
这像画素描:先用大笔触勾出人物整体轮廓和明暗关系,大结构确认没问题,再换细笔尖刻画五官和衣服褶皱。反过来先抠细节再补轮廓,很容易局部画得精细、整体比例却失调。
**谁来决定该不该展开:复杂度引导机制**
四叉树这个结构本身只是提供了"可以精细化"的能力,但谁来判断哪块区域值得精细化呢?这是论文里第二个关键问题。
作者们给出的方案叫Region-Wise Complexity Guidance(区域级复杂度引导,一种通过比较展开前后的重建效果差异,来判断某片区域是否值得精细化的数据驱动策略)。
做法挺巧。同一张图片,随机挑一半粗粒度区域展开成精细节点,构造出一棵“探测树”;再构造它的互补树,把原本没展开的那一半区域展开。这样每个区域都恰好经历一次“展开”和一次“不展开”,而且两边同时进行,效率很高。
随后,研究者用这两棵树各自重建图片,再与原图比对,逐区域计算LPIPS(Learned Perceptual Image Patch Similarity,一种衡量图片感知相似度的指标,比像素级的MSE更贴近人眼的主观感受)损失差异。某块区域展开后LPIPS损失明显下降,就说明这块区域"展开有用",论文称之为重建收益(reconstruction benefit)。只有收益超过阈值τ的区域,才会真正被展开成精细节点。
说白了,这套机制就是让模型自己去"试错":哪些区域精细化之后画质提升明显,哪些区域精细化了也没多大用,试过才知道。
这跟装修房子时请设计师评估预算有点像。预算有限,设计师不会把每个房间都砸大钱,而是先评估:客厅是待客的主要场所,升级建材带来的观感提升很明显,值得多花钱;储物间反正平时不怎么进去,简单处理就行。不做这种评估,要么所有房间都按顶配装修导致预算爆炸,要么所有房间都按最低标准来导致观感很差。QuadTok的复杂度引导机制,就是这个"评估-分配预算"的过程。
实验数据证明这套机制确实有效。在ImageNet数据集上,一棵"全展开"的四叉树平均需要320个token,重建质量的rFID(reconstruction Fréchet Inception Distance,衡量重建图片和原图分布差异的指标,越低越好)是1.50。而用复杂度引导策略筛选后的"自适应树",平均只需要230个token,rFID反而达到了1.46,比全展开还略好,同时token数量少了28%。
这组对比很说明问题:多花token不一定换来更好的效果,关键是把token花在刀刃上。
**让四叉树"守规矩":亲缘因果掩码**
四叉树被拉直成一条一维序列、再交给Transformer处理,问题就出在这一步:树里原有的层级关系在摊平之后消失了。标准自注意力不加限制的话,序列中任意两个token都能彼此“看见”,token与图片区域之间原本清楚的空间对应关系因此可能被破坏。
为了解决这个问题,论文设计了Kinship Causal Attention(亲缘因果注意力,一种根据四叉树父子关系严格限制token之间注意力交互范围的掩码策略)。
说白了,这套规则好比一个家族内部的礼数。父节点属于粗粒度,彼此可以看见,它们代表整张图的大布局,得相互协调才能定下全局结构。子节点属于细粒度,能看见全部父节点,因为细节生成要参考全局语境;反过来不行,父节点看不到子节点,全局布局不该被局部细节牵着走。同一父节点下的子节点,也就是“兄弟节点”,彼此可以看见,它们同属一片区域,细化时要互相配合;分属不同父节点的子节点之间则互不可见。
论文用一个很直观的实验检验了这套规则是否必要。研究者特意把一个细粒度token扰动掉,替换成随机码本索引,再比较扰动前后重建图片的差异。结果是:有亲缘因果掩码约束时,扰动带来的影响被严格圈在对应的那一小块图片区域里;把这个约束拿掉,影响就会蔓延到整张图片。
这组对比指向一个很实际的代价权衡。论文消融实验的数据显示,去掉亲缘因果掩码,重建rFID反倒从1.46小幅降到1.41,看上去还更好了;可PSNR(峰值信噪比,衡量像素级重建精度的指标,越高越好)从20.37大跌到19.16,掉了一个多点。下游生成质量更关键:同样用697M参数的生成器,去掉掩码后gFID(生成质量的FID指标)从2.23恶化到3.17。
这意味着什么?少了这层约束,Tokenizer会不知不觉退化成普通的1D序列模型,拿空间对应关系去换感知层面看着还行的重建效果。这种“讨巧”要付的账是下游生成任务明显变差,精确的空间定位能力也一并丢了。好比一个翻译,为了让译文读着顺,擅自把原文的句序和逻辑结构打乱,短期看译文确实流畅,可原文里精确的因果关系和细节对应全没了,事后想根据译文反查原文哪句话对应哪个意思,就彻底没法操作了。
**四叉树的因果性,恰好契合自回归生成**
四叉树结构带来的另一个好处,是它天然适合自回归生成(autoregressive generation,一种按顺序逐个预测token、后面的预测依赖前面已生成内容的生成方式)。
QuadTok把四叉树按照广度优先搜索(BFS,Breadth-First Search,一种先遍历完当前层所有节点、再进入下一层的遍历方式)的顺序摊平成一维序列,粗粒度的token排在前面,细粒度的子token排在后面。这个顺序天然对应着"先画大致轮廓,再补充局部细节"的生成逻辑。
生成器这边用的是LLaMA风格解码器Transformer,这是当前主流的大语言模型架构,采用标准因果注意力机制,每个token只能看到它前面的token;每一步预测只依赖此前已生成的视觉编码和当前的条件信息,例如类别标签。
有一点要说明:生成器采用标准因果掩码,并非Tokenizer训练时用的亲缘因果掩码。也就是说,生成阶段模型严格按BFS顺序逐个预测token,Tokenizer训练时那种“父子节点特殊交互”的规则在这里并不存在。
实验结果显示,这套生成框架相当能打。947M参数的QuadTok生成器,在ImageNet 256×256的生成基准上拿到了2.08的gFID,相比之下,参数量更大的1.4B RandAR-XXL模型gFID是2.15,QuadTok不仅参数更少,效果还更好。而且因为平均token数量比固定256个token的方案要少,QuadTok在相同批次大小下的生成速度也更快,论文里的实测数据显示,在111M参数规模下,QuadTok的生成速度最高能达到LlamaGen的2.4倍。
论文另做了一组实验:把四叉树从两层扩到三层,在原有的8×8、16×16网格之外再加一层32×32。层数加深后重建质量继续往上走,三层版本的rFID为0.770、PSNR为23.31,两层版本对应的数字则是1.46和20.37。按需展开这条路,层数越深潜力越大,代价是算力开销跟着涨。
**零样本空间布局控制:一个意外的收获**
故事要是到这儿就收尾,QuadTok不过是一套效率更高的Tokenizer加生成器。论文里最出人意料的部分,其实是这套结构顺手带来的零样本空间布局控制能力。
四叉树的每个节点都明确对应图片上的一片具体区域,这层空间对应关系在生成过程中被完整保留。于是,生成之前先划定“左半边展开精细节点、右半边维持粗粒度”,模型产出的主体对象大概率就会往左半边聚。
作者们没有为这个能力单独训练任何新模型。他们直接复用ImageNet上训好的生成器和Tokenizer,参数完全冻结,空间控制效果就出来了。
这有点像一位熟练的导演,本来只按剧本顺序拍戏,可摄影机的运镜逻辑足够清楚——先拍全景定构图,再拍特写补细节——他突然意识到,开拍前只要跟摄影师说一句“这次焦点预先放画面左侧”,人不用重新培训,拍出来的主体自然偏左。这不是刻意设计的新功能,是原有流程结构自带的性质。
论文对此做了定量验证。目标区域取左、右、上、下四个方向的半平面,比较“按指定布局生成”与“随机布局生成”两种条件下,生成主体是否真的落在目标区域。评估用了三种定位指标:Grad-CAM(通过梯度回传来可视化模型关注区域的技术)热力图的质心位置、Grounding DINO(一个开放词汇的目标检测模型)检测框的中心,以及SAM 2(Segment Anything Model 2,一种零样本图像分割模型)生成掩码的质心。
结果相当亮眼。以“左半平面”为目标时,随机布局下只有29.6%的图片Grad-CAM质心落在左侧;指定布局后,这一比例升到58.3%,提高了近29个百分点。右、上、下三个方向同样有显著提升,涨幅在17到29个百分点之间。画质损失几乎可以忽略,FID-50cls指标只在-0.15到+0.12之间变动,也就是说画质基本没受影响。
**几张表格里能读出什么**
论文给出的核心数据表格值得单独拎出来说。
ImageNet重建任务上,230个token的QuadTok拿到1.46的rFID和20.37的PSNR。作为对照,固定256 token的LlamaGen(downsampling factor为16)是2.19 rFID和20.79 PSNR。token更少,rFID却相近甚至更优,代价是PSNR略低。这个略低其实呼应了前面说的“空间对应关系保留”的代价:为了维持清晰的token-区域对应,QuadTok在纯像素精度上让了一步,换回来的是感知质量和下游生成能力。
生成任务的对比表格里,947M参数的QuadTok-XXL拿到2.08 gFID,领先同等量级甚至更大量级的多数对比方法。名单里包括VAR-d30(2.0B参数,gFID 1.92,确实比QuadTok更优)、RandAR-XXL(1.4B参数,gFID 2.15)和GigaTok-XL-XXL(1.4B参数,gFID 1.98)。QuadTok处在第一梯队,不是绝对最优,但算上参数效率,竞争力相当足。
零样本迁移到COCO数据集的表格也值得一说。同一个在ImageNet上训练的Tokenizer,不做任何微调,直接放到COCO验证集上测,平均token数量232个,比固定256 token省了大约9%,rFID为7.88。这说明QuadTok学到的“哪里该展开、哪里该保持粗粒度”的判断力,不是针对ImageNet特化的过拟合技巧,具备一定的跨数据集泛化能力。
**这篇论文留下的伏笔和局限**
作者自己也坦承了两个尚未解决的问题。
其一是规模和模态的限制。目前所有实验都局限在ImageNet这类类别条件生成任务上,还没扩展到LAION这类开放域大规模数据集,更没碰文本到图像生成这种更复杂的多模态任务。四叉树结构要支撑文本条件的跨模态注意力机制,需要更大的训练算力投入,这是明确的待办事项。
其二来自ImageNet数据集本身的偏好。库里的图片大多是单一主体、以物体为中心的构图,这种数据分布天然压住了零样本空间布局控制能力的上限。QuadTok确实能很好地把主体和背景分开、做基本的区域定位,可一旦面对更复杂的多物体场景、涉及物体间相对关系的复杂布局,这种能力就会撞上瓶颈。模型学到的空间先验,终究受限于训练数据本身的构图多样性。
Q&A
Q1:QuadTok是什么?
A:QuadTok是加州大学圣地亚哥分校团队提出的一种基于四叉树结构的视觉Tokenizer。它按图片区域的复杂程度动态分配token数量:复杂区域用更多token精细刻画,简单区域用更少token粗略表示,同时保留token和图片空间位置的明确对应关系。
Q2:QuadTok相比传统方法能省多少token?
A:ImageNet数据集上,QuadTok平均只用230个token,就能达到固定256 token方案相当甚至更好的重建质量,节省约10%;零样本迁移到COCO数据集后,平均用232个token,节省约9%。
Q3:QuadTok的零样本空间布局控制是怎么实现的?
四叉树的节点本身就和图上的具体区域一一对应。生成之前先指明哪些区域要展开成精细节点,模型就会更倾向于把主体对象放进这些区域里。整件事没有额外训练,用的还是已经训练好、参数冻结的模型。