ViViT: 一種視頻視覺Transformer

摘要

我們提出了基于純transformer的視頻分類模型,借鑒了這種模型在圖像分類中的成功經驗。我們的模型從輸入視頻中提取時空token,然后通過一系列transformer層進行編碼。為了處理視頻中遇到的長序列token,我們提出了幾種高效的模型變種,這些變種將輸入的空間和時間維度進行了分解。盡管基于transformer的模型通常只有在有大量訓練數據時才有效,但我們展示了如何在訓練過程中有效地正則化模型,并利用預訓練的圖像模型,在相對較小的數據集上進行訓練。我們進行了徹底的消融研究,并在多個視頻分類基準測試上取得了最先進的結果,包括Kinetics 400和600、Epic Kitchens、Something-Something v2和Moments in Time,超過了基于深度3D卷積網絡的先前方法。為了促進進一步的研究,我們在https://github.com/google-research/scenic發布了代碼。

1. 引言

基于深度卷積神經網絡的方法自AlexNet [38]以來,已經推動了視覺問題標準數據集上的最先進技術。同時,序列到序列建模(例如自然語言處理)中最突出的架構是transformer [68],它不使用卷積,而是基于多頭自注意力機制。該操作在建模長程依賴關系方面特別有效,允許模型在輸入序列的所有元素之間進行注意力操作。這與卷積的“感受野”形成鮮明對比,后者是有限的,并隨著網絡深度的增加而線性增長。

自注意力模型在自然語言處理中的成功,最近激發了計算機視覺領域的研究,嘗試將transformer集成到CNN中 [75, 7],以及一些完全替代卷積的嘗試 [49, 3, 53]。然而,直到最近,純transformer架構在圖像分類中超越了其卷積對手,這一成就出現在Vision Transformer (ViT) [18]中。Dosovitskiy 等人 [18] 緊跟[68]的原始transformer架構,并注意到其主要優勢是在大規模數據上得到體現——由于transformer缺乏卷積的一些歸納偏置(如平移不變性),它們似乎需要更多的數據 [18] 或更強的正則化 [64]。

受ViT啟發,并考慮到自注意力架構在建模視頻中的長程上下文關系時的直觀性,我們開發了幾種基于transformer的視頻分類模型。目前,性能最好的模型基于深度3D卷積架構 [8, 20, 21],這些模型是圖像分類CNN [27, 60] 的自然擴展。最近,這些模型通過在其后層引入自注意力機制,以更好地捕捉長程依賴關系 [75, 23, 79, 1]。

如圖1所示,我們提出了用于視頻分類的純transformer模型。該架構中執行的主要操作是自注意力,并且它是計算在從輸入視頻中提取的時空token序列上。為了有效處理視頻中可能遇到的大量時空token,我們提出了幾種沿空間和時間維度分解模型的方法,以提高效率和可擴展性。此外,為了在較小的數據集上有效訓練我們的模型,我們展示了如何在訓練過程中對模型進行正則化,并利用預訓練的圖像模型。

我們還注意到,卷積模型已經由社區開發了多年,因此與這些模型相關的“最佳實踐”已經有了很多。由于純transformer模型具有不同的特性,我們需要確定這些架構的最佳設計選擇。我們對token化策略、模型架構和正則化方法進行了徹底的消融分析。在此分析的基礎上,我們在多個標準視頻分類基準測試中取得了最先進的結果,包括Kinetics 400和600 [35]、Epic Kitchens 100 [13]、Something-Something v2 [26] 和 Moments in Time [45]。
在這里插入圖片描述

2. 相關工作

