視頻生成框架EasyAnimate正式開源!

   2024-06-04 56790
核心提示:近期,Sora模型的熱度持續(xù)上漲,社區(qū)中涌現(xiàn)了一些類Sora的開源項目,這些項目均基于Diffusion Transformer結(jié)構,使用Transformer結(jié)構取代了UNet作為擴散模型的基線,旨在生成更長、更高分辨率、且效果更好的視頻。
 近期,Sora模型的熱度持續(xù)上漲,社區(qū)中涌現(xiàn)了一些類Sora的開源項目,這些項目均基于Diffusion Transformer結(jié)構,使用Transformer結(jié)構取代了UNet作為擴散模型的基線,旨在生成更長、更高分辨率、且效果更好的視頻。

EasyAnimate是阿里云人工智能平臺PAI自主研發(fā)的DiT-based視頻生成框架,它提供了完整的高清長視頻生成解決方案,包括視頻數(shù)據(jù)預處理、VAE訓練、DiT訓練、模型推理和模型評測等。在預訓練模型的基礎上,EasyAnimate可通過少量圖片的LoRA微調(diào)來改變生成視頻的風格,相比已有方案具有更好的擴展性和完整性。

EasyAnimate在人工智能平臺PAI上進行了集成,供用戶一鍵訓練和部署,其支持以下功能:

· 最大分辨率768x768,最長144幀的視頻推理 (512x512分辨率可在A10 24G上推理)

· DiT 基線模型的訓練

· DiT LoRA模型的訓練(512x512分辨率可在A10 24G上訓練圖片Lora)

· VAE模型的訓練和推理

· 視頻預處理

用戶可以使用EasyAnimate來進行任意風格視頻模型的訓練和推理。目前,EasyAnimate項目仍處在初期,并將持續(xù)優(yōu)化來達到更好的生成效果,歡迎大家持續(xù)關注~

開源地址:https://github.com/aigc-apps/EasyAnimate

技術報告:https://arxiv.org/abs/2405.18991

效果展示

77a71c83120ace4b4a96bf1bae6fc21a_7fcf545ce2f3f2c95da226bba2704798.png

上圖包含了EasyAnimate部分測試視頻的第一幀圖像。更多結(jié)果可以參考https://github.com/aigc-apps/EasyAnimate/blob/v2/scripts/Result_Gallery.md。

數(shù)據(jù)預處理

a、視頻分割

對于較長的視頻分割,EasyAnimate使用PySceneDetect以識別視頻內(nèi)的場景變化并基于這些轉(zhuǎn)換,根據(jù)一定的門限值來執(zhí)行場景剪切,以確保視頻片段的主題一致性。切割后,我們只保留長度在3到10秒之間的片段用于模型訓練。

b、視頻清洗與描述

參考SVD的數(shù)據(jù)準備流程,EasyAnimate提供了一條簡單但有效的數(shù)據(jù)處理鏈路來進行高質(zhì)量的數(shù)據(jù)篩選與打標。并且支持了分布式處理來提升數(shù)據(jù)預處理的速度,其整體流程如下:

b535efd632845dffddf9fdb25b514aa6_7991a8793c166249c56515b9b5f57ae0.png

 

· 時長過濾: 統(tǒng)計視頻基本信息,來過濾時間短/分辨率低的低質(zhì)量視頻

· 美學過濾: 通過計算視頻均勻4幀的美學得分均值,來過濾內(nèi)容較差的視頻(模糊、昏暗等)

· 文本過濾: 通過easyocr計算中間幀的文本占比,來過濾文本占比過大的視頻

· 運動過濾: 計算幀間光流差異來過濾運動過慢或過快的視頻。

· 文本描述: 通過videochat2vila對視頻幀進行recaption。PAI也在自研質(zhì)量更高的視頻recaption模型,將在第一時間放出供大家使用。

模型結(jié)構

EasyAnimate使用了PixArt-alpha作為基礎模型進行開發(fā),并在此基礎上修改了VAE和DiT的模型結(jié)構來更好地支持視頻的生成。EasyAnimate的整體結(jié)構如下:

267273e89e4d14c9b963314ef8610b17_edbadc3f518afef116f7fcc28236304d.png

