Open-Sora是什麼
Open-Sora是由Colossal-AI團隊開源的視頻生成模型,旨在復現OpenAI的Sora視頻生成產品。Open-Sora同樣基於DiT架構,通過三個階段訓練:大規模圖像預訓練、大規模視頻預訓練和高質量視頻數據微調,以生成與文本描述相符的視頻內容。該開源解決方案涵蓋了整個視頻生成模型的訓練過程,包括數據處理、所有訓練細節和模型檢查點,供所有對文生視頻模型感興趣的人免費學習和使用。
Open-Sora的官網入口
- 官方項目主頁:https://hpcaitech.github.io/Open-Sora/
- GitHub代碼庫:https://github.com/hpcaitech/Open-Sora
Open-Sora的模型架構
Open-Sora模型採用當前流行的Diffusion Transformer(DiT)架構,使用華爲開源的PixArt-α高質量文本到圖像生成模型,並通過添加時間注意力層將其擴展爲生成視頻。具體設計如下:
核心組件
- 預訓練的VAE (變分自編碼器):VAE是用於數據壓縮的組件,它將輸入的視頻數據映射到一個潛在空間的低維表示。在Open-Sora中,VAE的編碼器部分在訓練階段用於壓縮視頻數據,而在推理階段,它從潛在空間中採樣高斯噪聲並生成視頻。
- 文本編碼器:這個組件負責將文本提示(如描述視頻內容的句子)轉換爲文本嵌入,這些嵌入隨後與視頻數據結合,以確保生成的視頻符合文本描述。
- STDiT (Spatial Temporal Diffusion Transformer):這是Open-Sora的核心組件,一個利用空間-時間注意力機制的DiT模型。STDiT通過串行地在二維空間注意力模塊上疊加一維時間注意力模塊來建模視頻數據中的時序關係。此外,交叉注意力模塊用於對齊文本的語義信息。
架構設計
- 空間-時間注意力機制:STDiT模型的每一層都包含空間注意力模塊和時間注意力模塊。空間注意力模塊處理視頻幀的二維空間特徵,而時間注意力模塊則處理幀之間的時序關係。這種設計使得模型能夠有效地處理視頻數據中的空間和時間維度。
- 交叉注意力:在時間注意力模塊之後,交叉注意力模塊用於將文本嵌入與視頻特徵融合,確保生成的視頻內容與文本描述相匹配。
- 訓練與推理流程:在訓練階段,VAE的編碼器將視頻數據壓縮,然後與文本嵌入一起用於訓練STDiT模型。在推理階段,從VAE的潛在空間中採樣出噪聲,與文本提示一起輸入到STDiT模型中,生成去噪後的特徵,最後通過VAE的解碼器解碼得到最終的視頻。
Open-Sora的復現方案
Open-Sora的訓練復現方案參考了Stable Video Diffusion (SVD)的工作,分爲三個階段:大規模圖像預訓練、大規模視頻預訓練和高質量視頻數據微調。通過這三個階段的訓練復現方案,Open-Sora模型能夠逐步提升其視頻生成的能力,從基礎的圖像理解到複雜的視頻內容生成,最終達到高質量的視頻生成效果。
第一階段:大規模圖像預訓練
在第一階段,模型通過大規模圖像數據集進行預訓練,以建立對圖像內容的基本理解。這個階段的目的是利用現有的高質量圖像生成模型(如Stable Diffusion)作爲基礎,來初始化視頻生成模型的權重。通過這種方式,模型能夠從圖像數據中學習到豐富的視覺特徵,爲後續的視頻預訓練打下堅實的基礎。
第二階段:大規模視頻預訓練
第二階段專注於大規模視頻數據的預訓練,目的是增強模型對視頻時間序列的理解。在這個階段,模型通過大量的視頻數據進行訓練,以學習視頻中的時序關係和動態變化。爲了提高模型的泛化能力,需要確保視頻題材的多樣性。此外,模型在這個階段會加入時序注意力模塊,以更好地處理時間序列數據。這個階段的訓練會在第一階段的基礎上進行,使用前一階段的權重作爲起點。
第三階段:高質量視頻數據微調
最後一個階段是對模型進行微調,使用高質量的視頻數據來進一步提升生成視頻的質量和真實感。在這個階段,雖然使用的視頻數據量可能比第二階段少,但視頻的時長、分辨率和質量都會更高。微調過程有助於模型捕捉到更加細緻和逼真的視頻內容,從而生成更加符合用戶期望的視頻。