你有沒有想過一件事:一段拍藍天白雲的影片裡,前十秒的天空幾乎一動不動,可是幾乎所有的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原本該出現在畫面哪個位置,導致人物肢體漂移、物體邊界錯亂,論文用聯合位置預測和級聯掩碼先驗兩種方案解決了這個問題。