視頻理解的架構與圖像識別的進展相一致。早期的視頻研究使用手工提取的特征來編碼外觀和運動信息 [41, 69]。AlexNet 在 ImageNet [38, 16] 上的成功最初促使了 2D 圖像卷積網絡 (CNN) 被用于視頻處理,形成了“二流”網絡 [34, 56, 47]。這些模型分別處理 RGB 幀和光流圖像,然后在最后進行融合。隨著像 Kinetics [35] 這樣的更大視頻分類數據集的出現,推動了時空 3D CNN 的訓練 [8, 22, 65],這些模型擁有顯著更多的參數,因此需要更大的訓練數據集。由于 3D 卷積網絡比圖像卷積網絡需要更多的計算,許多架構在空間和時間維度上對卷積進行了分解,或使用了分組卷積 [59, 66, 67, 81, 20]。我們也利用了視頻的空間和時間維度的分解來提高效率,但是在基于 transformer 的模型中進行的。

與此同時,在自然語言處理 (NLP) 領域,Vaswani 等人 [68] 通過用只包含自注意力、層歸一化和多層感知機 (MLP) 操作的 transformer 網絡替代卷積和遞歸網絡,取得了最先進的結果。目前,NLP 領域的最先進架構 [17, 52] 仍然是基于 transformer 的,并且已被擴展到 Web 規模的數據集 [5]。為了減少處理更長序列時自注意力的計算成本,許多 transformer 變體也被提出 [10, 11, 37, 62, 63, 73],并且為了提高參數效率 [40, 14],這些變體在許多任務中得到了應用。盡管自注意力在計算機視覺中得到了廣泛應用,但與此不同的是,它通常被集成到網絡的后期階段或通過殘差塊 [30, 6, 9, 57] 來增強 ResNet 架構中的一層 [27]。

雖然之前的工作曾試圖在視覺架構中替代卷積 [49, 53, 55],但直到最近,Dosovitskiy 等人 [18] 通過他們的 ViT 架構表明,類似于 NLP 中使用的純 transformer 網絡,也可以在圖像分類中取得最先進的結果。作者展示了這種模型只有在大規模數據集下才有效,因為 transformer 缺乏卷積網絡的一些歸納偏置(如平移不變性),因此需要比常見的 ImageNet ILSVRC 數據集 [16] 更大的數據集來進行訓練。ViT 激發了社區中的大量后續工作,我們注意到有一些同時的研究嘗試將其擴展到計算機視覺中的其他任務 [71, 74, 84, 85],以及提高其數據效率的研究 [64, 48]。特別是,文獻 [4, 46] 也提出了用于視頻的 transformer 模型。

本文中,我們開發了用于視頻分類的純 transformer 架構。我們提出了幾種模型變體,其中包括通過分解輸入視頻的空間和時間維度來提高效率的變體。我們還展示了如何利用額外的正則化和預訓練模型來應對視頻數據集不像 ViT 最初訓練的圖像數據集那樣龐大的問題。此外,我們在五個流行數據集上超越了最先進的技術。

3. 視頻 Vision Transformer

我們首先在第 3.1 節簡要介紹最近提出的 Vision Transformer [18],然后在第 3.2 節討論兩種從視頻中提取 token 的方法。最后,我們在第 3.3 和第 3.4 節中提出幾種用于視頻分類的基于 transformer 的架構。

3.1 Vision Transformer (ViT) 概述

Vision Transformer(ViT)[18] 將 [68] 中的 transformer 架構最小化修改后應用于處理二維圖像。具體而言,ViT 從圖像中提取 N N N個不重疊的圖像 patch, x i ∈ R h × w x_i \in \mathbb{R}^{h \times w} xi?Rh×w,對其進行線性投影后展開為一維 token z i ∈ R d z_i \in \mathbb{R}^d zi?Rd。輸入到后續 transformer 編碼器中的 token 序列為:

z = [ z c l s , E x 1 , E x 2 , … , E x N ] + p , (1) \mathbf{z} = [z_{cls}, \mathbf{E}x_1, \mathbf{E}x_2, \ldots, \mathbf{E}x_N] + \mathbf{p}, \tag{1} z=[zcls?,Ex1?,Ex2?,,ExN?]+p,(1)