為了引入特征點在時間軸上的特征信息,EasyAnimate引入了運動模塊(Motion Module),以實現(xiàn)從2D圖像到3D視頻的擴展。為了更好的生成效果,其聯(lián)合圖片和視頻將Backbone連同Motion Module一起Finetune。在一個Pipeline中即實現(xiàn)了圖片的生成,也實現(xiàn)了視頻的生成。

另外,參考U-ViT,其將跳連接結(jié)構引入到EasyAnimate當中,通過引入淺層特征進一步優(yōu)化深層特征,并且0初始化了一個全連接層給每一個跳連接結(jié)構,使其可以作為一個可插入模塊應用到之前已經(jīng)訓練的還不錯的DIT中。

同時,其提出了Slice VAE,用于解決MagViT在面對長、大視頻時編解碼上的顯存困難,同時相比于MagViT在視頻編解碼階段進行了時間維度更大的壓縮。

我們將在下面的部分對所使用的視頻VAE,視頻Diffusuion Transformer進行簡單介紹,更多算法細節(jié)可查看技術報告。

a、視頻VAE

2f2a54333335a651c5009c4a90e39c98_85e0dcf390915b00436432acc3f4b12b.png

視頻VAE的一個著名例子是MagViT,大家均認為其被用于Sora框架。EasyAnimateV2版本采用MagViT進行探索研究。MagViT采用Casual 3D Conv。在使用普通3D Conv之前,該塊在時間軸前引入填充,從而確保每一幀可以利用它先前的信息來增強因果關系,同時不考慮到后幀的影響。另外MagViT還允許模型同時處理圖像和視頻。盡管它在視頻編碼和解碼方面很優(yōu)雅,但在超長視頻序列上進行訓練時,它仍面臨挑戰(zhàn),這主要是GPU VRAM的限制。當視頻增大時,MagViT所需的內(nèi)存往往甚至超過A100 GPU的可用內(nèi)存,這使得對大視頻(例如1024x1024x40)進行一步解碼變得不可行。這個挑戰(zhàn)突出了分批處理的必要性,它有助于增量解碼,而不是試圖一步解碼整個序列。

對于分批處理,其首先在空間維度上(寬度和高度上)試驗切片機制。然而,這可能導致一個視頻不同塊上有不一致的光照。因此,其轉(zhuǎn)向沿時間維度(時間上)進行切片。通過這種方法,一組視頻幀被分為幾個部分,每個部分都被單獨編碼和解碼,如圖所示。但由于MagViT的獨特機制,3D Conv前需要進行前向填充,對應的潛在latent中,每個部分的第一個latent由于填充特征僅包含較少的信息。這種不均勻的信息分布是一個可能阻礙模型優(yōu)化的方面。此外,MagViT使用這種批處理策略還影響處理過程中視頻的壓縮率。

總結(jié)上述的結(jié)果,MagViT在處理極長視頻序列的訓練過程中面臨挑戰(zhàn),對于一些大且長的視頻序列,直接對完整視頻序列編解碼的編解碼顯存開銷極大,因此需要用到批處理來進行改善?;诖?,EasyAnimate 引入了一種切片機制到MagViT中,提出了Slice VAE,該VAE在面臨不同輸入時使用不同的處理策略,當輸入的是視頻幀時,則在高寬與時間軸上進行壓縮當輸入為512x512x8的視頻幀時,將其壓縮為64x64x2的潛在latent當輸入的是圖片時,則僅僅在高寬上進行壓縮,當輸入為512x512的圖片時,將其壓縮為64x64x1的潛在latent。所提出的Slice VAE的架構如上圖所示。為了進一步提高解碼的性能,EasyAnimate 在時間維度進行切片并引入了特征共享機制,從而獲得時空更一致的特征,并在時間維度實現(xiàn)更高的壓縮率。通過這種方式,編碼的特征封裝了時間信息,從而節(jié)省了計算資源,并同時提高了生成結(jié)果的質(zhì)量。

參考Stable Diffusion,EasyAnimate分兩階段訓練了所提出的VAE,在第一階段共同訓練視頻的編碼器和解碼器,在第二階段僅對解碼器進行微調(diào)來更好地提升解碼視頻的效果。Slice VAE的與相關Diffusion Transformer權重會在近期開源。

b、視頻Diffusion Transformer

45718cc9c5d97a7a305bb8ac7623c349_609499f17ef49b7231c9f689cbc9efef.png

