Sora學習(一):Sora技術路徑整體認知

前文:最近跟著DataWhale組隊學習這一期“Sora原理與技術實戰”,本篇博客主要是基于DataWhale成員、廈門大學平潭研究院楊知錚研究員分享的Sora技術原理詳解課件內容以及參考網上一些博客資料整理而來(詳見文末參考文獻),算是對Sora技術路徑的發展有個系統性的認識。

Sora是什么

Sora是大火的人工智能公司OpenAI推出的新一代文生視頻AI模型,其官網為https://openai.com/sora。Sora的亮點在于:最長支持60s高清視頻生成、確保連續畫面中人和場景的一致性、根據視頻生成視頻時具有絲滑視頻過渡能力、同一場景多視角/鏡頭生成能力、支持任意分辨率、寬高比的視頻生成,因此秒殺Pika、Runway等同行,在2024年2月份也火爆出拳,OpenAI的技術報告稱其為“作為世界模擬器的視頻生成模型”(源地址:Video generation models as world simulators)。然而Sora也有許多局限,特別是對物理規律的理解仍然比較有限,例如生成一個玻璃杯摔碎的場景時并未很好表現碎片四溢的物理過程。

Sora的能力可以總結為:文生視頻、圖生視頻和視頻生成視頻。Sora是通過不同長度、分辨率和長寬比的視頻和圖像數據共同訓練出的一種“文本條件擴散模型”,其中Sora只是模型名統稱,底層包含Diffusion model、Transformer等SOTA模型架構。

Sora模型訓練

Sora模型架構

Sora整合了自家的GPT和DALL-E模型,其中,GPT-4就是基于Transformer架構的大型神經網絡,目前在自然語言處理領域獨樹一幟,而最新的DALL-E 3是基于文本提示生成圖像的圖像生成模型。Sora使用了DALL-E 3中的重新標注技術,準備了大量帶有文本標題的視頻數據,通過訓練一個高度描述性的標題模型,為所有視頻生成文本標題,來提高文本準確性,改善了視頻質量。同時,Sora利用GPT將用戶簡短的提示轉化為更長、更詳細的標題,指導視頻的生成過程,從而使Sora能夠生成高質量的視頻,并準確地遵循用戶的指示。如下為一張Sora模型訓練流程示意圖:
Sora模型訓練流程圖由于Sora未完全開放,目前魔塔社區所推測的Sora模型架構(與Latent Diffusion Model很像)如下:原始數據輸入經過視頻壓縮網絡后變成時間和空間上都被壓縮的潛在表示,隨后在時空潛空間上,基于conditioning訓練中的video caption技術所生成視頻-文本對的指導,通過Diffusion Transformer(DiT)生成新的視頻潛在表示,最后經過解碼器映射回像素空間。
Sora architectureSora模型訓練一些要點:

  • 類似于大語言模型(LLM)中的基本訓練單位為:文本token,圖像模型的基本訓練單位:圖像patch;通過visual encoder將高維度的視頻數據(NxHxW幀圖像)切分為圖像塊(spatial temporal patch),從而將視頻壓縮到一個低維度的spacetime latent space;
  • 圖像patch包含時間序列信息和空間像素信息,基于patch的表示有助于模型處理圖像局部信息,并能訓練具有不同分辨率、持續時間和長寬比的視頻和圖像;
  • 圖像patch將展開為一維向量,并通過einops張量操作庫進行操作,從而有效處理圖像數據;

擴散模型之DDPM

Sora采用了Diffusion模型中的DDPM (Denoising Diffusion Probabilistic Models)作為圖像生成模型。相比GAN來說,Diffusion模型訓練更穩定,而且能夠生成更多樣本,OpenAI的論文《Diffusion Models Beat GANs on Image Synthesis》也證明了Diffusion 模型能夠超越GAN。一些主流的文生圖像模型如DALL-E 2, stable diffusion以及Imagen都紛紛采用了Diffusion模型用于圖像生成。

