Open-Sora全面開源升級:支援16s影片生成和720p解析度
机器之心發表於2024-04-25
Open-Sora 在開源社群悄悄更新了,現在單鏡頭支援長達16秒的影片生成,解析度最高可達720p,並且可以處理任何寬高比的文字到影像、文字到影片、影像到影片、影片到影片和無限長影片的生成需求。我們來試試效果。生成個橫屏聖誕雪景,發b站
還能生成單鏡頭16秒的長影片,這下人人都能過把編劇癮了GitHub:https://github.com/hpcaitech/Open-Sora更酷的是,Open-Sora 依舊全部開源,包含最新的模型架構、最新的模型權重、多時間/解析度/長寬比/幀率的訓練流程、資料收集和預處理的完整流程、所有的訓練細節、demo示例和詳盡的上手教程。作者團隊在GitHub上正式釋出了Open-Sora 技術報告[1],根據筆者的瞭解,本次更新主要包括以下幾項關鍵特性:- 單模型支援任何寬高比,不同解析度和時長的文字到影像、文字到影片、影像到影片、影片到影片和無限長影片的生成需求;
- 提出了更穩定的模型架構設計,支援多時間/解析度/長寬比/幀率訓練;
作者團隊表示,他們對Open-Sora 1.0中的STDiT架構進行了關鍵性改進,旨在提高模型的訓練穩定性和整體效能。針對當前的序列預測任務,團隊採納了大型語言模型(LLM)的最佳實踐,將時序注意力中的正弦波位置編碼(sinusoidal positional encoding)替換為更加高效的旋轉位置編碼(RoPE embedding)。此外,為了增強訓練的穩定性,他們參考SD3模型架構,進一步引入了QK歸一化技術,以增強半精度訓練的穩定性。為了支援多解析度、不同長寬比和幀率的訓練需求,作者團隊提出的ST-DiT-2架構能夠自動縮放位置編碼,並處理不同大小尺寸的輸入。根據Open-Sora 技術報告指出,Open-Sora 採用了一種多階段訓練方法,每個階段都會基於前一個階段的權重繼續訓練。相較於單一階段訓練,這種多階段訓練透過分步驟引入資料,更高效地實現了高質量影片生成的目標。初始階段大部分影片採用144p解析度,同時與圖片和 240p,480p 的影片進行混訓,訓練持續約1周,總步長81k。第二階段將大部分影片資料解析度提升至240p和480p,訓練時長為1天,步長達到22k。第三階段進一步增強至480p和720p,訓練時長為1天,完成了4k步長的訓練。整個多階段訓練流程在約9天內完成,與Open-Sora1.0相比,在多個維度提升了影片生成的質量。作者團隊表示,基於Transformer的特性,可以輕鬆擴充套件 DiT 架構以支援影像到影像以及影片到影片的任務。他們提出了一種掩碼策略來支援影像和影片的條件化處理。透過設定不同的掩碼,可以支援各種生成任務,包括:圖生影片,迴圈影片,影片延展,影片自迴歸生成,影片銜接,影片編輯,插幀等。作者團隊表示,受到UL2[2]方法的啟發,他們在模型訓練階段引入了一種隨機掩碼策略。具體而言,在訓練過程中以隨機方式選擇並取消掩碼的幀,包括但不限於取消掩碼第一幀、前k幀、後k幀、任意k幀等。作者還向我們透露,基於Open-Sora 1.0的實驗,應用50%的機率應用掩碼策略時,只需少量步數模型能夠更好地學會處理影像條件化。在Open-Sora 最新版本中,他們採用了從頭開始使用掩碼策略進行預訓練的方法。此外,作者團隊還貼心地為推理階段提供了掩碼策略配置的詳細指南,五個數字的元組形式在定義掩碼策略時提供了極大的靈活性和控制力。OpenAI Sora的技術報告[3]指出,使用原始影片的解析度、長寬比和長度進行訓練可以增加取樣靈活性,改善幀和構圖。對此,作者團隊提出了分桶的策略。具體怎麼實現呢?透過深入閱讀作者釋出的技術報告,我們瞭解到,所謂的桶,是(解析度,幀數,長寬比)的三元組。團隊為不同解析度的影片預定義了一系列寬高比,以覆蓋大多數常見的影片寬高比型別。在每個訓練週期epoch開始之前,他們會對資料集進行重新洗牌,並將樣本根據其特徵分配到相應的桶中。具體來說,他們會將每個樣本放入一個解析度和幀長度均小於或等於該影片特性的桶中。作者團隊進一步透露,為了降低計算資源的要求,他們為每個keep_prob和batch_size引入兩個屬性(解析度,幀數),以減少計算成本並實現多階段訓練。這樣,他們可以控制不同桶中的樣本數量,並透過為每個桶搜尋良好的批大小來平衡GPU負載。作者在技術報告中對此進行了詳盡的闡述,感興趣的小夥伴可以閱讀作者在GitHub上釋出的技術報告來獲取更多的資訊:https://github.com/hpcaitech/Open-Sora作者團隊甚至對資料收集與處理環節也提供了詳盡的指南。根據作者在技術報告中的闡述,在Open-Sora 1.0的開發過程中,他們意識到資料的數量和質量對於培育一個高效能模型極為關鍵,因此他們致力於擴充和最佳化資料集。他們建立了一個自動化的資料處理流程,該流程遵循奇異值分解(SVD)原則,涵蓋了場景分割、字幕處理、多樣化評分與篩選,以及資料集的管理系統和規範。同樣,他們也將資料處理的相關指令碼無私地分享至開源社群。對此感興趣的開發者現在可以利用這些資源,結合技術報告和程式碼,來高效地處理和最佳化自己的資料集。Open-Sora 最令人矚目的亮點在於,它能夠將你腦中的景象,透過文字描述的方式,捕捉並轉化為動人的動態影片。那些在思維中一閃而過的畫面和想象,現在得以被永久地記錄下來,並與他人分享。在這裡,筆者嘗試了幾種不同的prompt,作為拋磚引玉。比如,筆者嘗試生成了一個在冬季森林裡遊覽的影片。雪剛下不久,松樹上掛滿了皚皚白雪,暗色的松針和潔白的雪花錯落有致,層次分明。又或者,在一個靜謐夜晚中,你身處像無數童話裡描繪過黑暗的森林,幽深的湖水在漫天璀璨的星河的照耀下波光粼粼。在空中俯瞰繁華島嶼的夜景則更是美麗,溫暖的黃色燈光和絲帶一樣的藍色海水讓人一下子就被拉入度假的悠閒時光裡。城市裡的車水馬龍,深夜依然亮著燈的高樓大廈和街邊小店,又有另一番風味。除了風景之外,Open-Sora 還能還原各種自然生物。無論是紅豔豔的小花,還是慢悠悠扭頭的變色龍, Open-Sora 都能生成較為真實的影片。筆者還嘗試了多種 prompt 測試,還提供了許多生成的影片供大家參考,包括不同內容,不同解析度,不同長寬比,不同時長。筆者還發現,僅需一個簡潔的指令,Open-Sora便能生成多解析度的影片短片,徹底打破創作限制。我們還可以餵給Open-Sora一張靜態圖片讓它生成短片Open-Sora 還可以將兩個靜態圖巧妙地連線起來,輕觸下方影片,將帶您體驗從下午至黃昏的光影變幻,每一幀都是時間的詩篇。再比如說我們要對原有影片進行編輯,僅需一個簡單的指令,原本明媚的森林便迎來了一場鵝毛大雪。值得注意的是,Open-Sora的模型權重已經完全免費公開在他們的開源社群上,不妨下載下來試一下。由於他們還支援影片拼接功能,這意味著你完全有機會免費創作出一段帶有故事性的小短片,將你的創意帶入現實。權重下載地址:https://github.com/hpcaitech/Open-Sora儘管在復現類Sora文生影片模型的工作方面取得了不錯的進展,但作者團隊也謙遜地指出,當前生成的影片在多個方面仍有待改進:包括生成過程中的噪聲問題、時間一致性的缺失、人物生成質量不佳以及美學評分較低。對於這些挑戰,作者團隊表示,他們將在下一版本的開發中優先解決,以期望達到更高的影片生成標準,感興趣的朋友不妨持續關注一下。我們期待Open-Sora社群帶給我們的下一次驚喜。開源地址:https://github.com/hpcaitech/Open-Sora[1] https://github.com/hpcaitech/Open-Sora/blob/main/docs/report_02.md[2] Tay, Yi, et al. "Ul2: Unifying language learning paradigms." arXiv preprint arXiv:2205.05131 (2022).[3] https://openai.com/research/video-generation-models-as-world-simulators