其中 E \mathbf{E} E表示線性投影操作,其本質等價于一個 2D 卷積。如圖 1 所示,一個可學習的分類 token z c l s z_{cls} zcls?會被加在序列開頭,并在 transformer 編碼器的最終層中作為分類器使用的最終表示 [17]。另外,為了保留位置信息,還會為 token 加上可學習的位置編碼 p ∈ R N × d \mathbf{p} \in \mathbb{R}^{N \times d} pRN×d,因為 transformer 中的 self-attention 機制本身對序列位置順序是不敏感的(permutation invariant)。

這些 token 隨后會被輸入到一個由 L L L層 transformer 構成的編碼器中。每一層 l l l包括多頭自注意力(Multi-Headed Self-Attention, MSA)[68]、層歸一化(Layer Normalisation, LN)[2] 和 MLP 模塊,其計算方式如下:

y ? = M S A ( L N ( z ? ) ) + z ? z ? + 1 = M L P ( L N ( y ? ) ) + y ? (3) \begin{array}{r} \mathbf{y}^{\ell} = \mathbf{MSA}(\mathbf{LN}(\mathbf{z}^{\ell})) + \mathbf{z}^{\ell} \\ \mathbf{z}^{\ell + 1} = \mathbf{MLP}(\mathbf{LN}(\mathbf{y}^{\ell})) + \mathbf{y}^{\ell} \end{array} \tag{3} y?=MSA(LN(z?))+z?z?+1=MLP(LN(y?))+y??(3)

其中 MLP 由兩個線性層和一個 GELU 非線性激活函數 [28] 構成。在整個網絡的所有層中,token 的維度 d d d保持不變。

最后,如果在輸入序列中添加了分類 token z c l s z_{cls} zcls?,則將其在第 L L L層輸出的表示 z c l s L ∈ R d z_{cls}^{L} \in \mathbb{R}^d zclsL?Rd輸入至一個線性分類器進行分類;如果沒有添加分類 token,則采用所有 token 的全局平均池化作為輸入。

由于 transformer 架構 [68] 是一種靈活的結構,能夠處理任意 token 序列 z ∈ R N × d \mathbf{z} \in \mathbb{R}^{N \times d} zRN×d,接下來我們將介紹用于視頻 token 化的策略。

3.2 視頻片段嵌入

我們考慮兩種簡單的方法將視頻 V ∈ R T × H × W × C \mathbf{V} \in \mathbb{R}^{T \times H \times W \times C} VRT×H×W×C映射到一個 token 序列 z ~ ∈ R n t × n h × n w × d \tilde{\mathbf{z}} \in \mathbb{R}^{n_t \times n_h \times n_w \times d} z~Rnt?×nh?×nw?×d。然后我們添加位置嵌入并重新形狀調整為 R N × d \mathbb{R}^{N \times d} RN×d,以得到輸入到 transformer 的 z z z

均勻幀采樣

如圖 2 所示,將輸入視頻 token 化的一個簡單方法是從輸入視頻片段中均勻采樣 n t n_t nt?幀,使用與 ViT [18] 相同的方法獨立嵌入每一幀 2D 圖像,并將這些 token 連接在一起。具體而言,如果每一幀中提取 n h ? n w n_h \cdot n_w nh??nw?<

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

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

相關文章

嵌入式鴻蒙系統環境搭建與配置要求實現01

各位開發者大家好,今天主要給大家分享一下,鴻蒙系統的環境配置實現。 第一:鴻蒙配置基本要求 對電腦的要求,虛擬機配置建議 200GB 硬盤大小,10GB 內存,4*2CPU。 安裝必要的依賴文件方法: sudo apt-get update && sudo apt-get install binutils git git-lfs g…

【多目標進化算法】常見多目標進化算法一覽

算法全稱核心特點備注NSGA-IINon-dominated Sorting Genetic Algorithm II非支配排序 擁擠度最經典&#xff0c;應用最廣NSGA-IIINon-dominated Sorting Genetic Algorithm III支撐向量引導&#xff0c;適合高維&#xff08;3目標以上&#xff09;NSGA-II 的高維擴展版MOEA/DM…