一般來說,Diffusion模型包含兩個過程,均為一個參數化的馬爾科夫鏈 (Markov chain):

  • 前向擴散過程 (diffusion):對一張圖像逐漸添加高斯噪音直至變成隨機噪音的過程(數據噪聲化
  • 反向生成過程 (reverse diffusion):從隨機噪音開始逐漸去噪直至生成一張圖像,這也是需要求解/訓練的部分(去噪生成數據

Diffusion模型與其它主流生成模型的對比如下所示:
generative model overview
目前所采用的Diffusion模型大都是基于2020年的工作《DDPM: Denoising Diffusion Probabilistic Models》。DDPM對之前的擴散模型進行了簡化和改進,更加注重對噪聲的預測而非直接生成圖像,并通過變分推斷(variational inference)來進行建模,這主要是因為擴散模型也是一個隱變量模型(latent variable model),相比VAE這樣的隱變量模型,擴散模型的隱變量是和原始數據是同維度的,而且擴散過程往往是固定的。

DDPM的優化目標是讓網絡預測的噪音和真實的噪音一致,其訓練過程如下圖所示:

  • Training階段:隨機選擇一個訓練樣本 x 0 x_0 x0? -> 從 1 ? T 1-T 1?T隨機抽樣一個 t t t -> 隨機產生噪音并計算當前所產生的帶噪音數據 -> 輸入網絡預測噪音(紅色框所示) -> 計算產生的噪音和預測的噪音的L2損失 -> 計算梯度并更新網絡。
  • Sampling階段:從一個隨機噪音開始,并用訓練好的網絡預測噪音,然后計算條件分布的均值(紅色框所示),然后用均值加標準差乘以一個隨機噪音,直至 t = 0 t=0 t=0完成新樣本的生成(最后一步不加噪音)。

PS:實際的Sampling代碼實現和上述過程略有區別(而是先基于預測的噪音生成,并進行了clip處理(范圍[-1, 1],原始數據歸一化到這個范圍),然后再計算均值(這應該算是一種約束,既然模型預測的是噪音,那么我們也希望用預測噪音重構處理的原始數據也應該滿足范圍要求)
DDPM
擴散模型的核心在于訓練噪聲預測模型,由于噪聲和數據同維度,可以選擇采用AutorEncoder架構作為噪聲預測模型。DDPM所采用的是一個基于residual模塊和self-attention模塊的U-Net模型(encoder-decoder架構)。注意,DDPM在各個residual模塊中都引入了time embedding(類似于transformer中的position embedding)。

DDPM基于加噪和去噪的圖像生成過程可以用一張圖形象概括:
DDPM2

Sora關鍵技術拆解

Sora可以拆分為Visual encoder, Diffusion Transformer和Transformer Decoder三個部分,下面對其分別闡述:

Visual encoder

輸入的視頻數據可以看成是NxHxW的若干幀圖像, 通過Encoder被切分成spatial temporal patch,這些patch最終會被flatten成一維向量,送入diffusion model。其中,這里的patch的定義借鑒了Vision Transformer (ViT)中的patch,一些要點如下:

  • 由于這里的每個樣本都是來自輸入圖像的一個patch,模型對樣本在序列中的位置一無所知。因此,圖像被連同positional embedding vector一起提供到encoder中。這里需要注意的一點是位置嵌入也是可學習的,所以實際上不需要將硬編碼的向量 w.r.t 位置。
  • 將一維(壓平)的patches組成一個大矢量,并得到乘以一個embedding矩陣,這也是可學習的,創建embedding patches。將這些與位置向量相結合,輸入到transformer中。

對視頻進行采樣/處理的方法包括:

  • 攤大餅法:幀圖像拼接成大圖,切成token,此后按ViT方式處理
  • 切塊法:對多幀圖像切為若干個tuplet,每個tuplet包含時間、寬、高信息,經過spatial-tempral attention直接建模獲得有效的視頻表征token
    token method

Diffusion Transformer

Sora的主要是Peebles William(直博3年半期間3篇一作論文,非常solid),他于2023年在ICCV上發表了Diffusion Transformer (DiT) 的工作,可以認為:DiT = VAE encoder + ViT + DDPM + VAE decoder,但把DPPM中的卷積U-Net架構換成了transformer。這篇工作是通過結合diffusion model和transformer,從而達到可以scale up model來提升圖像生成質量的效果。DiT文章在technical report的reference中給出,由于把圖像的scaling技術運用到視頻場景也非常直觀,因此可以確定是Sora的技術之一。

下圖展示了DiT的主要原理,輸入是一張256x256x3的圖片,對圖片做切patch后經過投影得到每個patch的token,得到32x32x4的latent(在推理時輸入直接是32x32x4的噪聲),結合當前的step t, 輸入label y作為輸入, 經過N個DiT Block通過mlp進行輸出,得到輸出的噪聲以及對應的協方差矩陣,經過T個step采樣,得到32x32x4的降噪后的latent。
DiT architecture

思考與總結

  1. 截止到2024年3月2日,Sora還未完全開放使用,只有內測,現有的中文互聯網中所謂“帶你玩轉Sora”的AI付費課程都是純純割韭菜;
  2. Sora文生視頻模型可謂是之前許多模型的集大成者,雖然沒有公開太多技術細節,但我們可以學習到Sora背后所涉及的一系列模型架構和訓練方法(如Transformor, Diffusion模型等);
  3. 要訓練一個多模態大模型(LMM),海量訓練數據 + 優秀模型架構 + 算力資源都缺一不可,其中算力限制對中國公司發展人工智能提出了挑戰;
  4. 作為一家違背“不盈利,造福人類”初衷的微軟旗下閉源商業公司(doge),OpenAI是不會透露過多許多技術細節的,包括:如何構建Sora的具體模型、Transformer需要scale up到多大、從頭訓練到收斂的trick、如何實現訓練長達1分鐘視頻的支持(切斷+性能優化?)、如何保證視頻實體的高質量和一致性,這些我們都還不完全清楚,需要大量工程實踐去摸索。

參考文獻

[1] DataWhale開源課程《Sora原理與技術實戰》
[2] DataWhale成員優秀筆記分享:sora筆記(一):sora前世今生與技術梗概
[3] 怎么理解今年 CV 比較火的擴散模型(DDPM)? - 小小將的回答 - 知乎
https://www.zhihu.com/question/545764550/answer/2670611518
[4] Ho, J., et al. (2020). “Denoising diffusion probabilistic models.” Advances in Neural Information Processing Systems 33: 6840-6851.
[5] Peebles, W. and S. Xie (2023). Scalable diffusion models with transformers. Proceedings of the IEEE/CVF International Conference on Computer Vision.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717568.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717568.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717568.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【談一談】并發編程_鎖的分類

【談一談】并發編程_鎖的分類 Hello!~大家好!~每天進步一點點,日復一日,我們終將問劍頂峰 這里主要是介紹下我們常用的鎖可以分為幾類,目的是整體框架作用~方便后續的并發文章 說白了,這篇就是開頭哈~ 本文總綱: 一.可重入鎖和不可重入鎖 我們開發中一般用到的都是可重入鎖比如…

Photoshop 2023:重塑創意,引領數字藝術新紀元

在數字藝術的浩瀚星空中,Adobe Photoshop 2023(簡稱PS 2023)如同一顆璀璨的新星,為Mac和Windows用戶帶來了前所未有的創意體驗。這款強大的圖像處理軟件不僅繼承了前作的精髓,更在細節上進行了諸多創新,讓每…

運行Python文件時出現‘utf-8’code can‘t decode byte 如何解決?(如圖)

如圖 亦或者出現“SyntaxError: Non-UTF-8 code starting with \xbb ” 出現這種問題往往是編碼格式導致的,我們可以在py文件中的第一行加入以下代碼: # codingutf-8或者 # codinggdk優先使用gbk編碼 解釋一下常用的兩種編碼格式: utf-…

朱維群將出席用碳不排碳碳中和頂層科技路線設計開發

演講嘉賓:朱維群 演講題目:“用碳不排碳”碳中和頂層科技路線設計開發 簡介 姓名:朱維群 性別:男 出生日期:1961-09-09 職稱:教授 1998年畢業于大連理工大學精細化工國家重點實驗室精細化工專業&…

什么是B+樹,和B樹有什么不同?

👉博主介紹: 博主從事應用安全和大數據領域,有8年研發經驗,5年面試官經驗,Java技術專家,WEB架構師,阿里云專家博主,華為云云享專家,51CTO 專家博主 ?? 個人社區&#x…

Spring Initializer環境問題

1.基于jdk8與本地 環境準備 1)下載jdk8并安裝 2&#xff09;下載maven 3.6.3并解壓放入D盤maven目錄下&#xff0c;去掉外層 設置阿里源 打開settings.xml,在mirrors標簽之內增加&#xff0c;注意粘貼后</id>中的/有可能被刪掉&#xff0c;要自己補上 <mirror>&l…

健身房預約小程序制作詳細步驟解析

如果你是一位健身愛好者&#xff0c;或者是一位健身教練&#xff0c;你一定知道預約健身的痛苦。傳統的預約方式不僅麻煩&#xff0c;而且效率低下。但是&#xff0c;現在&#xff0c;我們可以使用一種神仙工具——喬拓云網&#xff0c;來搭建一個屬于自己的健身預約小程序&…

【VTKExamples::PolyData】第四十三期 PolyDataPointSampler

很高興在雪易的CSDN遇見你 VTK技術愛好者 QQ:870202403 前言 本文分享VTK樣例PolyDataPointSampler,并解析接口vtkPolyDataPointSampler,希望對各位小伙伴有所幫助! 感謝各位小伙伴的點贊+關注,小易會繼續努力分享,一起進步! 你的點贊就是我的動力(^U^)ノ~YO …

如何使用 CrewAI 構建協作型 AI Agents

一、前言 AI Agents 的開發是當前軟件創新領域的熱點。隨著大語言模型 (LLM) 的不斷進步&#xff0c;預計 AI 智能體與現有軟件系統的融合將出現爆發式增長。借助 AI 智能體&#xff0c;我們可以通過一些簡單的語音或手勢命令&#xff0c;就能完成以往需要手動操作應用程序才能…

運維的利器–監控–zabbix–grafana

運維的利器–監控–zabbix–grafana 一、介紹 Grafana 是一個跨平臺的開源的度量分析和可視化工具 , 可以通過將采集的數據查詢然后可視化的展示 。zabbix可以作為數據源&#xff0c;為grafana提供數據&#xff0c;然后grafana將數據以圖表或者其他形式展示出來。zabbix和gra…

基于YOLOv的目標追蹤與無人機前端查看系統開發

一、背景與簡介 隨著無人機技術的快速發展&#xff0c;目標追蹤成為無人機應用中的重要功能之一。YOLOv作為一種高效的目標檢測算法&#xff0c;同樣適用于目標追蹤任務。通過集成YOLOv模型&#xff0c;我們可以構建一個無人機前端查看系統&#xff0c;實現實時目標追蹤和可視化…

零基礎學編程,中文編程工具之進度標尺構件的編程用法

零基礎學編程&#xff0c;中文編程工具之進度標尺構件的編程用法 一、前言 今天給大家分享的中文編程開發語言工具 進度條構件的用法。 編程入門視頻教程鏈接 https://edu.csdn.net/course/detail/39036 編程工具及實例源碼文件下載可以點擊最下方官網卡片——軟件下載——…

機器人持續學習基準LIBERO系列9——數據集軌跡查看

0.前置 機器人持續學習基準LIBERO系列1——基本介紹與安裝測試機器人持續學習基準LIBERO系列2——路徑與基準基本信息機器人持續學習基準LIBERO系列3——相機畫面可視化及單步移動更新機器人持續學習基準LIBERO系列4——robosuite最基本demo機器人持續學習基準LIBERO系列5——…

Python AI 實現繪畫功能(附帶源碼)

本文我們將為大家介紹如何基于一些開源的庫來搭建一套自己的 AI 作圖工具。 需要使用的開源庫為 Stable Diffusion web UI&#xff0c;它是基于 Gradio 庫的 Stable Diffusion 瀏覽器界面 Stable Diffusion web UI GitHub 地址&#xff1a;GitHub - AUTOMATIC1111/stable-dif…

快速解決maven依賴沖突

我們在開發過程中經常出現maven依賴沖突&#xff0c;或者maven版本不匹配的情況&#xff0c;我們可以使用阿里云原生腳手架來做maven管理&#xff0c;添加需要的組件&#xff0c;然后點擊獲取代碼&#xff0c;就可以獲得對應的依賴文件。

【重要公告】對BSV警報系統AS的釋義

??發表時間&#xff1a;2024年2月15日 由BSV區塊鏈協會開發并管理的BSV警報系統&#xff08;Alert System&#xff0c;以下簡稱“AS”&#xff09;是BSV網絡的重要組件。它是一個復雜的系統&#xff0c;主要職能是在BSV區塊鏈網絡內發布信息。這些信息通常與網絡訪問規則NAR相…

c# 任務(Task)介紹

任務&#xff08;Task&#xff09; Task作為C#異步的核心&#xff0c;Task位于System.Threading.Tasks命名空間下。 創建任務的基本原理是使用線程池&#xff0c;也就是說任務最終也是要交給線程去執行的。但是微軟優化了任務的線程池&#xff0c;使線程的控制更加精準和高效…

自定義TypeHandler

自定義TypeHandler 繼承BaseTypeHandler指定具體的泛型 MappedTypes({Date.class}) MappedJdbcTypes({JdbcType.DATE}) public class DateTimeWithTImeZoneTypeHandler extends BaseTypeHandler<Date> {Log log LogFactory.getLog(DateTimeWithTImeZoneTypeHandler.cl…

C++基于多設計模式下的同步異步日志系統day4

&#x1f4df;作者主頁&#xff1a;慢熱的陜西人 &#x1f334;專欄鏈接&#xff1a;C基于多設計模式下的同步&異步日志系統 &#x1f4e3;歡迎各位大佬&#x1f44d;點贊&#x1f525;關注&#x1f693;收藏&#xff0c;&#x1f349;留言 只要內容主要實現了同步日志消息…

Kubernetes的Sevice管理

服務原理: 所有服務都是根據這個服務衍生或者變化出來,根服務---- 服務感知后端靠標簽 slelector 標簽選擇器 kubectl label pods web1 appweb kubectl cluter-info dump | grep -i service-cluster-ip-range 服務ip取值范圍 Service 管理: 創建服務: --- kind: Serv…