簡介#
文字轉影片生成(Text-to-Video Generation)是生成式 AI 的重要應用,能根據文字描述產生影片。本章涵蓋建構文字轉影片模型所需的關鍵元件。
需求釐清#
以下是候選人與面試官之間的典型對話:
候選人: 預期生成的影片長度為何? 面試官: 目標為五秒鐘的影片。
候選人: 目標影片解析度是多少? 面試官: 應達到高畫質水準,以適用於各種現代平台與裝置。目標為 720p 解析度。
候選人: 生成影片的目標幀率是否為每秒 24 幀(24 FPS)? 面試官: 是的。
候選人: 生成影片的預期延遲為何? 面試官: 影片生成的運算成本很高。初期階段,數分鐘的處理時間是可以接受的。後續迭代中,我們會針對效率與速度進行優化。
候選人: 是否需要聚焦於特定的影片類別? 面試官: 不需要,系統應能生成涵蓋各種類型與主題的影片。
候選人: 系統是否需要支援多語言文字輸入,還是先從英文開始? 面試官: 先從英文開始。
候選人: 生成的影片是否需要包含音訊輸出? 面試官: 目前先聚焦於無聲影片。音訊可作為未來迭代的增強功能,但現階段不是優先項。
候選人: 訓練資料的大約規模為何? 面試官: 我們有大型影片資料集,約 1 億部附帶字幕的多元影片。部分字幕可能有雜訊或非英文。
候選人: 建構文字轉影片模型的常見方法是擴展預訓練的文字轉圖片模型來處理影片。我們是否有預訓練的文字轉圖片模型? 面試官: 有的,這是合理的假設。
候選人: 考量影片生成的高運算需求,我們的運算預算為何? 面試官: 訓練影片生成系統需要大量運算資源。我們有超過 6000 張 H100 GPU [2] 可用於文字轉影片的訓練。
候選人: 是否需要確保系統具備防護措施,以防止生成具有攻擊性或有害的影片? 面試官: 好問題。是的,我們需要確保系統對使用者是安全的。
關鍵需求摘要:
- 影片長度: 5 秒
- 解析度: 720p(1280x720)
- 幀率: 24 FPS
- 延遲: 初期可接受數分鐘
- 語言: 僅英文
- 音訊: 無聲(無音訊)
- 訓練資料: 約 1 億部附字幕影片
- 運算資源: 6000+ H100 GPU
將問題建構為機器學習任務#
本節將文字轉影片生成建構為機器學習任務,並強調第 9 章文字轉圖片生成以外的額外考量。
定義輸入與輸出#
- 輸入: 描述場景、動作或敘事的文字
- 輸出: 一段五秒鐘的 720p(1280x720)影片,在視覺與時間維度上與給定的文字提示對齊
例如,給定文字輸入「一隻狗在晴天的公園裡玩接球遊戲」,系統應生成描繪此場景的影片——捕捉狗的動作、公園的環境,以及晴天的氛圍。
選擇合適的機器學習方法#
文字轉影片生成在本質上與文字轉圖片生成相似:兩者都是從文字描述生成視覺內容。自迴歸模型(Autoregressive Modeling) 和擴散模型(Diffusion Models) 等技術在文字轉圖片生成中廣受歡迎,同樣適用於文字轉影片生成。擴散模型在生成細緻且逼真的視覺效果方面表現出色,因此我們選擇擴散模型作為系統的基礎。
然而,兩者之間存在一個關鍵差異:影片生成需要處理並生成一系列的幀,而非單一圖片,這大幅增加了運算負荷。例如:
- 生成五秒鐘、24 FPS 的影片意味著需要產生 120 幀
- 一張 512x512 的圖片在高階 GPU(如 NVIDIA H100)上大約需要 1 秒生成
- 每幀 720p 的像素量約為 3.6 倍,因此生成五秒鐘 720p 影片可能需要約 7 分鐘
為了應對複雜度與運算成本,我們採用潛在擴散模型(Latent Diffusion Model,LDM) 方法。此方法最初由 Stable Diffusion 論文 [3] 推廣,後來被大多數影片生成模型採用,包括 OpenAI 的 Sora [1] 和 Meta 的 Movie Gen [4]。
潛在擴散模型(LDM)#
LDM 的核心概念是讓擴散模型在低維度潛在空間(Latent Space) 中運作,而非直接在像素空間中操作。模型學習對這些壓縮後的潛在表徵進行去噪,而非直接處理原始影片像素。
LDM 依賴壓縮網路(Compression Network) 將影片像素映射到潛在表徵。
壓縮網路#
壓縮網路將影片像素映射到潛在空間。它接收原始影片作為輸入,並輸出壓縮後的潛在表徵,同時降低:
- 幀數(時間維度)
- 解析度(空間維度)
壓縮網路通常基於變分自編碼器(Variational Autoencoder,VAE) [5],與擴散模型分開訓練。VAE 由兩部分組成:
- 視覺編碼器(Visual Encoder):將輸入影片轉換為潛在表徵
- 視覺解碼器(Visual Decoder):從潛在空間重建原始影片幀
LDM 如何解決運算複雜度問題#
LDM 所需的運算力低於標準擴散模型,因為處理壓縮表徵比處理高維度像素更為經濟。以下為範例:
- 原始影片: 24 FPS、5 秒、720p = 120 幀,1280x720 像素
- 壓縮後(時間與空間各縮減 8 倍,類似 [4]):
- 空間維度:160x90 像素
- 時間維度:15 幀
壓縮後的表徵比像素空間的等效資料小 512 倍,使 LDM 訓練效率提升 512 倍。這種效率帶來更快的生成速度與更低的資源消耗——對於高解析度影片資料尤其重要。
使用已訓練的 LDM 生成影片#
使用已訓練的 LDM 生成影片的步驟:
- 在潛在空間中從純雜訊開始
- LDM 逐步精煉雜訊,將其轉為去噪後的潛在表徵
- 視覺解碼器將潛在表徵轉換回像素空間,產生最終影片
我們選擇 LDM 方法來建構文字轉影片系統,因為它高效且能降低運算負荷。更多關於 LDM 的資訊,請參閱 [6]。
資料準備#
文字轉影片生成的資料集包含 1 億組文字描述與對應影片的配對,涵蓋各種主題與動作。本節介紹如何為訓練準備影片與字幕。
影片準備#
聚焦於三個關鍵步驟:
- 過濾不適當的影片
- 標準化影片
- 預先計算潛在空間中的影片表徵
過濾不適當的影片#
大型資料集中常包含不需要的內容。此步驟移除不適當的影片,確保模型僅從高品質資料中學習:
- 移除低品質或過短的影片: 參照 Movie Gen [4] 的做法,移除低解析度、過短、慢動作或具有壓縮失真的影片
- 移除重複影片(去重): 使用如 [7] 的去重方法來消除相同影片,確保訓練資料的多樣性
- 移除有害影片: 使用有害內容偵測模型識別並移除含有不當內容的影片,防止模型生成有害輸出
標準化影片#
- 調整影片長度: 將較長的影片切分為五秒鐘的片段,確保所有訓練資料具有相同長度
- 標準化幀率: 將高幀率影片重新編碼為 24 FPS
- 調整影片尺寸: 將影片縮放並裁切至標準大小(例如 1280x720 像素)
預先計算潛在空間中的影片表徵#
由於 LDM 在潛在空間中運作,它僅需要潛在表徵作為輸入。一般的訓練迭代流程為:
- 從訓練資料中的影片擷取幀
- 將這些幀通過預訓練的壓縮網路以獲得潛在表徵
- 使用潛在表徵來訓練擴散模型
然而,這種方法效率低落——每次訓練都要為數百萬部影片擷取幀並進行壓縮,會大幅拖慢擴散模型的訓練速度。
優化策略: 預先計算所有影片的潛在表徵並快取於儲存空間中。訓練期間,擴散模型直接存取預先計算的表徵,無需等待幀擷取或壓縮,顯著加速訓練流程。
粗估計算: 每幀影片壓縮為潛在表徵後,大小縮減 512 倍。若一部 1,000 幀的影片約為 1,000 MB,其潛在表徵約為 2 MB。快取 1 億部影片的潛在表徵需要約 200 TB——以現代儲存能力而言尚在可管理範圍,尤其對比訓練中節省的時間。
字幕準備#
高品質且一致的字幕至關重要。部分字幕可能遺漏或不相關。關鍵準備步驟:
- 處理遺漏或非英文字幕: 對於無字幕或非英文字幕的影片,使用如 LLaMa3-Video [8] 或 LLaVA [9] 等模型自動生成描述性字幕
- 重新生成字幕(Re-captioning): 使用預訓練的影片字幕模型(如 LLaMa3-Video、LLaVA)改善既有字幕,生成更長、更詳細的版本。Sora 團隊 [1] 已證明此流程對於提升品質與文字對齊至關重要
- 預先計算字幕嵌入(Caption Embeddings): 使用文字編碼器預先計算字幕嵌入,用於擴散模型訓練時的條件輸入,加速 LDM 訓練流程
模型開發#
架構選擇#
為文字轉影片擴散模型選擇架構時,有兩個主要選項:U-Net 和 DiT。我們分別檢視並確定將它們擴展至影片所需的額外層。
用於影片的 U-Net#
U-Net 架構回顧#
U-Net 架構由一系列下採樣區塊(Downsampling Blocks) 和上採樣區塊(Upsampling Blocks) 組成。每個下採樣區塊包含:
- 2D 卷積:處理並更新圖片特徵
- 交叉注意力層(Cross-Attention Layer):透過關注文字提示來更新特徵
這些層主要捕捉單一圖片內像素之間的關係。但對於影片而言,維持時間一致性(Temporal Consistency) 對於流暢的動態與幀間連續性至關重要。現有的層在個別幀內進行空間運算,而非跨幀運算。
新增時間層#
為了讓 U-Net 理解幀間關係,我們注入兩種常用的時間層(Temporal Layers):
- 時間注意力(Temporal Attention)
- 時間卷積(Temporal Convolution)
時間注意力利用注意力機制跨幀運作。每個特徵透過關注其他幀中的相關特徵來更新。圖 12 展示了第 2 幀的特徵如何透過關注其他幀的特徵來更新。
時間卷積對 3D 資料段施加卷積運算子,捕捉時間維度。圖 13 說明了 2D 與 3D 時間卷積的差異。
要將 U-Net 擴展至影片,需在每個下採樣與上採樣區塊中交錯配置時間卷積與時間注意力層。這些層使架構能夠建模動態並生成時間上一致的幀序列。層交錯的詳細資訊請參閱 [10]。
用於影片的 DiT#
與主要依賴卷積的 U-Net 不同,DiT 主要基於 Transformer 架構。DiT 由四個主要元件組成:
- Patchify(分塊)
- 位置編碼(Positional Encoding)
- Transformer
- Unpatchify(還原)
Patchify(分塊)#
此元件透過三個步驟將輸入轉換為一系列嵌入向量:
- 分割輸入為較小的固定大小區塊
- 展平每個區塊,形成一系列向量
- 投影展平後的區塊為區塊嵌入(Patch Embeddings),使用投影層將嵌入大小對齊至 Transformer 的隱藏大小
圖片與影片的處理流程相似:
- 圖片: 分割為固定大小的 2D 區塊
- 影片: 分割為 3D 區塊
位置編碼#
位置編碼元件為原始序列中的每個位置產生嵌入,為 Transformer 提供每個區塊位置的資訊。
編碼位置的不同方法:
- 固定 vs. 可學習: 部分方法在訓練時使用固定的位置編碼;其他方法則使其可學習
- 維度: 每個區塊一個數值(1D)、圖片用 2D 座標、或空間加時間位置用 3D 座標
沒有單一最佳方法——需要實驗來找出最適合特定資料與任務的方案。本章遵循 OpenSora [11],使用 RoPE [12] 位置編碼。更多文字轉影片模型中位置編碼的資訊,請參閱 [4]。
Transformer#
Transformer 處理嵌入序列以及條件信號(如文字提示),為每個區塊預測雜訊。
Unpatchify(還原)#
Unpatchify 將預測的雜訊向量轉換回原始輸入維度。它包含:
- LayerNorm 進行正規化
- 線性層(Linear Layer) 調整向量長度
- 重塑操作(Reshape Operation) 形成最終輸出
U-Net vs. DiT#
兩種架構都能有效用於文字轉影片生成:
| 面向 | U-Net | DiT |
|---|---|---|
| 基礎 | 基於卷積 | 基於 Transformer |
| 成熟度 | 歷史較長,經過廣泛測試 | 較新,但結果更優異 |
| 可擴展性 | 有限 | 隨資料與運算增加而良好擴展 |
| 靈活性 | 需要較多修改以適應新模態 | 更容易適應影片與其他輸入 |
| 代表模型 | Stable Video Diffusion [13]、EMU Video [14] | Movie Gen [4]、Sora [1] |
本章遵循 Sora,選擇 DiT 架構。
訓練#
訓練影片擴散模型與訓練圖片擴散模型高度相似。每個訓練迭代包含三個步驟:
- 加入雜訊: 隨機取樣一個時間步以決定雜訊等級,然後依此將雜訊加入輸入影片
- 雜訊預測: DiT 模型接收含噪影片並預測所加入的雜訊,條件為文字提示與取樣的時間步等信號
- 損失計算: 比較預測雜訊與實際雜訊
擴散訓練的詳細回顧請參閱第 9 章。
機器學習目標與損失函數#
主要損失函數為重建損失(Reconstruction Loss),使用均方誤差(Mean Squared Error,MSE) 計算。此損失衡量預測雜訊與實際雜訊之間的差異,鼓勵準確的雜訊預測。機器學習目標是最小化此重建損失。
研究者已嘗試使用額外的損失函數來增強文字轉影片的效能。詳情請參閱 [4]。
訓練影片擴散模型的挑戰#
訓練 DiT 模型用於文字轉影片生成涉及多項挑戰:
- 缺乏大規模影片-文字資料
- 高解析度影片生成的運算成本
缺乏大規模影片-文字訓練資料#
訓練大型模型需要大量資料。與文字轉圖片模型(受益於大量圖片-文字配對資料)不同,配對的影片-文字資料相對稀缺。
兩種常見策略來應對此問題:
- 同時使用圖片與影片資料訓練: 將每張圖片視為單幀影片,使模型可同時在圖片-文字與影片-文字配對上訓練
- 先在圖片資料上預訓練,再在影片資料上微調: 先在圖片-文字配對上預訓練以建立穩固的視覺基礎,再在影片-文字配對上微調
兩種策略都利用了數億筆圖片-文字資料。為求簡潔,我們選擇第一種策略(單階段訓練),但兩者在實務上都能有效運作。
高解析度影片生成的運算成本#
影片通常包含數百幀,使處理與生成比圖片更為昂貴。高解析度輸出(720p、1080p)更加劇了挑戰。
降低運算成本的常見策略:
- 採用 LDM 方法: 使用壓縮網路將影片轉換至低維度潛在空間,減少運算負荷
- 預先計算影片表徵: 在訓練前快取潛在表徵,避免重複運算
- 空間超解析度模型(Spatial Super-Resolution): 如 Google 的 Imagen Video [15] 所提出,先以較低解析度生成影片,再進行升級。例如以 720p 生成,再升級至 1080p 或 4K
- 時間超解析度模型(Temporal Super-Resolution): 如 [15] 所提出,在幀之間進行內插以提升時間解析度。例如以 12 FPS(60 幀)生成,再內插至 24 FPS(120 幀)
- 更高效的架構: 採用高效注意力機制 [16] 與專家混合模型(Mixture of Experts,MoE) [17] 等技術,降低運算負荷並加速訓練
- 分散式訓練: 使用張量並行(Tensor Parallelism) 等技術,將模型、資料或兩者分散至多個裝置,顯著加速訓練。概述請參閱第 1 章
取樣#
取樣過程從隨機雜訊開始,模型迭代地對樣本進行去噪,直到在潛在空間中獲得完全去噪的影片表徵。更多細節請參閱第 9 章。
評估#
離線評估指標#
一致的基準測試對評估影片生成模型至關重要。VBench [18] 和 Movie Gen Bench [19] 提供精選的提示集,設計用於測試影片生成的各個面向,包括動態連貫性、時間一致性與場景複雜度。
評估聚焦於三個關鍵領域:
- 幀品質
- 時間一致性
- 影片-文字對齊
幀品質#
幀品質獨立衡量每一幀的品質,使用以下指標:
- FID(Frechet Inception Distance)[20]
- IS(Inception Score)[21]
整體品質透過所有幀的 FID 與 IS 分數取平均來計算。其他如 LPIPS [22] 與 KID [23] 等指標也可使用。
FID 和 IS 衡量的是個別幀的品質,並未考量時間一致性。一部影片可能具有高品質的幀,但缺乏流暢的過渡,導致 FID 分數高卻缺乏視覺連貫性。
時間一致性#
時間一致性衡量視覺內容從一幀到下一幀的過渡平滑度,確保生成影片中的自然流動。關鍵指標為 Frechet Video Distance(FVD)。
FVD#
FVD [24] 擴展了 FID,同時評估視覺品質與時間一致性。它在嵌入空間中比較生成影片與真實影片的統計分布。
計算 FVD 的步驟:
- 生成影片: 使用待評估模型產生大量影片
- 擷取特徵: 將每部影片(生成與真實)通過預訓練的 I3D 模型 [25],從特定層擷取特徵。I3D 模型將 Inception v3 [26] 擴展至序列資料的動作辨識
- 計算均值與共變異數: 分別計算生成影片與真實影片擷取特徵的均值與共變異數
- 計算 Frechet 距離: 將兩個分布之間的 Frechet 距離作為 FVD 分數
較低的 FVD 分數表示分布之間更高的相似度,代表生成的影片更逼真且時間一致性更佳。
影片-文字對齊#
影片-文字對齊衡量生成影片與其條件文字的匹配程度。常用的指標為 CLIP 相似度分數:
- 擷取幀級特徵: 將每幀影片通過預訓練的 CLIP 圖片編碼器;使用 CLIP 文字編碼器編碼文字
- 計算相似度: 對每一幀,計算視覺特徵與文字特徵之間的餘弦相似度
- 聚合: 將每幀的分數合併為單一對齊分數(透過平均、最大值或其他統計方法)
較高的 CLIP 相似度分數表示生成影片與對應文字的對齊程度越好。
人工評估#
人工評估提供主觀的評價,補充自動化指標的不足。流程如下:
- 使用兩個不同模型從測試提示生成影片
- 將配對的影片(分別來自兩個模型)呈現給人工標註者
- 標註者根據影片-文字對齊、影片品質與時間一致性選擇較佳的影片
此配對比較揭示哪個模型整體表現較佳。
線上評估指標#
文字轉影片模型的線上指標與文字轉圖片模型相似:
- 點擊率(Click-Through Rate)
- 頁面停留時間(Time Spent on the Page)
- 使用者回饋(User Feedback)
- 轉換率(Conversion Rate)
這些指標衡量使用者的參與度、滿意度以及模型在生產環境中的整體表現。
整體機器學習系統設計#
本節從三個管線(Pipeline)的角度檢視文字轉影片生成系統的整體設計:
- 資料管線(Data Pipeline)
- 訓練管線(Training Pipeline)
- 推論管線(Inference Pipeline)
資料管線#
資料管線透過以下步驟準備訓練資料:
- 過濾不適合的圖片與影片
- 標準化格式與尺寸
- 預先計算並儲存潛在表徵
- 重新生成字幕以確保相關性與細節
- 使用預訓練的文字編碼器預先計算並儲存字幕嵌入
訓練管線#
訓練管線使用資料管線準備的資料來訓練模型。
推論管線#
推論管線處理即時的使用者請求,從文字提示生成影片。它包含多個確保系統品質與安全性的關鍵元件。
大部分元件與第 9 章文字轉圖片生成中探討的相似。文字轉影片生成特有的元件包括:
視覺解碼器#
LDM 在潛在空間而非像素空間中生成輸出。視覺解碼器使用壓縮網路將潛在表徵轉換回像素空間。
時間超解析度#
此元件在生成的幀之間進行內插,使最終影片的動態更為流暢。
其他討論主題#
若面試結束時仍有餘裕,可能的討論主題包括:
- 確保取樣的靈活性,支援不同時長、解析度與長寬比 [1]
- 將文字轉影片模型擴展至下游應用:修復(Inpainting)、外擴(Outpainting)、影片風格轉換、幀內插、超解析度與圖片轉影片動畫 [10]
- 支援控制生成影片(期望的動態程度、相機與物體運動)[27]
- 使用漸進式蒸餾(Progressive Distillation) 技術降低訓練的運算需求 [28]
- 空間與時間超解析度模型的細節 [15]
- 重新生成字幕模型的細節 [9][8]
- 不同的雜訊排程器(Noise Schedulers)[29]
- 雜訊條件增強技術(Noise Conditioning Augmentation)[30]
- 將文字轉影片模型個人化至特定主題 [31]
- 文字轉影片模型的 ControlNet [32]
- Stable Cascade 方法的細節 [33]
- 視覺壓縮網路的細節 [13]
總結#
