從 Sora 的技術背景解析當代 Video Generation 的方法與難題
近年來,人工智慧與機器學習領域在圖片生成技術方面發展快速。從2010年代初期依賴於生成對抗網絡 (GAN-based) 方法的有趣嘗試,到近年來基於擴散模型 (diffusion models) 的 DALL-E 和 Stable Diffusion 的崛起,這些創新不僅在學術界引起轟動,也逐步影響到了大眾生活。然而,相比之下,影片生成技術的發展似乎還在醞釀中,尚未廣泛應用於日常生活中。
影片生成一直被認為是一項複雜的高維度任務,不僅要在圖像生成的基礎上處理時間連續性的問題,還面臨著高維數據處理的挑戰。長期以來,產生既高品質又有一定長度的影片對技術是一大考驗。在 2024 年 2 月 OpenAI 推出了 Sora 模型,不僅能生成長達一分鐘的視頻,在視覺一致性和對文字指令的遵循性上也有良好的水平。Sora 的出現代表一定程度克服了處理高維數據的挑戰,標誌著影片生成即將進入大眾使用的階段。雖然 Sora 的成就是建立在眾多先驅技術基礎之上的,但它在當下時刻對於未來影片生成領域的發展輪廓提供了一個重要的視角,非常值得作為一個切入點來探討。
文章難度:★★★★☆
閱讀建議: 文章從 Sora 的推出作為動機,介紹了生成圖片與生成影片在技術上的差異和面臨的挑戰。接著探討了 Sora 的技術架構,包括其使用 Transformer 架構的 Latent Diffusion Model 、 spacetime latent patches 的設計,以及如何通過 NaViT 等技術實現高效的大規模訓練。此外,也介紹了如何增強影片與語言間的理解來改進影片生成技術最後,對於 Sora 一些未公開的細節做合理推論,包含實現長影片生成的潛在方法、物理世界的理解及其對未來影片生成領域的影響等。
推薦背景知識: Generative Model, VAE (Variational Auto-Encoder), GAN (Generative Adversarial Network), Transformer, Vision Transformer (ViT), CLIP.
Sora: Creating Video from Text
Sora [1] 是 OpenAI 推出用於 video generation from text 的 ML 模型,能夠根據文本指令創造出真實又或充滿想象的場景視頻。在過往,大部分的 video generation 無法生成較長的影片,但 Sora 目前可以生成長達一分鐘的視頻,同時保持視覺一致性和對 prompt 的遵循性。
Video generation 的難點
對比生成圖片,生成影片在技術上主要的困難點在於時間連續性的維護、高維度資料的處理、複雜場景變化的理解、長期依賴問題的解決,以及更高的資料和訓練成本等。
- 時間連續性與一致性:與圖片生成不同,影片不僅需要在單一畫面內保持細節和主題的一致性,還必須在連續的畫面中保持時間上的連續性和一致性。換句話說,光是處理一張圖片的破綻就很難了,更何況是一整段影片。
- 高維度的資料處理:影片相較於圖片還多了時間維度,也就是在原始數據上的維度大幅增加。這除了 modeling 難度變得更高外,對計算資源的需求遠高於圖片生成。
- 複雜的場景變化:影片中的場景變化比單一圖片要複雜得多,包括物體的運動、場景的轉換、光線的變化等。這要求模型不僅要有理解單一畫面的能力,還要理解場景隨時間的動態變化。
- 長期依賴問題:在長時間的影片中,早期的事件可能會影響到後期的畫面,這種長期依賴的關係需要模型能夠捕捉和理解,這在技術上是一個未完全解決的問題。
- 資料和訓練成本:因為影片的原始數據維度遠大與圖片,影片的資料規模更大,這不僅使得資料收集和處理更為困難,也讓訓練成本大幅上升。使得依賴大規模訓練的生成模型變的窒礙難行。
技術推論
實際透過 Sora 的技術報告 [2] 與參閱相似文獻,可以看出 Sora 的本質是backbone 使用 Vision Transformer [3, 4] 的 Latent Diffusion Model (LDM) [5],再加上可以同時把不同解析度的圖片與不同長度的影片 encode 成 patch sequence 的設計。 Sora 技術高度承襲先前的 DiT 論文 [6] 中設計使用 Transformer 進行 image generation 的架構。因為 Transformer 可以設計成具備處理不同長度 sequence 的能力,只要能把影片有效率地轉換成一連串的 sequence ,其實就能夠進行影片的生成。
整體上,對比其他的圖像或影片生成模型, Sora 在技術上的顯著特色至少有三個:
- 使用 Transformer 架構做為 Diffusion Model 的核心網路:讓核心網路以 tokens 為處理目標,並且容易 scale up 。
- 使用 spacetime latent patches ,可以同時表述圖片與影片:讓模型可以從更多元的資料中學習,也提高了frame之間的自然連貫性。
- 圖片與影片在訓練時,可以保有原有的解析度,不需要進行 aspect ratio 的 padding ,並且在同一個 batch 內計算:除了提高計算效率外,也減少模型浪費時間學習黑邊的概念。
同時使用以上三者,也使得大規模的訓練與生成長影片變得可行。
基石論文
基於以上技術特色,可以合理推論 Sora 是基於以下幾個作品為基石拓展出來的 video generation 模型。
- DiT: 把壓縮過的圖像 latent features 化為 token 序列,讓 diffusion model 再輸入與可以自由拓展長度。
- ViViT [7]: 討論如何 tokenize video 並交給 ViT 進行 modeling 。
- NaViT [8]: 如何讓 ViT 可以計算不同解析度的圖片,使得大規模圖片加影片訓練化為可能。
總體上來, Sora 可能至少具備這三個技術的綜合。使用 ViViT 的概念,將圖片或影片進行 tokenize 後,交給輸入與輸出可以自由拓展長度的 DiT 進行 diffusion process 。在訓練上使用 NaViT 的方法,實現兼容不同解析度圖片與影片的大規模訓練。
Diffusion Models & DiT
Sora 的模型設計本質是 backbone 使用 Transformer 的 Latent Diffusion Model (LDM)。
基於 Transformer 與 LDM 的性質,擁有良好的拓展能力,也支持了 Sora 生成不同解析度長影片的能力。
Diffusion model (DM)
Diffusion model的核心精神是學習一個逐步 de-noise 的過程。
在訓練模型時,逐步地將原圖加入雜訊。具體上來說,使用一個高斯分布 (Gaussian distribution) 一次又一次地在原圖上打上很小的雜訊,然後讓網路來學習如何reverse這個雜訊。
在數學上 diffusion model 是被定義為一個參數化的 Markov chain,在DDPM [9] 的原論文中是這樣描述:
“Diffusion probabilistic model is parameterized Markov chain trained using variational inference to produce samples matching the data after finite time.”
Latent Diffusion Model (LDM)
所謂的 latent diffusion model 指的是先將圖片透過某種壓縮還原技術,將輸入壓縮為 latent features ,通過 diffusion model 運作後,再還原為原本解析度。 LDM 減少了所需處理的數據量,從而提高了生成過程的效率,也允許模型更好地捕捉和學習數據的複雜結構,並能在生成時保持細節的一致性和清晰度。
常見的壓縮還原技術如 VQGAN [10] 的 autoencoder 設計。透過 autoencoder 架構加上 VQ-reg (vector quantization layer) 限制 latent,避免 high-variance latent spaces 。並在訓練時額外使用 perceptual loss [11] 與 patch-based adversarial objective [12]。
DiT (Diffusion Transformers)
過往生成圖片的 Diffusion Model ,底層 diffusion 核心架構還是會以 U-Net 型態的 2D CNN 為主。 DiT 參考 ViT 把圖像 tokenized 成序列的方法,將壓縮過的 latent features 也轉換為 token ,在 diffusion 的核心部分完全改為 Transformer 架構。
雖然當初論文主要是以採用 ViT 好進行模型 scale up,與最大的模型打贏所有 SOTA 為論文亮點。但實際上將輸入從 2D CNN 改變成 Transformer 的一大好處是 token 的設計,搭配上合適的 positional embedding 可以讓輸入與輸出有更好的彈性,這也是支持 Sora 的一個重要基石。
DiT 的第一作者 Bill Peebles ,其實也是 Sora 技術文件上名列的第二作者。
Unify video and image
近期商用化的機器學習模型中,大多對大量數據有高度依賴。這些數據通常會直接從網路上大量爬取,再透過某些技術進行近乎全自動的標注,或是透過特殊的設計進行無標註資料的訓練。另一方面,多模態 (multi-modality) 資料也是日益普遍,探索如何有效利用不同類型的資料成為增強模型理解能力的關鍵。
在 Sora 中,把圖片與影片統一成 sequence of tokens 的設計是非常核心的思想。
在效率面,也導入、設計兼容不同解析度圖片與不同長度影片在同一個 batch 計算。另一方面,為了讓文字理解做得更好,也透過 re-captioing 海量的影片資料,優化 text encoder 與 vision encoder 作為 condition 的效果。
Tubelet from ViViT (Video ViT)
在 ViViT 中分析了將 video 輸入給 ViT 的方法。其中一個方法是把 spatio-temporal 資訊一起當成一個 token ,這樣一個 token 的區域稱為 Tubelet 。在 ViViT 論文中指出 Tubelet 是比較有效率的做法。我個人也認為這是一個相較合理的想法,因為像是圖片具有空間連續性,在影片中連續的時間與空間範圍內,特徵其實也是相似且高度關聯的。另一方面, Tubelet 其實也可以降低運算量,當 Tubelet 越大的時候,產生的 token 其實更少,或者說降維更多。
在 ViViT 論文中指出 Tubelet 是比較有效率的做法。像是圖片具有空間連續性,在影片中連續的時間與空間範圍內,特徵其實也是相似且高度關聯的。另一方面, Tubelet 其實也可以降低運算量,當 Tubelet 越大的時候,產生的 token 其實更少,或者說降維更多。
事實上,到這裡為主,其實 Sora 的架構大方向差不多有了。透過 ViViT 的觀察設計出 spacetime latent patches ,用於 video compression 的 encoder network 與 decoder network,再攤平後搭配 DiT 的架構在 latent features上diffusion 。
雖然除了 ViViT 與 latent compression 以外, Sora 可能還採用了其他可以動態調整 sequence 長度的技巧 (如 FlexViT [13]),但這邊暫時不多做臆測。
NaViT
不論如何進行 compression ,不同長度的影片必定還是會產生不同長度的 sequence of tokes 。為了讓大規模訓練變得可行,一個可以訓練不同長度 sequence 的方法還是不可或缺。
在過往的 Vision model 與 ViT 設計,大多都需要將輸入圖片或影片處理成固定的大小後,才能給網路進行運算。這樣的設計在 batch 運算也更為簡單,不過卻使得輸入格式固定變成一種限制。以圖像前處理來說,時常就需要 resize 或是進行邊界的 padding 。
NaViT (Native resolution ViT) 取經自 NLP 領域使用的 example packing [14],可以接受任意長度的 sequence 輸入任意解析度和長寬比的輸入,並且將不同長度的 sequence 連接再一起進行運算。原始論文使用這個方法,讓不同解析度與 aspect ratio 的資料可以有效率地一起被訓練。
推測 Sora 是用這個方法為基準,拓展成可以處理不同長度的影片。讓不同解析度的圖片與不同解析度、不同長度的影片即使會被抽取成不同長度的 sequence of tokens ,還是可以進行有效率的計算。
Language understanding
另一方面,為了讓模型可以進行 text to video ,文字的理解對於模型也是必備的。先前大部分的 text to image 採用 CLIP [15]把文字輸入轉成給圖像系統的特徵,但 CLIP 是描述文字跟圖像之間的關係,並沒有包含影片。如果可以把影片訓練進文字理解模型,就能夠更好地用文字進行 text to video。
在 Sora 技術文件中指出他們把影片一起訓練到 text embedding model 中。 Sora 使用 DALL-E 3 中 re-captioning [16] 的概念,用有標題的影片訓練一個 captioning model ,在生成新的標題。然後再用這些大量生成的標題去訓練 text embedding model。
DALL-E 3 中自動標註的標題分兩種,一種是簡單描述的 short synthetic captions (SSC) ,另一種是更適合 prompting 的 descriptive synthetic captions (DSC) 。
Undisclosed Details
在 Sora 技術文件中有許多現象、設計的細節並沒有揭露,但可以嘗試從相關研究方向推測一二。比如說,怎麼做到長影片的生成;或者是怎麼進行影片的融合與剪接;又或者是網路上爭議沸沸揚揚的物理世界理解。
為什麼可以生成長影片
其他知名的 text to video 包含 Google 的 LUMIERE [17]、 RunwayML 的 Gen-2 [18] 與 Stability.AI 的 Stable Video Diffusion [19] 等,這些方法大多都還是基於影像的方法,再進一步拓展到影片上。他們通常只能生成數秒的影片,無法像 Sora 這樣生成一分鐘長的影片。
比如說,在 Stable Video Diffusion 中主要使用的架構是增加 temporal convolution 的 UNet [20]。在訓練時,第一階段先訓練原本的UNet。第二階段把 UNet 加入新的 temporal convolution 與 attention 後,再接著訓練在影片上。
可想而知,在現在的硬體情境下,這樣的設計並不能一次生成太多 frame 的連續影片。因此通常還會採用一些在 frame 跟 frame 之間內插的技巧。讓 diffusion model 生成 key frames ,剩餘的部分在用另一個網路進行內插預測。
而 Sora 則是直接把圖片與影片共同表示為一種 unified token ,並且大部分情況都是由 Transformer 進行核心運算。雖然 Transformer 通常還是有 max sequence length 的上限,但因為 Sora 使用稱為 spacetime latent patches 的設計,可以透過將更多 T 禎的 patch encode 成一個 token 並在 decode 時得到更長的影片。
先不要做繁瑣的運算估測 (即先忽視網路架構與解析度差異) 來推論一下。從 ViViT 論文數據中, T = 4
是一個不會降太多表現的設定。假設 T = 4
的情況下,原本 Stable Video Diffusion 可以透過內插網路獲得的 3.89 秒影片,推論 Sora 有機會合理生成 15.89 秒的影片。
但這跟 60 秒還是有一段差距。那達成這個目標的可能性有幾種:
- ViViT 沒有考慮到直接作為 video compression network 是否可以 modeling 更大的 temporal features。
- 透過 video as condition 機制,把長影片視為延長任務,但這方法容易失去長時間事件的理解。
- 影片生成時 LDM 輸出的 latent 先通過 autoregressive network 後,再分段交給 video decoder network 還原回影片。
如何進行影片延長與合成連續影片
Sora 展示了模型可以進行圖片生成影片、影片向前向後延長與合成連續影片的能力。 在特定的情況下,生成出來的影片效果驚人。
在先前的其他論文中,其實就已經可以看到一些 image to video 的方法。如在 Stable Video Diffusion 中,將圖片用 CLIP image encoder 轉為 embedding 後,就可以作為 diffusion model 的 condition。
換而言之,只要有辦法把任何型態的資料,透過合理的方法抽成 embedding ,都可以作為 diffusion model 的 condition 。而 Sora 再優化 text embedding 時,也會訓練 visual encoder。因此,把 video 透過 video encoder 抽出來的 embedding 作為 diffusion model 的 condition ,就可能可以訓練影片延長與合成連續影片的功能。
當然如果 Sora 有 autoregressive model 的設計,那前向後延長的能力就很自然。不過合成連續影片,恐怕還是需要透過 condition 機制。
Sora 理解物理世界了嗎
從 Sora 生成的影片來看,許多影片已經具備了非常接近物理世界的表現。
在過往的圖像生成模型,最常遇到的問題就是圖片乍看不錯,但細節往往會有一些缺漏,通常都是跟物理世界、構造、碰撞與狀態改變相關的時候會顯得特別不足。比如說,人的手指數目或者是玻璃摔碎這種都是特別難的。
雖然在 Sora 給的影片中有許多這種符合物理現象的影片,在網頁中也指出他們在教 AI 理解與模擬物理世界的動作。但真的是這樣嗎?
這個答案現在很難直接說有或沒有。先撇除派系與公司之間的問題,從目前 Sora 公開的技術文件與相關的研究論文,我個人判斷這可能不能說是教 AI 理解物理世界。基於 Sora 是透過拓展性良好的模型、加上大量多模態的資料、大量訓練形成的結果,確實就是某些時候生成的影片可以符合我們對物理世界的想像。這個論點在某些 ML 巨頭也有相似的觀點。
不過不得不提及,派系與公司問題在近期的 AI/ML 研究其實可能造成蠻顯著的認知問題,特別是在 X (former Twitter) 上的言論。即使是許多頂尖的研究員,還是可以看到一些為了增加自己派系或公司聲望的言論,這些言論時常夾雜在正確的論點之間。雖然這是合理的事情,一部分是人的觀點本來就有所不同,在前瞻研究上沒有絕對正確與錯誤;另一部分是畢竟現在的 AI/ML 研究需要大量的人力與物力,需要有派系或公司利益掛勾是可以想像的。
不論如何, OpenAI 推出的 Sora 模型,建立在有效編碼不同解析度圖片與不同長度影片的 spacetime latent patches 與有效率地訓練方法上,使得 Sora 在生成影片時更加高效和自然。這一定程度標誌著影片生成技術的一個重要進展,也為影片理解的相關技術勾勒出了新的輪廓。
在生成圖像與影片的領域,生成是一件事情,修改又是另一件事情。相信有在生活中使用 AI 生成圖片系統都理解修改是邁向實用的下一個里程碑。在 Sora 中採用的方法是 SDEdit [22],是基於隨機微分方程(Stochastic Differential Equations, SDEs)的圖像合成與編輯方法,直接在 diffusion model 的框架下引入隨機過程來進行圖像的生成和修改。雖然目前已經有一定效果,但相信這邊的研究還是比較薄弱,未來不論是在什麼類型的生成題目,修改都還是一個重要的問題。
在近期的 ML 落地的產品中不難發現。資料量都是越多越好,而且許多商用 ML 產品用的資料量級根本不是一般公司可以跟得上的。這其實對於未來許多公司與團隊,是一個非常、非常重要的策略問題。一方面,過往通常專注在 ML 模型的計算量語言池上,現在更需要在產品設計時需要先評估到 ML 演算法的資料量級;另一方面,在公司 ML 基礎建設 (不論是公有、私有或混和雲) ,依照自己未來產品中長期的走向,透過資料量級估測,提前思考整個計算、儲存、頻寬、分流的設計也是彌足關鍵。
最後,也不得不提。
在這個資訊、科技不斷加速的時代,必須無時無刻保持自己對於所見所聞的思辨能力。
未來生成模型將持續改變大眾對於生活的體驗,這之中有好也有壞。畢竟,雖然技術研發本質是善良的,但這樣強大的生成模型,一定也會被有心人士用在立場操弄、詐騙上。這或許也暗示著,隨著模型能力強大的同時,數位浮水印 (digital watermarking)與生成資料辨識的技術也視一個一樣重要的研究方向與商機。
好了~這篇文章就先到這邊。老話一句,Deep Learning領域每年都會有大量高質量的論文產出,說真的要跟緊不是一件容易的事。所以我的觀點可能也會存在瑕疵,若有發現什麼錯誤或值得討論的地方,歡迎回覆文章或來信一起討論 :)
Related Topics
Reference
[1] Creating video from text [OpenAI Website]
[2] Video generation models as world simulators [OpenAI Website]
[3] Attention Is All You Need [NIPS 2017]
[4] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale [ICLR 2021]
[5] High-Resolution Image Synthesis with Latent Diffusion Models [CVPR 2022]
[6] Scalable Diffusion Models with Transformers [ICCV 2023]
[7] ViViT: A Video Vision Transformer [ICCV 2021]
[8] Patch n’ Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution [NeurIPS 2023]
[9] Denoising Diffusion Probabilistic Model [NeurIPS 2020]
[10] Taming Transformers for High-Resolution Image Synthesis [CVPR 2021]
[11] Perceptual Losses for Real-Time Style Transfer and Super-Resolution [ECCV 2016]
[12] High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs [CVPR 2018]
[13] FlexiViT: One Model for All Patch Sizes [CVPR 2023]
[14] Efficient Sequence Packing without Cross-contamination: Accelerating Large Language Models without Impacting Performance [arXiv 2021]
[15] Learning Transferable Visual Models From Natural Language Supervision [ICML 2021]
[16] Improving Image Captioning with Better Use of Captions [arXiv 2020]
[17]LUMIERE: A Space-Time Diffusion Model for Video Generation [Website]
[18] Gen-2: Create videos in any style you can imagine with Text to Video generation [Website]
[19] Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets [arXiv 2023]
[20] Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models [arXiv 2023]
[21] Long Video Generation with Time-Agnostic VQGAN and Time-Sensitive Transformer [ECCV 2022]
[22] SDEdit: Guided Image Synthesis and Editing with Stochastic Differential Equations [ICLR 2022]