阿里巴巴重磅開源EasyAnimate!基于DiT的長視頻制作生態系統 精華
文章鏈接:https://arxiv.org/pdf/2405.18991
開源地址:https://github.com/aigc-apps/EasyAnimate
今天和大家一起學習下EasyAnimate,這是一種用于視頻生成的高級方法,利用Transformer架構的強大性能實現高效成果。擴展了最初設計用于2D圖像合成的DiT框架,通過引入運動模塊以適應3D視頻生成的復雜性。該模塊用于捕捉時間動態,從而確保幀的一致性和運動過渡的平滑性。運動模塊可以適應各種DiT基線方法,以生成不同風格的視頻。在訓練和推理階段,它還能夠生成具有不同幀速率和分辨率的視頻,適用于圖像和視頻。
此外,還引入了slice VAE,這是一種壓縮時間軸的創新方法,方便生成長時間的視頻。目前,EasyAnimate能夠生成144幀的視頻。基于DiT提供了一個全面的視頻制作生態系統,涵蓋數據預處理、VAE訓練、DiT模型訓練(包括基線模型和LoRA模型)以及端到端的視頻推理。目前仍在不斷努力提高我們方法的性能。
介紹
人工智能在文本、圖像和聲音的創意內容生成方面已經決定性地擴展了其應用范圍。在視覺領域,擴散模型被廣泛用于圖像生成和修改。開源項目如Stable Diffusion在文本轉圖像方面取得了顯著進展。然而,在視頻生成方面,當前模型仍面臨一些挑戰,如質量欠佳、視頻長度有限以及運動不自然,這表明該技術還有很大的進步空間。
一些開創性的研究在利用Stable Diffusion方法進行視頻合成方面取得了進展,重點是用于去噪過程的UNet架構。最近,Sora 展現了非凡的視頻生成能力,能夠生成長達一分鐘的高保真視頻。這一進步顯著提升了現實世界模擬的真實性,相比其前輩有了很大的提高。此外,這揭示了Transformer架構在視頻生成中的關鍵作用,促使開源社區以新的熱情深入探討Transformer結構的復雜性。
在此背景下,研究者們推出了EasyAnimate,一個簡單而強大的視頻生成基線。該框架提供了一個易于訪問的訓練流程,涵蓋了VAE、DiT的訓練,并促進了文本到圖像和文本到視頻生成的混合訓練。值得注意的是,設計了一種切片機制以支持長時間視頻生成。為VAE實施了兩階段訓練策略,以增強解碼效果。
在DiT方面,通過引入時空運動模塊塊來探索視頻生成的時間信息。此外,從UViT引入的長連接豐富了我們的架構。DiT的訓練分為三個階段:最初進行圖像訓練以適應新訓練的VAE;隨后在大規模數據集上訓練運動模塊以生成視頻;最后,整個DiT網絡在高分辨率視頻和圖像上進行訓練。此外,還提出了一套全面的數據預處理協議,旨在策劃高質量的視頻內容及其對應的字幕。期望EasyAnimate能作為未來視頻合成研究的強大且高效的基線,進一步推動創新、進步和探索。
模型架構
下圖1展示了EasyAnimate的概述。是基于PixArt-α構建了EasyAnimate。它包括一個文本編碼器、視頻VAE(視頻編碼器和視頻解碼器)以及Diffsuion Transformer(DiT)。使用T5編碼器作為文本編碼器。
視頻VAE
在早期的研究中,基于圖像的變分自編碼器(VAE)被廣泛用于視頻幀的編碼和解碼,例如AnimateDiff、ModelScopeT2V和OpenSora。一種流行的圖像VAE實現(Stability-AI),如在Stable Diffusion中使用的那樣,將每個視頻幀編碼為一個單獨的潛在特征,大大縮小了幀的空間維度至寬度和高度的八分之一。這種編碼技術忽視了時間動態,將視頻降解為靜態圖像表示。傳統基于圖像的VAE的一個顯著局限是其無法壓縮時間維度。因此,細微的幀間時間關系未能被充分捕捉,導致潛在特征較大,CUDA內存需求急劇增加。這些挑戰顯著阻礙了此類方法在長視頻創建中的實用性。因此,主要挑戰在于如何在視頻編碼器和解碼器中有效壓縮時間維度。
此外,在使VAE能夠同時使用圖像和視頻進行訓練。先前的研究(Blattmann)表明,將圖像整合到視頻訓練流程中可以更有效地優化模型架構,從而改進其文本對齊并提高輸出質量。
一個著名的視頻VAE例子是MagViT,據信它被用于Sora框架。為了提高時間維度的壓縮效率,在MagViT中引入了切片機制,并提出了Slice VAE。Slice VAE的架構見下圖2。
MagViT:最初在EasyAnimate中采用了MagViT。它采用了因果3D卷積塊。該塊在應用普通3D卷積之前,在時間軸上引入了一種前置時間填充方式,從而確保幀利用先前信息增強時間因果關系,同時不受后續幀的影響。此外,MagViT還允許模型處理圖像和視頻。通過將圖像訓練與視頻訓練結合,它能夠利用豐富且易獲取的圖像,這已被證明在DiT的訓練過程中可以增強文本-圖像對齊,從而顯著改善視頻生成結果。盡管MagViT在視頻編碼和解碼方面有其優雅的處理方式,但在極長視頻序列的訓練中面臨挑戰,主要是由于內存限制。具體而言,所需內存通常超過A100 GPU的可用內存,使得無法一步解碼大視頻(如1024x1024x40)。這個挑戰突顯了需要批處理以實現增量解碼,而不是嘗試在一步中解碼整個序列的必要性。
Slice VAE:為了實現批處理,首先在空間維度上實驗了切片機制。然而,這導致了不同批次之間的輕微照明不一致。隨后,我們轉向在時間維度上進行切片。通過這種方法,一組視頻幀被分為若干部分,每部分分別進行編碼和解碼,如前面圖2(a)所示。然而,不同批次之間的信息分布是不均衡的。例如,由于MagViT中的前向填充過程,第一批次包含一個實際特征和額外的填充特征,信息量較少。這種不均衡的信息分布是一個顯著的方面,可能會阻礙模型優化。此外,這種批處理策略也會影響視頻處理過程中的壓縮率。
另一種方法是實現跨不同批次的特征共享,如前面圖2(b)所示。在解碼過程中,特征與其前后的特征(如果有的話)進行連接,從而產生更一致的特征并實現更高的壓縮率。這涉及通過SpatialTemporalDownBlock(在編碼器中標記為淺橙色)對特征進行壓縮,目標是空間和時間維度。通過這種方式,編碼特征包含時間信息,從而節省計算資源并同時提高生成結果的質量。
視頻Diffsuion Transformer
Diffsuion Transformer的架構如下圖3所示。該模型基于PixArt-α,并通過引入如圖3(b)所示的運動模塊,使其從2D圖像合成擴展到3D視頻生成。此外,還集成了UViT的連接,如圖3(c)所示,以增強訓練過程的穩定性。
運動模塊:運動模塊專門設計用于利用幀長度中嵌入的時間信息。通過在時間維度上整合注意力機制,模型獲得了同化這些時間數據的能力,這對于生成視頻運動至關重要。同時,采用網格重塑操作來增加注意力機制的輸入token池,從而增強對圖像中空間細節的利用,最終實現更優異的生成性能。值得注意的是,與AnimateDiff類似,訓練好的運動模塊可以適應各種DiT基線模型,以生成不同風格的視頻。
U-VIT:在訓練過程中,觀察到深層的DITs趨于不穩定,表現為模型的損失急劇增加,從0.05到0.2,最終上升到1.0。為了加強模型優化過程并避免在通過DIT層進行反向傳播時的梯度崩潰,在相應的transformer塊之間使用了長跳躍連接,這對于基于UNet框架的Stable Diffusion模型非常有效。為了在現有的Diffsuion Transformer架構中無縫集成這一修改,而無需全面重新訓練,初始化了幾個權重為零的全連接層(前面圖3(c)中的灰色塊)。
數據預處理
EasyAnimate的訓練包括圖像數據和視頻數據。本節詳細介紹視頻數據處理方法,包括三個主要階段:視頻拆分、視頻過濾和視頻字幕。這些步驟對于篩選出具有詳細字幕的高質量視頻數據,以便能夠概括視頻內容的精髓至關重要。
視頻拆分
對于較長的視頻拆分,首先使用PySceneDetect來識別視頻中的場景變化,并根據這些過渡進行場景剪切,以確保視頻片段的主題一致性。剪切后,僅保留長度在3到10秒之間的片段用于模型訓練。
視頻過濾
從三個方面過濾視頻數據,即運動評分、文本區域評分和美學評分。
運動過濾:在訓練視頻生成模型時,確保視頻展示出運動感以區分于靜態圖像至關重要。同時,保持運動的一定一致性也很重要,因為過于不穩定的運動會影響視頻的整體連貫性。為此,使用RAFT (Teed and Deng, 2020) 在指定的每秒幀數(FPS)之間計算幀之間的運動評分,并根據適當的運動評分過濾視頻,以微調運動的動態性。
文本過濾:視頻數據中通常包含特定的文本信息(例如字幕),這不利于視頻模型的學習過程。為了解決這個問題,使用光學字符識別(OCR)確定視頻中文本區域的比例。OCR在采樣幀上進行,以表示視頻的文本評分。然后,仔細過濾掉任何文本區域超過視頻幀面積1%的視頻片段,確保剩下的視頻對模型訓練是最優的。
美學過濾:此外,互聯網上有許多低質量的視頻。這些視頻可能缺乏主題焦點或因過度模糊而受到影響。為了提高訓練數據集的質量,我們計算美學評分并保留高評分的視頻,從而獲得視覺上吸引人的訓練集用于視頻生成。
視頻字幕
視頻字幕的質量直接影響生成視頻的效果。對幾種大型多模態模型進行了全面比較,權衡了它們的性能和操作效率。經過仔細考慮和評估,選擇了VideoChat2和VILA來進行視頻數據的字幕生成,因為它們在我們的評估中表現出色,特別是在實現包含細節和時間信息的視頻字幕方面非常有前途。
訓練過程
總共使用了大約1200萬張圖像和視頻數據來訓練視頻VAE模型和DiT模型。我們首先訓練視頻VAE,然后使用三階段的粗到細訓練策略將DiT模型適應新的VAE。
視頻VAE
MagViT:使用Adam優化器,beta=(0.5, 0.9),學習率為1e-4進行訓練,總共訓練了350k步。總批量大小為128。
Slice VAE:從前述的MagViT初始化Slice VAE的權重。如下圖4所示,Slice VAE分兩階段訓練。首先,我們在200k步內訓練整個VAE,使用Adam優化器,beta=(0.5, 0.9),批量大小為96,學習率為1e-4。接下來,按照Stable Diffusion(Rombach et al., 2021)的程序,在第二階段僅訓練解碼器100k步,以更好地提高解碼視頻的保真度。
視頻Diffsuion Transformer
如下圖5所示,DiT模型的訓練分為三個階段。首先,在引入新的視頻VAE后,我們通過僅使用圖像數據來對齊DiT參數與該VAE。隨后,我們使用大規模視頻數據集與圖像數據一起預訓練運動模塊,從而為DiT引入視頻生成能力。使用桶策略(bucket strategy)來訓練不同分辨率的視頻。在這個階段,盡管模型能夠生成具有基本運動的視頻,但輸出往往質量不佳,表現為運動有限和清晰度欠佳。最后,我們使用高質量的視頻數據精細調整整個DiT模型,以提高其生成性能。模型從較低分辨率逐漸擴展到較高分辨率進行訓練,這是一種有效的策略,可以節省GPU內存并減少計算時間。
實驗
目前已經在GitHub倉庫中發布了checkpoint。您可以在以下地址查看生成結果并嘗試使用EasyAnimate:https://github.com/aigc-apps/EasyAnimate。
結論
本文介紹了EasyAnimate,這是一種基于transformer架構的高性能AI視頻生成和訓練管道。基于DiT框架,EasyAnimate集成了運動模塊,以確保一致的幀生成和流暢的運動過渡。該模型能夠在訓練和推理過程中適應不同的幀數和分辨率組合,適用于生成圖像和視頻。
本文轉自AI生成未來 ,作者:Jiaqi Xu等
