国产精品综合av_日韩精品偷拍一区二区_久草视频资源在线_亚洲视频 中文字幕_亚洲电影AV一区春药高潮_小×导航福利在线导航_欧美性爱一级短视频_人成视频免费在线观看不卡_国产九色在线播放_国产高清无码一区二区

藍海情報網

多尺度視頻patches統(tǒng)一訓練

藍海情報網 927

多尺度視頻patches統(tǒng)一訓練

博觀約取,厚積薄發(fā)。

今天,我們繼續(xù)從patches出發(fā),來看如何構建多尺度的視頻統(tǒng)一訓練范式。

Sora的技術報告里也明確說了,Spacetime Latent Patches 和 Variable durations, resolutions, aspect ratios 這兩段,講分辨率、時長、長寬比都可變。這個業(yè)界其實也有處理方法。我們來把這塊盤一下。

今天這個系列共三篇論文。

1.FlexiViT: One Model for All Patch Sizes。這篇文章講的是一個模型訓練多尺度patches。

論文:https://arxiv.org/abs/2212.08013。(谷歌)

代碼:

github.com/googleresearch/big_vision.

2.Efficient Sequence Packing Without Cross-Contamination: Accelerating Large Language Models Without Impacting Performance。這個文章講的是NLP里的長度不一的tokens序列打包一起訓練的事情。

論文:https://arxiv.org/abs/2107.02027。(Graphcore.ai)

3. Patch n’ Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution。這篇文章借鑒了2的思想,講的是圖像patches序列如何打包一起訓練的事情。

論文:https://arxiv.org/abs/2307.06304. (google deepmind)

代碼:https://github.com/kyegomez/NaViT

一、FlexiViT: One Model for All Patch Sizes

前一篇文章我們講過, patches的來龍去脈

論文中,一張正方形圖片分成9份。這個分9份還是分4份還是分16份其實是一個超參數(shù)。這個超參數(shù)還很能影響算法效果的。這樣不難理解,分的越細你算法看的東西就越細,精度就高,但速度慢;分的粗,你算法看的東西就粗,蜻蜓點水的話,速度快,精度低。

多尺度視頻patches統(tǒng)一訓練

關于這一點,論文中做對比分析的時候有一個經典的圖如上,對于分類類別為叉子這個任務,當grid即切割的patch尺寸為48的,響應區(qū)域我標紅框的地方比較大,相應的顏色為黃綠色的一塊區(qū)域;當grid為16時,基本就可以將相應區(qū)域定格在真正的叉子那一塊了。再小為8時基本沒有提升了。

這篇論文的核心思想文章中用了一行代碼表示:

多尺度視頻patches統(tǒng)一訓練

在訓練構建batch數(shù)據(jù)的時候,隨機選一個尺寸(代碼中的np.random.choice )來碼patches的序列串。這樣保證訓練的時候是多尺寸的,然后推理的時候也可以支持多尺寸,保證的訓練的輸入特征豐富性。從而提升效果。

多尺度視頻patches統(tǒng)一訓練

整個pipeline如上圖所示。一張圖片可以分四份,也可以分9份,然后底層參數(shù)共享權重,保證訓練推理的一致性。4份的時間是1.6ms一張圖片,9份的是13ms。然后概率值也不一樣。

小結:

這篇文章中,輸入的原始圖片尺寸其實是沒有變的,都是正方形,只是切分的grid尺寸變了。因此跟sora里講的輸入原始圖片可以多尺寸不是一回事。但這篇文章告訴我們,grid要支持多種尺寸,這樣的更靈活精度可以更高。

二、Efficient Sequence Packing Without Cross-Contamination

這個文章是NLP領域的。本來跟sora沒關系。但是,我覺得視頻就是一個天然的序列,跟文本序列具有相似性,其次呢,這篇文章的思想是第三篇paper -NaviT的源頭,因此應該研究下。

這篇文章的核心思想其實非常簡單。因為我們需要把序列tokens對齊,如果一個數(shù)據(jù)集中,最長的序列是168,然后,那些短序列也需要填充空值到168,拿去模型中訓練,這樣的話,一方面模型訓練速度慢,另一方面收斂速度也慢。

解決方案是,如果一個序列長度是60,一個序列長度是100,那么這兩個序列湊到一起,然后只需要填充8個空值就組成了一個168的序列。那么照這樣組合,比如有1萬個序列,看如何組合使得組成的168序列的個數(shù)最少,這樣訓練速度就最快。這個就是一個啟發(fā)式經典裝箱的問題。論文給出了幾個算法。我覺得這些算法都很簡單的。就不講了。

剛才說的只是組團的問題,組完團后,還需要考慮訓練過程中attention的分組問題。

論文中也放出了代碼:

多尺度視頻patches統(tǒng)一訓練

他用一個mask 來做標記。上圖中的矩陣,應該表達的是一個序列中,前三個patches是一組,后兩個patches是一組。

這篇論文總共50來頁,附錄里有詳細的分析和代碼。非常值得細嚼。不過我沒來得及看哈。

三、NaViT, a Vision Transformer for any Aspect Ratio and Resolution

這應該是最接近sora的公開論文方法了。

這篇文章的native思想跟2 是相同的,就是對圖片的長度不一致來做分組,三兩個或者四五個圖片的patches組在一起成一個序列,跟訓練集中最長的序列相同長度(不夠就加點padding)然后拿去訓練。但他也還針對圖像問題做了些優(yōu)化。

整個pipeline都在這個圖里。我們來詳細講解這個圖。

多尺度視頻patches統(tǒng)一訓練

這個圖需要從下往上看,第一部分,數(shù)據(jù)預處理的時候,長大于寬的圖片、寬大長的圖片、正方形圖片,都統(tǒng)一編碼為各不一致的patches,然后他做了一個隨機丟棄的token drop操作,這個操作就類比于經典CNN里面的dropout層。目的是提高算法的魯棒性的。預處理完后,把三張圖片生成的patches拉平為一個序列,不夠的地方用pad填充。

往上走第二部分self-attention部分,這部分講的是mask self attention,由于有mask 的作用,他可以分塊各算各的,就是三個圖片不要搞混在一起了。

往上走第三部分是pooling。這部分講的是將self-attention計算好的特征,通過mask pooling,各算各的。

整個論文講的就是圖片無論各種尺寸,只要是計算過程中加上mask,就在一個小模塊里可以單獨計算單獨處理,不影響整體的input shape 和 output shape。從而達到了多尺寸全分辨率統(tǒng)一訓練。

另外,由于他隨機丟棄了一些patches,因此算法的魯棒性和速度也變快了。

總結

這篇文章我們全面盤點了如何構建一個輸入圖像多尺度多分辨率的統(tǒng)一訓練范式,同時也highlight了一下 FlexiViT。他也許是能提升算法精度的一個方法。

多看paper。勤敲代碼。臨淵羨魚,退而結網。不懼悲喜,只爭朝夕。

看完覺得寫得好的,不防打賞一元,以支持藍海情報網揭秘更多好的項目。

標簽:

ad2

推薦內容