創意無限,從這些視頻素材開始你的創作!

在視頻創作的世界里&#xff0c;找到合適的素材就像是挖掘寶藏&#xff0c;不僅能節省時間&#xff0c;還能讓作品瞬間提升一個檔次。今天&#xff0c;就來給大家分享一些超實用的視頻素材網站&#xff0c;無論是國內的寶藏平臺&#xff0c;還是國外的優質資源&#xff0c;都能…

QT創建新項目(13)

文章目錄 一、本章說明二、QT組件簡介及相關筆記三、項目創建四、QT學習建議一、本章說明 注:本節為【基于STM的環境監測系統(節點+云服務器存儲+QT界面設計)】項目第13篇文章,前面已安裝了QT軟件,本章主要介紹新項目創建及注意事項,QT的初學者相關學習資料 二、QT組件…

Langgraph實戰-Agent-ReAct(Reason+Act)概述

Langgraph實戰-Agent-ReAct&#xff08;ReasonAct&#xff09;概述 概述 ReAct 架構將推理與動作相結合&#xff0c;使Agent能夠通過生成想法并基于這些想法執行動作。這種決策透明度使Agent能夠更負責地執行任務&#xff0c;因為它會記錄每一步的推理過程。 這種架構最適合…

論文筆記(七十九)STOMP: Stochastic Trajectory Optimization for Motion Planning

STOMP: Stochastic Trajectory Optimization for Motion Planning 文章概括摘要一、引言二、相關工作三、STOMP 算法A. 探索B. 軌跡更新 四、機械臂的運動規劃A. 設置B. 代價函數1&#xff09;障礙物代價&#xff1a;2&#xff09;約束代價&#xff1a;3&#xff09;扭矩代價&a…

MCU開發學習記錄9 - 通用定時器學習與實踐(HAL庫) -RGBLED控制、定時器輸入捕獲、主從定時器移相控制-STM32CubeMX

本文將介紹通用定時器的概念、相關函數以及STM32CubeMX生成定時器的配置函數以及對生成定時器的配置函數進行分析&#xff08;包括結構體配置、相關寄存器配置&#xff09;。 本文以TIM2/TIM5、TIM3/TIM4為基礎介紹通用定時器&#xff08;包含通用定時器全部功能&#…

Java學習手冊:TCP 協議基礎

一、TCP 協議概述 TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是一種面向連接的、可靠的、基于字節流的傳輸層通信協議&#xff0c;它在 IP 協議的基礎上提供了可靠的 數據傳輸服務。TCP 通過三次握手建立連接&#xff0c;通過四次揮手…

刪除排序數組中的重復項--LeetCode

題目 給你一個非嚴格遞增排列的數組 nums &#xff0c;請你原地刪除重復出現的元素&#xff0c;使每個元素 只出現一次 &#xff0c;返回刪除后數組的新長度。元素的 相對順序 應該保持 一致 。然后返回 nums 中唯一元素的個數。 考慮 nums 的唯一元素的數量為 k &#xff0c…

【Elasticsearch】入門篇

Elasticsearch 入門 前言 官方地址&#xff1a;Elastic — 搜索 AI 公司 | Elastic ES 下載地址&#xff1a;Past Releases of Elastic Stack Software | Elastic 文檔&#xff1a;什么是 Elasticsearch&#xff1f;|Elasticsearch 指南 簡介 Elasticsearch 是一個分布式、…

2024新版仿藍奏云網盤源碼,已修復已知BUG,樣式風格美化,可正常運營生產

說起網盤源碼&#xff0c;網絡上出現的也很多&#xff0c;不過可真正正能夠用于運營的少之又少。今天將的藍奏云網盤源碼&#xff0c;其實網絡上也有&#xff0c;不過是殘缺版&#xff0c;bug很多。我今天分享的仿藍奏云模板是經過長時間測試修復后的源碼&#xff0c;源碼實測可…

