![]()
你有没有想过一件事:一段拍蓝天白云的视频里,前十秒的天空几乎一动不动,可是几乎所有的AI视频压缩模型,都会不分青红皂白地把每一帧、每一块画面都塞进同样数量的"格子"里去处理。
这就好比你要给一本书拍照留档,其中一百页是密密麻麻的正文,另外一百页是完全空白的扉页,结果你用了同样精度的扫描仪、同样的存储空间,把空白页也扫描得纤毫毕现。如果不这样按需分配存储空间,会发生什么?你的硬盘里会塞满毫无信息量的空白像素,而真正值得细看的文字页面反而因为空间被占用而不得不压缩得更狠。
这正是当前视频生成模型面临的真实困境,也是这篇来自Kakao公司的论文《Keep-or-Drop? Adaptive Tokenizer for Compact Video Representation》想要解决的问题。
压缩比固定,是效率的天花板
要理解这个问题,得先说说现在的视频生成是怎么工作的。
潜在扩散模型:一种先把图像或视频压缩成小尺寸的"潜在表示",再在这个小空间里做生成运算的技术框架,目的是省算力。VAE(变分自编码器):负责把原始像素压缩成潜在表示、又能解压缩还原回去的神经网络模块,是潜在扩散模型的核心组件之一。
Stable Diffusion这类图像生成模型之所以能跑得动,靠的就是VAE把一张动辄几百万像素的图片压缩到几千个数字的潜在空间里,diffusion过程只需要在这个小空间里折腾,效率提升是数量级的。
问题是,视频比图片复杂太多了。一段16帧、256×256分辨率的视频,如果用传统VAE去压缩,编码器不管这段视频是烟花绽放还是墙壁静止,都会按照固定的压缩比例,切出同样数量的"块"(也就是token,词元:视觉模型里最基本的处理单元,可以理解成图像或视频被切分后的一个个小方块)。
这就是论文开篇点出的核心矛盾:视频里存在大量时空冗余,但固定压缩比的VAE完全无视这种冗余,该省的地方不省,该细致的地方也没法更细致。
举个具体的例子,论文里提到一段纯白色的视频,用他们的方法只需要28个token就能完整重建256×256×16的整段视频,而传统方法OmniTokenizer需要用满整整5120个token去处理这同一段视频——这中间差了将近183倍。这不是效率优化的细枝末节,这是浪费了180多倍的计算和存储资源去表达"什么都没发生"这件事。
那么,能不能让模型自己判断,哪些画面块值得细致保留,哪些可以直接扔掉?
这就是KATok要解决的事。
自适应分词器:学会"该扔就扔"
KATok的全称是Keep-or-Drop Adaptive Tokenizer,翻译过来就是"留或弃的自适应分词器"。它的核心思路听起来简单:给每个token配一个打分器,让模型自己判断这个token是不是值得保留。
具体是怎么做到的?先看架构。视频被切成时空块(spatio-temporal patches,也就是同时在空间和时间维度上切分的画面小块),输入到一个Transformer编码器里,输出连续的潜在token。这时候一个叫做自适应token选择器的小模块登场了,它接收每个token的编码,输出一个"保留还是丢弃"的概率。
Gumbel-Softmax:一种让"离散选择"(比如非黑即白的保留或丢弃)变得可以求导、可以参与反向传播训练的数学技巧,原本离散决策没法直接用梯度下降优化,这个方法绕过了这个障碍。
这里有个精妙的设计细节:训练阶段用的是"软"掩码,也就是保留概率是个0到1之间的连续数值,这样才能让梯度顺利地传回去调整参数;但推理阶段,模型会把这个概率硬性地转换成0或1,真正做到某些token被彻底扔掉。
这个软硬两种模式的切换非常关键,论文的消融实验(ablation,也就是把某个模块去掉看看效果会变差多少的对照实验)里专门验证了这一点:如果去掉这套软性掩码机制,或者去掉Gumbel-Softmax这个可微分采样技巧,模型训练直接崩溃,最后只剩下两个用来兜底的寄存器token还活着,PSNR(衡量图像还原精度的指标,数值越高说明画面越清晰)从30多分暴跌到19分左右。
这说明什么?说明这套"让模型自己学会该留该弃"的机制,不是锦上添花的优化,而是整套方法能站得住脚的地基。如果没有这个可微分的软性过渡,模型压根学不出"哪些token有信息量"这件事,只能瞎猜。
那怎么鼓励模型多丢一点token,而不是偷懒把所有token都留着?论文引入了一个稀疏正则化损失,简单说就是给"保留的token总数"加一个惩罚项,token留得越多,惩罚越重,逼着模型主动去发现哪些是真正冗余的部分。而且这个惩罚力度不是一开始就拉满的,前5000步训练几乎不加任何压力,让模型先学会好好重建画面,之后才逐渐加大压力,逼它开始"断舍离"。
论文的补充材料里做了一个专门的实验来验证这个惩罚力度的敏感性,惩罚系数从0.005调到0.1,token数量从401个骤降到6.9个,但PSNR也从28.67暴跌到19.62。中间存在一个明显的临界点:0.01到0.02之间,token数量从372骤降到35,画质断崖式下跌。这说明模型一开始丢弃的是真正容易被舍弃的冗余信息,可一旦过了临界点,继续加压力就是在割肉了,把真正有用的信息也一起丢了。
这就好比公司裁员,一开始砍掉真正冗余的岗位,效率不降反升;但如果一味追求裁员数字继续往下砍,砍到核心岗位的时候,公司运转就直接垮了。如果不设置这种渐进式的惩罚曲线,模型要么一开始就被逼着乱丢token导致训练不稳定,要么惩罚力度设置得太保守,模型压根学不会主动压缩。
除了这套核心的选择机制,论文还发现了一个有意思的规律:token数量和视频内容的复杂度高度相关,尤其是和时间维度的复杂度相关性最强,皮尔逊相关系数达到0.865,比空间复杂度的0.618要高出不少,而结合时空的联合复杂度相关性最高,达到0.877。
这意味着模型学会的这套"扔不扔"的判断标准,本质上是在识别画面里到底动没动、动得多剧烈,而不只是看画面本身花不花哨。论文举了个例子,一段复杂但基本静止的场景,尽管画面纹理很丰富(空间复杂度高),但因为几乎没有运动(时间复杂度低),模型依然只用了较少的token。这跟直觉恰好相反,你可能以为画面越花哨就该用越多token,但实际上决定token预算的主要是"有没有变化",而不是"好不好看"。
decoder的巧妙设计:粗编码,细解码
光有选择器还不够,压缩之后怎么把画面尽可能精细地还原回来,也是个技术活。
KATok用了一个不对称的编解码策略,编码器用较粗的时空块(16×16空间、8帧时间)去切分视频,这样切出来的token数量本身就比较少;但解码器重建的时候,用的是更细的网格(8×8空间、4帧时间),也就是让更多可学习的查询token去关注同一批压缩后的潜在token,反过来重建出更精细的画面细节。
双流架构:源自FLUX模型的解码器设计,让"内容信息"和"位置信息"分别走两条独立的处理通道,最后再融合,这样两种信息不容易互相干扰。
这套设计的好处是编码端保持紧凑,不额外增加存储压力,但解码端可以"精雕细琢"。论文的消融实验显示,如果去掉这种粗编码细解码的不对称设计,PSNR从31.26掉到29.61,同时token数量并没有明显减少。这就好比请人给你画一幅素描肖像,画家不需要记住你脸上每一个毛孔的位置(这是编码阶段,抓大关键点就够了),但真正下笔的时候(解码阶段),画家会用非常细腻的笔触去刻画五官细节。如果画家记忆和落笔都用同样粗糙的精度,肖像要么记不住关键信息,要么画出来的细节就是一坨模糊。
除此之外,编码器里还加入了两个寄存器token,这两个特殊token不参与内容表达,只是充当全局的"锚点",去掉它们之后token使用量会增加,画面的空间一致性也会略微下降,说明它们其实起到了稳定结构的作用。
生成阶段的新麻烦:内容和位置对不上号
如果故事到这里就结束了,那这篇论文可能只是一个更好的视频压缩工具。但真正有意思的部分在后面。
当你把这套自适应压缩后的稀疏token喂给下游的视频生成模型(也就是用扩散模型去"凭空生成"新视频)时,一个新问题冒出来了:内容和位置的错位。
具体来说,因为不同视频保留下来的token数量和位置都不一样,扩散模型在生成的时候,很容易搞不清楚"这个token原本应该出现在画面的哪个位置"。论文里给出的例子非常直观:naive(也就是最直接、不加任何额外处理)的生成方式,会导致画面出现明显的位置错乱,论文用红框标出了那些明显对不上号的区域,比如人物的肢体位置漂移、物体边界不稳定。
这就像你收到一份拼图,拼图商为了省成本,只给了你部分碎片(对应稀疏token),却没有告诉你每块碎片原本在整幅画的哪个位置。如果不解决这个位置提示的问题,你哪怕手里所有碎片都长得对,也拼不出正确的画面,东西都在,但摆错了地方。
为了解决这个问题,论文提出了两套方案。
第一套叫联合内容位置生成,简单说就是让扩散模型同时预测"这个token长什么样"和"它应该在哪里",把这两件事拼在一起训练。而且这里还用了一个叫做时间步解耦的技巧,内容和位置各自用一套独立的加噪时间进度,让位置信息更早被"确定"下来,内容细节则慢慢补充。这套方案确实能改善位置错乱问题,但缺点是需要精细调参,两套噪声进度怎么搭配才最优,需要反复试验。
第二套叫级联式的掩码先验条件生成,这套方案更巧妙。它先用一个非常轻量的模型(只有830万参数,只占主生成模型规模的1.2%)单独预测一个二值化的掩码,也就是先判断"这一帧的这个位置该不该有内容",再把预测出的位置信息喂给正式的内容生成模型作为明确的位置提示。
这就好比先请一位经验丰富的场记,提前圈出片场里哪些镜头位置需要重点拍摄、哪些地方可以省略,然后再让摄影指导专心去拍摄细节,不用同时兼顾"拍哪里"和"怎么拍"这两件事。如果不做这种拆分,让一个模型既要操心内容又要操心位置,两件事互相干扰,位置预测不准会直接连累内容质量。
论文的实验数据也印证了这个设计的价值:在UCF101数据集上,最原始的naive生成方式gFVD(一种衡量生成视频质量的指标,数值越低越好)是95.69,加入联合位置预测后降到73.16,而级联式的掩码先验方案进一步降到61.53,是三种方案里效果最好的。
这套级联方案还带来了一个意外的副产品:因为掩码先验模型是单独训练的,推理时可以直接调整想要生成的token数量,从而控制视频的运动复杂度。论文里展示了一个很有意思的对比,同样的场景,用200个token生成出来的视频运动幅度小、内容简单,用400个token生成的视频则运动更丰富、细节更多。这不是刻意设计的功能,而是模型训练过程中自然涌现出来的能力,因为复杂运动的视频天然需要更多token去表达,所以调整token预算,就能间接调整生成内容的复杂程度。
实打实的效率提升数字
说了这么多设计思路,具体效果如何?
论文在Panda-70M数据集上做了详尽的重建对比。256×16分辨率下,KATok平均只用366个token,而OmniTokenizer需要5120个,ElasticTok需要3845个,但KATok的PSNR达到31.24,反而是三者中最高的,rFVD(衡量重建视频质量的指标)只有5.12,远低于OmniTokenizer的7.84和ElasticTok的12.37。
更值得注意的是分辨率提升后的表现。512×32分辨率下,KATok只用了1554个token,压缩比达到253倍,而OmniTokenizer固定使用36864个token,压缩比始终锁死在96倍。这说明随着视频尺寸变大,KATok能挖掘出的时空冗余也越多,而传统方法的压缩比是死的,不会随着数据规模自动优化。
在下游生成任务上,KATok同样表现亮眼。论文对比了训练速度和最终生成质量,在UCF101数据集上,Ours-Cascaded方案训练到20万步时gFVD达到49.34,而OmniTokenizer同样训练20万步只能达到82.31。更夸张的是,KATok只训练8万步的效果(73.81),就已经超过了OmniTokenizer训练满20万步的最终效果,这意味着接近6.9倍的训练时间节省。跟ElasticTok比,KATok的训练速度快了将近46.7倍。
推理速度上,KATok的级联方案每秒能生成15.71段视频,是联合方案(5.01)、OmniTokenizer(4.91)和ElasticTok(4.24)的三倍以上。
这里要客观说一句,这些提速数字看起来非常亮眼,但要注意对比的基准都是同样规模的Transformer架构。如果换成完全不同技术路线的模型(比如基于卷积网络的Cosmos或LTX-Video),补充材料里的数据显示KATok依然保持领先,但优势幅度在不同数据集上有所波动,在极端的第一人称视角数据集Epic-Kitchens(这类视频几乎一直在运动,没什么静止画面可省)上,KATok的领先优势明显收窄,因为这种场景本身留给自适应压缩发挥的空间就不多。
从视频延伸到图片的验证
论文还做了一个很扎实的补充实验,把同样的自适应压缩机制搬到静态图片上(ImageNet数据集),来验证这套思路是不是只对视频有效,还是说本身就是一个通用的冗余压缩原理。
结果很有意思:当图片切块用32×32这种较粗的粒度时,模型几乎保留了所有64个token,因为每一块画面信息量都比较独特,没什么好丢的。但把切块粒度改成16×16之后(切块变小意味着相邻块之间重叠和冗余增多),模型立刻学会了丢弃更多token,256个初始块里平均只保留229个。
这个对比其实回应了一个很根本的问题:自适应压缩到底是在压缩什么?答案是压缩的是冗余,而不是压缩内容本身的信息量。视频比图片多了一个时间维度的冗余(相邻帧长得差不多),所以视频上的压缩效果比图片更夸张,论文数据显示视频压缩比能到134到253倍,而图片压缩比只有27到48倍。这个差异恰恰证明了这套机制不是玄学,它确实精准地捕捉到了数据本身的冗余结构,数据越冗余,模型就压缩得越狠。
写在后面
读完这篇论文,最触动我的其实不是那些漂亮的压缩比数字,而是那个关于token数量和内容复杂度相关性的实验。论文发现token使用量和时间复杂度的相关性(0.865)明显高于空间复杂度(0.618),这说明视频里真正值得花代价去表达的,往往不是"这一帧画面有多丰富",而是"这一帧和上一帧比,到底变了多少"。
这其实挺反直觉的。我们平时评价一段视频精不精彩,往往看的是画面本身好不好看、构图讲不讲究,但从信息压缩的角度看,决定这段视频需要多少"存储代价"的,其实是运动本身。一段绚丽但静止的风景照可以被压缩得很狠,一段画质普通但动作激烈的运动镜头反而需要更多存储空间。这个洞察某种程度上呼应了信息论里最朴素的一条原则:信息量的本质是不确定性,不是画面本身的复杂度,而是你没法从上一帧预测出下一帧的那部分内容。
另外一个让我印象深刻的细节是论文对失败案例的坦诚。补充材料里专门放了一组高频细节配合大幅运动的失败样例,PSNR只有19到20分,画面明显模糊。研究者没有回避这个短板,直接说明了这套自适应压缩机制的边界在哪里:遇到又快又碎的动态细节,模型目前还是力不从心。这种诚实反而让人对整套方法的可信度更高一些。
如果token的分配可以根据内容复杂度自动调整,那视频生成模型是不是也该学会根据"观众想看什么"来调整生成的精细程度?这个问题现在还没有答案。
Q&A
Q1:KATok是什么?
A:KATok是Kakao公司提出的一种自适应视频分词器,它能让模型自动判断视频里哪些画面块信息量高需要保留,哪些是冗余内容可以直接丢弃,从而实现比传统固定压缩比方法高得多的压缩效率。
Q2:KATok和OmniTokenizer、ElasticTok相比有什么优势?
A:在256分辨率视频上,KATok平均只用366个token就能达到比OmniTokenizer(5120个token)和ElasticTok(3845个token)更高的重建质量,同时训练速度分别快6.9倍和46.7倍。
Q3:为什么稀疏化压缩会导致视频生成时内容和位置对不上?
A:因为不同视频保留下来的token数量和空间位置都不固定,扩散模型在生成时容易搞不清每个token原本该出现在画面哪个位置,导致人物肢体漂移、物体边界错乱,论文用联合位置预测和级联掩码先验两种方案解决了这个问题。