在圖像DiT的基礎上,EasyAnimate首先引入了Motion Module 在時序維度上引入注意力機制來讓模型學習時序信息,以進行連續(xù)視頻幀的生成。同時,利用額外的網(wǎng)格計算(Grid Reshape),來擴大注意力機制的input token數(shù)目,從而更多地利用圖像的空間信息以達到更好的生成效果。運動模塊專門設計用于嵌入時間信息。通過在時間維度上集成注意力機制,該模型獲得了時間軸上的先驗知識,這對生成視頻運動至關重要。

另外,由于觀察到深層DIT的訓練經(jīng)常是不穩(wěn)定的,模型的損失有時候會從0.05急劇增加到0.2,最終增加到1.0。為了加強模型優(yōu)化過程,避免DIT層反向傳播過程中的梯度坍塌,EasyAnimate在訓練過程中引入了U-VIT,在相應的Transform Block之間使用了跳連接,這種基于UNet的框架對于Stable Diffusion模型來說是有效的。為了將這種修改無縫集成到現(xiàn)有的擴散變換器架構中,而無需進行全面的再訓練,EasyAnimate初始化了幾個具有零填充權重的完全連接層,如上圖(c)中的灰色塊。

訓練過程

EasyAnimate的DiT模型訓練分為三階段。

65b5e9fc5eb6ffb5440a47e379ef4eb3_e06eeb9447d8696bd9382c94f2f0806f.png

首先,在圖像數(shù)據(jù)上訓練DiT模型來快速適應新訓練的VAE模型。

其次,融合了大量的圖像和視頻數(shù)據(jù)集來訓練motion module模塊,將DiT模型從圖像生成遷移到視頻生成上來。僅訓練motion module的條件下,模型能夠生成微動的視頻,但生成的畫面質(zhì)量和運動范圍有限。

因此,在最后一個階段,用進一步篩選后的高質(zhì)量數(shù)據(jù)集對整個DiT模型進行微調(diào)來達到更好的模型效果。

首先訓練256x256x144的視頻模型,然后擴展到512x512x144的視頻模型,最后擴展到768x768x144的視頻模型。

可擴展性(微調(diào)訓練)

EasyAnimate不僅支持整個模型的基線訓練,同時支持Lora訓練,具有良好的可擴展性。

以Lora訓練為例,其可以支持使用視頻數(shù)據(jù)或者圖片數(shù)據(jù)對Backbone進行Lora訓練,以引入期望運動的信息。EasyAnimate提供了一個Minimalism極簡主義圖片數(shù)據(jù)集,其中的demo圖像如下所示:

微信圖片_20240605141401

參考Training-Lora-Wiki,完成Lora模型的微調(diào)后,可以進入頁面中選擇對應的Lora模型進行預測。

faa5a8d00669f0c110833762b068820f_0475515f47e0823b5a87dee134f45b9f.png

聯(lián)系我們

· 項目開源地址:https://github.com/aigc-apps/EasyAnimate

· 釘釘交流群號: 77450006752

· 微信交流群:

參考文檔

· https://github.com/aigc-apps/EasyAnimate

· magvit: https://github.com/google-research/magvit

· PixArt: https://github.com/PixArt-alpha/PixArt-alpha

· Open-Sora-Plan: https://github.com/PKU-YuanGroup/Open-Sora-Plan

· Open-Sora: https://github.com/hpcaitech/Open-Sora

· Animatediff: https://github.com/guoyww/AnimateDiff

· https://huggingface.co/liuhaotian/llava-v1.6-vicuna-7b

· https://github.com/baofff/U-ViT

 

 
 
更多>同類資訊
免責申明
推薦資訊
點擊排行
最新資訊更多>
最新供應更多>
網(wǎng)站首頁  |  聯(lián)系方式  |  關于我們  |  問題解析  |  版權隱私  |  使用協(xié)議  |  網(wǎng)站地圖  |  排名推廣  |  廣告服務  |  積分換禮  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報  |  粵ICP備1207862號

中國智能化網(wǎng)(zgznh®)--引領工業(yè)智能化產(chǎn)業(yè)發(fā)展 共享智能化+優(yōu)質(zhì)平臺

版權所有:深圳市智控網(wǎng)絡有限公司 學術指導:深圳市智能化學會

粵ICP備12078626號

深公網(wǎng)安備案證字第 4403101901094 號 | 粵公網(wǎng)安備 44030702001206號