機器人結構認知與安裝

機器人結構認知與安裝 1. ES機器人系統結構與硬件組成 核心組件&#xff1a; OPPO ES5機器人系統由機器人本體、控制手柄、48V電源和OPPO Studio終端構成。一體化底座&#xff1a;包含控制主板、安全接口板、監測保護電路單元&#xff0c;支持外接急停開關&#xff0c;采用光耦…

sass 變量

基本使用 如果分配給變量的值后面添加了 !default 標志 &#xff0c;這意味著該變量如果已經賦值&#xff0c;那么它不會被重新賦值&#xff0c;但是&#xff0c;如果它尚未賦值&#xff0c;那么它會被賦予新的給定值。 如果在此之前變量已經賦值&#xff0c;那就不使用默認值…

python自動化測試1——鼠標移動偏移與移動偏移時間

python對自動化測試運維提供了一個簡易的庫—pyautogui&#xff0c;我們可以借助這個庫進行開發。 import pyautogui as pp.moveTo(100,100,3) 這里將鼠標光標移動到100&#xff0c;100處&#xff0c;并且用時3秒移動 鼠標移動是以固定坐標為單位&#xff0c;鼠標偏移則是在…

LX4-數據手冊相關

數據手冊相關 一 如何獲取數據手冊 ST官網&#xff1a;www.st.com 中文社區網&#xff1a; https://www.stmcu.com.cn/Designresource/list/STM32F1/document/datasheet 淘寶的商品詳情頁 二 如何閱讀數據手冊 芯片手冊 定義&#xff1a;由芯片制造商提供&#xff0c;詳細…

如何使用 uv 構建 Python 包并本地安裝

本文將逐步指導你創建一個簡單的 Python 包&#xff0c;并將其本地安裝到機器或云環境中。完成本教程后&#xff0c;你將擁有一個可復用的 Python 庫&#xff0c;可直接通過 pip 安裝或在項目中導入使用。 步驟詳解 Step 0: 選擇構建工具 - 使用 uv 推薦理由&#xff1a;uv 是…

Linux之安裝配置Nginx

Linux系統下安裝配置Nginx的詳細步驟如下&#xff1a; 一、準備工作 系統環境&#xff1a;確保Linux系統已安裝&#xff0c;并且具有網絡連接&#xff08;以便在線安裝依賴或下載Nginx&#xff09;。 安裝依賴&#xff1a;Nginx依賴于一些開發庫和工具&#xff0c;如gcc、pcr…

計算機視覺cv入門之答題卡自動批閱

前邊我們已經講解了使用cv2進行圖像預處理與邊緣檢測等方面的知識&#xff0c;這里我們以答題卡自動批閱這一案例來實操一下。 大致思路 答題卡自動批閱的大致流程可以分為這五步&#xff1a;圖像預處理-尋找考試信息區域與涂卡區域-考生信息區域OCR識別-涂卡區域填涂答案判斷…

語音合成之一TTS技術發展史綜述

TTS技術發展史綜述 引言TTS技術的起源與早期探索基于規則的TTS系統&#xff1a;原理與發展共振峰合成技術&#xff1a;作用與影響拼接合成技術&#xff1a;發展與應用統計參數語音合成&#xff1a;以隱馬爾可夫模型&#xff08;HMM&#xff09;為例深度學習驅動的TTS&#xff1…

目標檢測中的損失函數(一) | IoU GIoU DIoU CIoU EIoU Focal-EIoU

&#x1f680;該系列將會持續整理和更新BBR相關的問題&#xff0c;如有錯誤和不足懇請大家指正&#xff0c;歡迎討論&#xff01;&#xff01;&#xff01; &#x1f4e6;目標檢測的損失函數一般包含三個部分&#xff0c;分別是邊界框損失也可稱為定位損失、置信度損失和分類損…