Sora之后,OpenAI Lilian Weng親自撰文教你從頭設計視頻生成擴散模型
過去幾年來,擴散模型強大的圖像合成能力已經得到充分證明。研究社區現在正在攻克一個更困難的任務:視頻生成。近日,OpenAI 安全系統(Safety Systems)負責人 Lilian Weng 寫了一篇關于視頻生成的擴散模型的博客。
Lilian Weng
機器之心對這篇博客進行了不改變原意的編譯、整理,以下是博客原文:
視頻生成任務本身是圖像合成的超集,因為圖像就是單幀視頻。視頻合成的難度要大得多,原因是:
1. 視頻合成還需要不同幀之間保持時間一致性,很自然,這需要將更多世界知識編碼到模型之中。
2. 相比于文本或圖像,收集大量高質量、高維度的視頻數據要更為困難,更罔論配對的文本 - 視頻數據了。
如果你想了解擴散模型在圖像生成方面的應用,可參讀本文作者 Lilian Weng 之前發布的博文《What are Diffusion Models?》鏈接:https://lilianweng.github.io/posts/2021-07-11-diffusion-models/
從頭建模視頻生成
首先,我們先來看看如何從頭設計和訓練擴散視頻模型,也就是說不使用已經預訓練好的圖像生成器。
參數化和采樣
這里使用的變量定義與之前那篇文章稍有不同,但數學形式是一致的。令 ??~??_real 是從該真實數據分布采樣的一個數據點。現在,在時間中添加少量高斯噪聲,創建出 ?? 的一個有噪聲變體序列,記為:{??_?? | ?? = 1..., ??},其中噪聲隨 ?? 的增加而增長,而最后的 ??(??_??)~??(??,??)。這個添加噪聲的前向過程是一個高斯過程。令 ??_?? 和 ??_?? 為這個高斯過程的可微噪聲調度(differentiable noise schedule):
為了表示 ??(??_??|??_??),其中 0≤??<??≤??,有:
令對數信噪比為
,則可將 DDIM 更新表示為:
Salimans & Ho (2022) 的論文《Progressive Distillation for Fast Sampling of Diffusion Models》為這里提出了一個特殊的 ?? 預測參數:
。研究表明,相比于 ?? 參數,?? 參數有助于避免視頻生成中出現顏色變化問題。
?? 的參數化是通過角坐標中的技巧導出的。首先,定義 ??_??=arctan (??_??/??_??),由此可得到 ??_??=cos ??, ??_??=sin ??, ??_??=cos ????+sin ????。??_?? 的速度可以寫成:
然后可以推導出:
DDIM 更新規則就可以據此更新:
圖 1:以角坐標形式展示擴散更新步驟的工作方式,其中 DDIM 通過讓 z_{??_??} 沿
的方向移動而使其不斷演進。
對模型來說,?? 的參數化就是預測
對于視頻生成任務,為了延長視頻長度或提升幀率,需要擴散模型運行多個上采樣步驟。這就需要基于第一個視頻 ??^?? 采樣第二個視頻 ??^?? 的能力,
, 其中 ??^?? 可能是 ??^?? 的自回歸擴展或是一個低幀率的視頻之中缺失的幀。
除了其自身對應的有噪聲變量之外,??^?? 的采樣還需要基于 ??^??。Ho & Salimans 等人 2022 年的視頻擴散模型(VDM)提出使用一種經過調整的去噪模型來實現重構引導方法,這樣就可以很好地以 ??^?? 為基礎實現 ??^?? 的采樣:
其中 是 ??^?? 和 ??^?? 根據所提供的去噪模型的重構。而 ??_?? 是一個加權因子,可以尋找一個較大的 ??_?? > 1 來提升采樣質量。請注意,使用同樣的重建引導方法,也有可能基于低分辨率視頻來擴展樣本,使之變成高分辨率樣本。
模型架構:3D U-Net 和 DiT
類似于文生圖擴散模型,U-Net 和 Transformer 依然是常用的架構選擇。谷歌基于 U-net 架構開發了一系列擴散視頻建模論文,OpenAI 近期的 Sora 模型則是利用了 Transformer 架構。
VDM 采用了標準的擴散模型設置,但對架構進行了一些修改,使之更適合視頻建模任務。它對 2D U-net 進行了擴展,使其能處理 3D 數據,其中每個特征圖(feature map)都表示一個 4D 張量:幀數 x 高度 x 寬度 x 通道數。這個 3D U-net 是在空間和時間上進行分解,也就是說每一層都僅會操作空間或時間一個維度,而不會同時操作兩者。
- 處理空間:原本和 2D U-net 中一樣的 2D 卷積層會被擴展成僅針對空間的 3D 卷積,具體來說,就是 3x3 卷積變成 1x3x3 卷積。每一個空間注意力模塊依然是關注空間的注意力,其中第一個軸(frames)則被當成批(batch)維度處理。
- 處理時間:每個空間注意力模塊之后會添加一個時間注意力模塊。其關注的是第一個軸(frames)并將空間軸視為批維度。使用這種相對位置嵌入可以跟蹤幀的順序。這個時間注意力模塊可讓模型獲得很好的時間一致性。
圖 2:3D U-net 架構。該網絡的輸入是有噪聲視頻 z_??、條件信息 c 和對數信噪比(log-SNR)λ_??。通道乘數 M_1,...,M_?? 表示各層的通道數量。
Ho, et al. 在 2022 年提出的 Imagen Video 基于一組級聯的擴散模型,其能提升視頻生成的質量,并將輸出升級成 24 幀率的 1280x768 分辨率視頻。Imagen Video 架構由以下組件構成,總計 7 個擴散模型。
- 一個凍結的 T5 文本編碼器,用以提供文本嵌入作為條件輸入。
- 一個基礎視頻擴散模型。
- 一組級聯的交織放置的空間和時間超分辨率擴散模型,包含 3 個 TSR(時間超分辨率)和 3 個 SSR(空間超分辨率)組件。
圖 3:Imagen Video 的級聯式采樣流程。在實踐中,文本嵌入會被注入到所有組件中,而不只是基礎模型中。
基礎去噪模型使用共享的參數同時在所有幀上執行空間操作,然后時間層將各幀的激活混合起來,以更好地實現時間一致性;事實證明這種方法的效果優于幀自回歸方法。
圖 4:Imagen Video 擴散模型中一個空間 - 時間可分離模塊的架構。
SSR 和 TSR 模型都基于在通道方面連接了有噪聲數據 ??_?? 的上采樣的輸入。SSR 是通過雙線性大小調整來上采樣,而 TSR 則是通過重復幀或填充空白幀來上采樣。
Imagen Video 還應用了漸進式蒸餾來加速采樣,每次蒸餾迭代都可以將所需的采樣步驟減少一半。在實驗中,他們能夠將所有 7 個視頻擴散模型蒸餾為每個模型僅 8 個采樣步驟,同時不會對感知質量造成任何明顯損失。
為了更好地擴大模型規模,Sora 采用了 DiT(擴散 Transformer)架構,其操作的是視頻和圖像隱代碼的時空塊(spacetime patch)。其會將視覺輸入表示成一個時空塊序列,并將這些時空塊用作 Transformer 輸入 token。
圖 5:Sora 是一個擴散 Transformer 模型。
調整圖像模型來生成視頻
在擴散視頻建模方面,另一種重要方法是通過插入時間層來「擴增」預訓練的文生圖擴散模型,然后就可以選擇僅在視頻上對新的層進行微調或完全避免進行額外的訓練。這個新模型會繼承文本 - 圖像對的先驗知識,由此可以幫助緩解對文本 - 視頻對數據的需求。
在視頻數據上進行微調
Singer et al. 在 2022 年提出的 Make-A-Video 是在一個預訓練擴散圖像模型的基礎上擴展一個時間維度,其包含三個關鍵組件:
1. 一個在文本 - 圖像對數據上訓練的基礎文生圖模型。
2. 時空卷積和注意力層,使網絡覆蓋時間維度。
3. 一個幀插值網絡,用于高幀率生成。
圖 6:Make-A-Video 工作流程示意圖。
最終的視頻推理方案的數學形式可以寫成這樣:
其中:
- ?? 是輸入文本
- 是 BPE 編碼的文本
- 是 CLIP 文本編碼器
- P (.) 是先驗,給定文本嵌入 ??_?? 和 BPE 編碼的文本
- 生成圖像嵌入 ??_??:
- 這部分是在文本 - 圖像對數據上訓練的,不會在視頻數據上進行微調。
- 是時空解碼器,其能生成一系列的 16 幀視頻,其中每一幀都是低分辨率的 64x64 RGB 圖像
- 。
- 是幀插值網絡,可通過在生成的幀之間插值而有效提升幀率。這是一個經過微調的模型,可用于為視頻上采樣任務預測被掩蔽的幀。
- 是空間和時空超分辨率模型,可分別將圖像分辨率提升到 256x256 和 768x768。
- 是最終生成的視頻。
時空超分辨率層包含偽 3D 卷積層和偽 3D 注意力層:
- 偽 3D 卷積層:每個空間 2D 卷積層(由預訓練圖像模型初始化)后面跟著一個時間 1D 層(由恒等函數初始化)。從概念上講,其中的 2D 卷積層首先生成多幀,然后這些幀會被調整為一段視頻。
- 偽 3D 注意力層:在每個(預訓練)空間注意力層之后堆疊一個時間注意力層,從而近似得到一個完整的時空注意力層。
圖 7:偽 3D 卷積(左)和注意力(右)層的工作方式。
它們可以表示成:
其中有輸入張量 ??∈?^{??×??×??×??×??}(對應于批量大小、通道數、幀數、高度和寬度);
的作用是交換時間和空間維度;flatten (.) 是一個矩陣算子,可將 ?? 轉換成 ??'∈?^{??×??×??×????},而 flatten?1(.) 的作用則相反。
訓練時,Make-A-Video 工作流程中的不同組件是分開訓練的。
1. 解碼器 D^??、先驗 P 和兩個超分辨率組件
首先單獨在圖像上訓練,而不使用配對的文本。
2. 接下來添加新的時間層,其初始化為恒等函數,然后在未標注的視頻數據上進行微調。
Wu et al. 在 2023 年提出的 Tune-A-Video 是對一個預訓練圖像擴散模型進行擴展,使之可以實現單樣本視頻微調:給定一段包含 ?? 幀的視頻 ??={ ??_?? | ??=1,...,??},搭配上描述性的 prompt ??,任務目標是基于經過稍有編輯且相關的文本 prompt ??* 生成一段新視頻 ??*。舉個例子,?? = "A man is skiing" 可以擴展成 ??* ="Spiderman is skiing on the beach"。Tune-A-Video 的設計目的是用于對象編輯、背景修改和風格遷移。
除了擴展 2D 卷積層之外,Tune-A-Video 的 U-Net 架構還整合了 ST-Attention(時空注意力)模塊,可通過查詢在之前幀中的相關位置來實現時間一致性。給定幀 ??_??、前一幀 ??_{??-1} 和第一幀 ??_1 的隱含特征(它們被投射成查詢 ??、鍵 ?? 和值 ??),ST-Attention 的定義是:
圖 8:Tune-A-Video 架構概況。在采樣階段之前,它首先在單個視頻上運行一個輕量加權的微調階段。請注意整個時間自注意力(T-Attn)層都會得到微調,因為它們是新加入的,但在微調階段,ST-Attn 和 Cross-Attn 中只有查詢投射會被更新,以保留先驗的文生圖知識。ST-Attn 能提升時空一致性,Cross-Attn 能優化文本 - 視頻的對齊。
Esser et al. 在 2023 年提出的 Gen-1 模型(Runway)針對的任務是根據文本輸入編輯給定視頻。它在考慮生成條件時會將視頻的結構和內容分開處理:p (?? | ??,c)。但是,要將這兩方面清楚地分開實非易事。
- 內容 ?? 是指視頻的外觀和語義,其可從文本采樣來進行條件化編輯。視頻幀的 CLIP 嵌入能很好地表示內容,并且能在很大程度上與結構特征保持正交。
- 結構 ?? 描述了幾何性質和動態情況,包括形狀、位置、物體的時間變化情況,?? 是從輸入視頻采樣的。可以使用深度估計或其它針對特定任務的輔助信息(比如用于人類視頻合成的人體姿勢或人臉標識信息)。
Gen-1 中的架構變化相當標準,即在其殘差模塊中的每個 2D 空間卷積層之后添加 1D 時間卷積層,在其注意力模塊中的每個 2D 空間注意力模塊之后添加 1D 時間注意力模塊。訓練期間,結構變量 ?? 會與擴散隱變量 ?? 連接起來,其中內容變量 ?? 會在交叉注意力層中提供。在推理時間,會通過一個先驗來轉換 CLIP 嵌入 —— 將其從 CLIP 文本嵌入轉換成 CLIP 圖像嵌入。
圖 9:Gen-1 模型的訓練流程概況。
Blattmann et al. 在 2023 年提出的 Video LDM 首先是訓練一個 LDM(隱擴散模型)圖像生成器。然后微調該模型,使之得到添加了時間維度的視頻。這個微調過程僅用于那些在編碼后的圖像序列上新增加的時間層。Video LDM 中的時間層
(見圖 10)會與已有的空間層
交錯放置,而這些空間層在微調過程中會保持凍結。也就是說,這里僅微調新參數 ??,而不會微調預訓練的圖像骨干模型參數 ??。Video LDM 的工作流程是首先生成低幀率的關鍵幀,然后通過 2 步隱含幀插值過程來提升幀率。
長度為 ?? 的輸入序列會被解釋成用于基礎圖像模型 ?? 的一批圖像(即 ?????),然后再調整為用于
時間層的視頻格式。其中有一個 skip 連接通過一個學習到的融合參數 ?? 導向了時間層輸出 ??' 和空間輸出 ?? 的組合。在實踐中,實現的時間混合層有兩種:(1) 時間注意力,(2) 基于 3D 卷積的殘差模塊。
圖 10:一個用于圖像合成的預訓練 LDM 被擴展成一個視頻生成器。B、??、??、??、?? 分別是批量大小、序列長度、通道數、高度和寬度。??_S 是一個可選的條件 / 上下文幀。
但是,LDM 的預訓練自動編碼器依然還有問題:它只能看見圖像,永遠看不見視頻。直接使用它來生成視頻會產生閃動的偽影,這樣的時間一致性就很差。因此 Video LDM 向解碼器添加了額外的時間層,并使用一個用 3D 卷積構建的逐塊時間判別器在視頻數據進行微調,同時編碼器保持不變,這樣就依然還能復用預訓練的 LDM。在時間解碼器微調期間,凍結的編碼器會獨立地處理視頻中每一幀,并使用一個視頻感知型判別器強制在幀之間實現在時間上一致的重建。
圖 11:視頻隱擴散模型中自動編碼器的訓練工作流程。其中編碼器的微調目標是通過新的跨幀判別器獲得時間一致性,而編碼器保持不變。
類似于 Video LDM,Blattmann et al. 在 2023 年提出的 Stable Video Diffusion(SVD)的架構設計也是基于 LDM,其中每一個空間卷積和注意力層之后都插入時間層,但 SVD 是在整個模型層面上執行微調。訓練視頻 LDM 分為三個階段:
1. 文生圖預訓練很重要,有助于提升質量以及遵從 prompt 的能力。
2. 將視頻預訓練分開是有利的,理想情況下應當在更大規模的經過整編的數據集上進行。
3. 使用一段更小的、高視覺保真度的預先標注了字幕的視頻進行高質量視頻微調。
SVD 專門強調了數據集整編對模型性能的關鍵作用。他們使用了一個剪輯檢測流程來從每段視頻獲得更多剪輯,然后對其使用三個不同的字幕標注器模型:(1) 用于中間幀的 CoCa,(2) 用于視頻字幕的 V-BLIP,(3) 基于前兩個標注使用 LLM 來進行標注。然后他們還能繼續提升視頻數據集,其做法包括移除運動更少的視頻片段(通過以 2 fps 速度計算低光流分數進行過濾)、清除過多的文本(使用光學字符識別來識別具有大量文本的視頻)、清除看起來不夠美的視頻(使用 CLIP 嵌入標注每段視頻的第一幀、中間幀和最后幀并計算美學分數和文本 - 圖像相似度)。實驗表明,使用經過過濾的更高質量的數據集能得到更好的模型質量,即便這個數據集要小得多。
對于首先生成遠距離關鍵幀然后再使用時間超分辨率進行插值的方法,其中的關鍵挑戰是如何維持高質量的時間一致性。Bar-Tal et al. 在 2024 年提出的 Lumiere 則是采用了一種時空 U-Net(STUNet)架構,其可在單次通過中一次性生成整段時間上持續的視頻,這樣就無需依賴 TSR(時間超分辨率)組件了。STUNet 會在時間和空間維度上對視頻進行下采樣,因此會在一個緊湊的時間 - 空間隱空間內具備很高的計算成本。
圖 12:Lumiere 無需 TSR(時間超分辨率)模型。由于內存限制,經過擴展的 SSR 網絡可以僅使用視頻的短片段,因此 SSR 模型可以使用較短但重疊的視頻片段集。
STUNet 在預訓練文生圖 U-Net 上擴展之后能夠同時在時間和空間維度上對視頻進行下采樣和上采樣。基于卷積的模塊由預訓練的文生圖層構成,之后是分解的時空卷積。而在最粗粒度 U-Net 層面上的基于注意力的模塊包含這個預訓練文生圖模塊,之后是時間注意力。只有新添加的層需要進一步訓練。
圖 13:架構示意圖:(a) 時空 U-Net(STUNet)、(b) 基于卷積的模塊、(c) 基于注意力的模塊。
無訓練適應
也有可能不使用任何訓練就讓預訓練的文生圖模型輸出視頻,這多少有點讓人驚訝。
如果我們直接簡單地隨機采樣一個隱含代碼的序列,然后用解碼出來的對應圖像構建一段視頻,那么無法保證物體和語義在時間上的一致性。Khachatryan et al. 在 2023 年提出的 Text2Video-Zero 可實現零樣本無訓練的視頻生成,其做法是讓預訓練的圖像擴散模型具備用于時間一致性的兩個關鍵機制。
1. 采樣具有運動動態的隱含代碼序列,以保證全局場景和背景的時間一致性。
2. 使用一個新的跨幀注意力(每一幀在第一幀上的注意力)重新編程幀層面的自注意力,以保證前景事物的上下文、外觀和身份信息的一致性。
圖 14:Text2Video-Zero 工作流程示意圖。
下面用數學描述這個采樣帶有運動信息的隱含變量序列的過程:
1. 定義一個方向 ??=(??_??, ??_??)∈?2 來控制全局場景和相機運動;默認情況下,設定 ??=(1, 1)。再定義一個超參數 λ>0,控制全局運動的數量。
2. 首先隨機采樣第一幀的隱含代碼
3. 使用預訓練的圖像擴散模型(例如論文中的 Stable Diffusion(SD)模型)執行 Δ??≥0 DDIM 后向更新步驟,得到相應的隱含代碼
,其中 ??'=??-Δ??。
4. 對于該隱含代碼序列中的每一幀,使用一個扭曲操作(其定義為 ??^??=λ(??-1)?? )執行相應的運動平移,得到
5. 最后對所有
使用 DDIM 前向步驟,得到
此外,Text2Video-Zero 還換掉了預訓練 SD 模型中的自注意力層,并代之以一種參考第一幀的新型跨幀注意力機制。其目標是在生成的視頻結果中保留前景事物的上下文、外觀和身份信息。
另外還可以選擇使用背景掩碼,以讓視頻背景過渡更平滑并進一步提升背景一致性。假設我們已經使用某種方法得到了第 ?? 幀相應的前景掩碼 ??_??,然后背景平滑操作可根據以下背景矩陣將實際隱含代碼和擴散步驟 ?? 扭曲過的隱含代碼融合起來:
其中
是實際的隱含代碼,
是在背景上扭曲的隱含代碼,?? 是一個超參數,該論文的實驗中設定 ??=0.6。
Text2Video-Zero 可與 ControlNet 結合起來,其中在每個擴散時間步驟 ??=??,...,1,每一幀都會在
(??=1,...,??)上使用 ControlNet 預訓練的副本分支,并將該 ControlNet 分支的輸出添加到主 U-Net 的 skip 連接。
Zhang et al. 在 2023 年提出的 ControlVideo 的目標是基于文本 prompt 和運動序列(例如深度或邊緣圖)
生成視頻。該模型是基于 ControlNet 調整得到的,其中新增了三個機制:
1. 跨幀注意力:在自注意力模塊中添加完整的跨幀交互。它引入了所有幀之間的交互,其做法是將所有時間步驟的隱含幀映射到 ??、??、?? 矩陣,這不同于 Text2Video-Zero(其是讓所有幀都關注第一幀)。
2. 交替式幀平滑器(interleaved-frame smoother)機制是通過在交替幀上采用幀插值來減少閃爍效應。在每個時間步驟 ??,該平滑器會插值偶數或奇數幀,以平滑其相應的三幀剪輯。請注意,平滑步驟后幀數會隨時間推移而減少。
3. 分層式采樣器能在內存限制下保證長視頻的時間一致性。一段長視頻會被分割成多段短視頻,其中每一段短視頻都會選出一幀關鍵幀。該模型會使用完全跨幀注意力預生成這些關鍵幀以實現長期一致性,而每段相應的短視頻都基于這些關鍵幀按順序合成。
圖 15:ControlVideo 概覽。
本文轉自 機器之心 ,作者:機器之心
