Vision Transformer:用於大規模圖像識別的 Transformer

2022-01-18 谷歌開發者

文 / Neil Houlsby 研究員 和 Dirk WeissenbornSella Nevo,  高級軟體工程師,Google Research

自 20 世紀 80 年代,卷積神經網絡 (CNN) 就已應用於計算機視覺中,但直到 2012 年 AlexNet 的性能遠遠超過當時最為先進的圖像識別方法時,這一技術才算走到行業前列。實現這一突破要歸功於兩個因素:

使用商業 GPU 硬體為訓練提供了更強的計算能力。

因此,自 2012 年起,CNN 就已成為視覺任務的首選模型。

使用 CNN 的好處在於,它們無需手動設計的視覺特徵,而是直接從數據「端到端」執行學習任務。但是儘管 CNN架構本身專為圖像設計,無需手動提取特徵,但其對計算能力要求很高。展望下一代可擴展視覺模型,人們可能會思考這種特定於領域的設計是否有必要,或者考慮是否可以成功利用更多與領域無關的高效計算架構來獲得 SOTA 的成果。

我們朝這個方向邁出了第一步,推出了 Vision Transformer (ViT)。這是一種儘可能基於最初為基於文本的任務而設計的 Transformer 架構的視覺模型。ViT 將輸入圖像表示為一系列圖塊,類似於在將 Transformer 應用於文本時使用的一系列單詞嵌入,並且可直接預測圖像的類別標籤。使用充足的數據進行訓練時,ViT 可表現出卓越的性能,優於與之對等的先進 CNN,而所需資源僅為後者的四分之一。為了促進這一領域的進一步研究,我們開源了代碼和模型。

Vision Transformer
https://arxiv.org/abs/2010.11929

Transformer
https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf

代碼和模型
https://github.com/google-research/vision_transformer‍

Vision Transformer 將輸入圖像視為一系列圖塊,類似於自然語言處理 (NLP) Transformer 生成的一系列詞嵌入

Transformer 將文本中一系列單詞作為輸入,然後將其用於分類、翻譯或其他 NLP 任務。對於 ViT,我們儘量避免修改 Transformer 設計,使其能夠直接對圖像(而不是文字)進行處理,同時觀察模型能夠自行學到多少有關圖像結構的知識。

ViT 會將圖像分為方塊網格,通過連接一個方塊中所有像素通道,然後將其線性投影到所需的輸入維度,將每個方塊展平為單個矢量。Transformer 與輸入元素的結構無關,因此我們在每個方塊中添加了可學習的位置 Embedding,使模型能夠了解圖像結構。按理說,ViT 並不知道圖像中各方塊的相對位置,甚至不知道圖像具有 2D 結構,它必須從訓練數據中學習這類相關信息,並在位置嵌入中編碼結構信息。

首先,我們使用 ImageNet 訓練 ViT。在此階段,ViT 最高獲得了 77.9% top-1 準確率。對於首次嘗試來說,這個表現相當不錯,但較最先進水平仍相去甚遠:目前使用 ImageNet(無額外數據)訓練的最佳 CNN 的準確率可達 85.8%。儘管採取了緩解策略(例如正則化),但 ViT 並未內置充足的圖像相關知識,因此仍過擬合 ImageNet 任務。

為了研究數據集大小對模型性能產生的影響,我們使用數據集 ImageNet-21k(1400 萬張圖像,21000 個類別)和 JFT(3 億張圖像,18000 個類別)訓練 ViT,並將結果與使用相同數據集訓練的最先進 CNN Big Transfer(BiT)進行比較。我們之前觀察到,使用 ImageNet 訓練(100 萬張圖像)時,ViT 的性能明顯低於與之對等的 CNN (BiT)。但是,使用 ImageNet-21k(1400 萬張圖像)訓練時,ViT 與 BiT 性能相當;而使用 JFT(3 億張圖像)訓練時,ViT 的性能優於 BiT。

最後,我們分析了訓練模型所需計算量。為此,我們使用 JFT 訓練了幾種不同的 ViT 和 CNN 模型。這些模型涵蓋了各種模型大小和訓練時間。因此,它們需要不同的計算量來進行訓練。我們觀察到,給定計算量的情況下,ViT 的性能優於對等的 CNN。

左圖:使用不同數據集進行預訓練時 ViT 的性能;右圖:ViT 具有出色的性能/計算權衡

我們的數據表明,(1) 經過充分訓練的 ViT 可以表現出良好的性能,(2) ViT 在較小和較大的計算規模下均具有出色的性能/計算規模權衡。因此,為了確定在更大計算規模下其性能是否能夠繼續提升,我們訓練了一個具有 6 億個參數的 ViT 模型。

這一大型 ViT 模型在多個熱門基準上均表現出最先進的性能,其中在 ImageNet 上可達到 88.55% top-1 準確率,在 CIFAR-10 上則為 99.50%。ViT 在 ImageNet 評估集「ImageNet-Real」的清理版本上也表現出色,可達到 90.72% top-1 準確率。最後,即使訓練數據點非常少,ViT 仍可以出色完成各類任務。例如,在 VTAB-1k 套件(19 個任務,每個有 1000 個數據點)上,ViT 的準確率可達 77.63%,遠遠領先於最先進 (SOTA) 的單模型 (76.3%),甚至可與 SOTA 多模型集合 (77.6%) 相媲美。最重要的是,與以前的 SOTA CNN 相比,ViT 能夠使用更少的計算資源獲得這些結果,例如,ViT 使用的計算資源僅為預訓練 BiT 模型的四分之一。

Vision Transformer 在熱門基準上表現出的性能可媲美甚至超過最先進的 CNN。左圖:熱門圖像分類任務,包括 ImageNet(包含新的驗證標籤 ReaL 和 CIFAR)、Pets 和 Flowers);右圖:VTAB 分類套件中 19 個任務的平均值

   

為了直觀地了解模型所學內容,我們將其某些內部工作可視化。首先,我們看一下位置嵌入,即模型學習編碼相關方塊相對位置的參數,並發現 ViT 能夠再現直觀的圖像結構。每個位置嵌入與同行同列的其他位置嵌入最為相似,說明該模型已恢復了原始圖像的網格結構。然後,我們檢查了每個 Transformer 塊中各個元件之間的平均空間距離。在較高層(深度為 10-20)僅使用全局特徵(即較大的注意力距離),但較低層(深度為 0-5)則捕獲全局和局部特徵,如平均注意力距離的範圍較大。相反,CNN 的較低層中僅存在局部特徵。這些實驗表明,ViT 可學習硬編碼到 CNN 中的特徵(如對網格結構的認識),但也可以自由學習更多通用模式,例如較低層中局部和全局特徵的混合,這有助於泛化。

左圖:ViT 通過其位置嵌入學習圖塊的網格狀結構;右圖:ViT 的較低層包含全局和局部特徵,較高層僅包含全局特徵

儘管 CNN 徹底改變了計算機視覺,但我們的結果表明,沒有必要為圖像任務量身定製模型,甚至定製模型不是性能最好的模型。數據集規模在不斷擴大,無監督和半監督方法也在不斷發展,因此我們越來越需要開發出能夠更高效地使用這些數據集進行訓練的新型視覺架構。我們相信 ViT 是邁向可擴展通用架構的第一步,並對未來的發展充滿期待。這些架構能夠解決多種視覺任務,甚至多個領域的任務。

我們研究的預印本以及代碼和模型均已公開。

我們要感謝柏林、蘇黎世和阿姆斯特丹的論文合著者:Alexey Dosovitskiy、Lucas Beyer、Alexander Kolesnikov、Xiaohua Zhai、Thomas Unterthiner、Mostafa Dehghani、Matthias Minderer、Georg Heigold、Sylvain Gelly 和 Jakob Uszkoreit。我們要感謝 Andreas Steiner 在基礎架構和開源方面提供的關鍵幫助,Joan Puigcerver 和 Maxim Neumann 在大規模培訓基礎架構方面所做的工作,以及 Dmitry Lepikhin、Aravindh Mahendran、Daniel Keysers、Mario Lučić、Noam Shazeer 和 Colin Raffel 提供的實用意見。最後,我們要感謝 Tom Small 為本文創作的 Vision Transformer 動畫。

更多 AI 相關閱讀:

相關焦點

  • 視覺Transformer綜述
    Chen等人訓練一個sequence Transformer去自動回歸預測像素並在圖像分類任務上與CNN取得競爭性結果。ViT是Dosovitskiy等人最近提出的Visual Transformer模型。ViT將一個純粹的transformer直接用於圖像塊序列,並在多個圖像識別基準上獲得SOTA性能。
  • 視覺Transformer最新綜述
    這四類分別為 classification, high-level vision, low-level vision 和video processing.Classification 顧名思義就是分類任務,High-level vision 作者定義為:「對圖像中所見內容的解釋和使用」,包括目標檢測、分割等。
  • A Survey on Visual Transformer及引文理解
    這四類分別為classification, high-level vision, low-level vision 和 video processing.Classification顧名思義就是分類任務,High-level vision作者定義為:「對圖像中所見內容的解釋和使用」,包括目標檢測、分割等。
  • Transformer 在計算機視覺領域瘋狂「內卷」
    具體來說,先是設計一個 Pyramid Group Transformer(PGT),作為逐步學習分層特徵的編碼器,同時降低標準 visual transformer(ViT)的計算複雜性。其次,設計一個 Feature Pyramid Transformer(FPT)來融合來自 PGT 編碼器多個層次的語義級和空間級信息,用於語義圖像分割。
  • Tesla Vision背後的變形金剛——Transformer!
    上圖中的縱坐標為Box AP,Box Average Precision用於綜合評價目標檢測模型效能,測試集為COCO。 他曾經在推特中描述,Transformer技術很特別,可以十分有效地組織和挖掘跨領域的目標中(指語言和圖像兩種媒介)的信息,並以有針對性的方法將其模型化,從而提供大一統的目標感知網絡。
  • 向圖像進擊的Transformer! OpenAI提出Image GPT實現高質量圖像補全和樣本生成
    自然語言處理高歌猛進的同時,圖像領域也躍躍欲試,想要利用類似的模型學習出可以用於分類任務的有效特徵來。Transformer家族的模型基本上可以直接處理任何形式的1D數據,於是研究人員就想到將2D圖像拉伸為長長的1D圖像序列,利用與GPT-2模型類似的技術構建了用於處理像素序列的iGPT模型。在詳細的實驗分析後研究人員發現,模型顯現出對於2D圖像特徵的理解能力,包括有效的個體和類別的理解。
  • 計算機視覺中的transformer模型創新思路總結
    圖顯示貓頭被分成幾個部分,導致僅基於一個部分的識別挑戰。其次,tokens被放置在規則網格上,而與底層圖像內容無關。圖顯示,大多數網格聚焦在不感興趣的背景上,這可能導致感興趣的前景對象淹沒在幹擾信號中。
  • Transformer在CV領域有可能替代CNN嗎?
    首先我們應該了解為什麼CNN會在圖像領域被大規模應用,我們可以從三個主要點說起,比如基於傳統的方法,基於模式識別的方法,基於深度學習的方法。  1. 傳統方法在視覺任務上的應用絕大多數都依賴於在某個領域具有豐富經驗的專家,去針對具體的任務設計出一組最具有代表性的數據表示來作為輸入特徵進行處理,使得特徵之間具備可區分性,典型的有SIFT。
  • Tesla Vision背後的變形金剛——Transformer和類似技術
    仔細看,從路緣石邊界(上圖紅色線條)擴展到對於車道線(上圖藍色線條)的feature識別結果進行轉換視角,則之前的Occupancy tracker所面臨的問題會被進一步放大。圖中我們可以看到在camera投影視圖中的路緣石邊緣識別結果(圖一的上半部分),天然在精度上存在不小的誤差。
  • 為什麼Transformer適合做多模態任務?
    當你輸入純句子時,模型能學到這個it主要指animal,那麼比如當你輸入圖片貓+這個句子的時候,模型可能就能學到你前面那張貓指的就是這個animalattention本身就是很強大的,已經熱了很多年了,而self-attention更是使得Transformer的大規模
  • 視覺+Transformer最新論文出爐,華為聯合北大、雪梨大學發表
    該文作者信息:Transformer 技術發展的裡程碑事件:Transformer 的重要事件下表列出了 Visual Transformer 代表作品:Transformer 已經進入的視覺方向:圖像分類、目標檢測、分割、圖像增強、圖像生成、視頻修補、視頻描述等,為解決Transformer 計算效率問題,業界也有多篇論文提出了新的改進
  • 【transformer】 你應該知道的 transformer
    transformer為什麼需要用transformerencoderdecoderoutput layersummarytransformer的缺點transformer的應用refTransformer什麼是transformer首先我們先說結論:Attention Is
  • 贈書| 新手指南——如何通過HuggingFace Transformer整合表格數據
    Etc.不過,這種方法有一個缺點,那就是它受到transformer所能處理的最大令牌長度的限制。 圖像和文本Transformer 在過去的幾年中,用於圖像和文本的transformer擴展取得了顯著的進步。
  • Facebook AI的DETR:一種基於Transformer的目標檢測方法
    目標檢測在計算機視覺中,目標檢測是一項將對象與背景區分開,並預測圖像中存在的對象的位置和類別的任務。當前的深度學習方法試圖將其作為分類問題或回歸問題或綜合兩者的目標檢測任務來解決。例如,在RCNN算法中,從輸入圖像中識別出幾個感興趣的區域,然後將這些區域分類為對象或背景,最後使用回歸模型為所標識的對象生成邊界框。
  • NLP攜手Transformer跨界計算機視覺,DETR:目標檢測新範式
    如果將在 NLP 領域表現超越的 Transformer 用於目標檢測,其效果又如何?現階段研究者已嘗試將 Transformer 用於目標檢測任務,填補了 Transformer 用於目標檢測的空白。
  • 搞懂Vision Transformer 原理和代碼,看這篇技術綜述就夠了(三)
    from timm.models.vision_transformer import VisionTransformer, _cfg那麼這個VisionTransformer類的原始碼是什麼?可以從下面這個連結中找到:https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/vision_transformer.py
  • 關於Vision Transformer的一些思考
    Vision Transformer(https://arxiv.org/abs/2010.11929)這篇文章最大的貢獻點在於abstract裡講的「We show that this reliance on CNNs is not necessary and a pure transformer applied directly to
  • transformer什麼意思
    transformer什麼意思transform,我們前面背過,意思是變形、變樣,尤其是好的改變。transformer(配色不錯,很工業)transformer (像一隻鳥)transformer學單詞,只記住意思可不行,會用才行,小夥伴們可以在評論區造句,我們一起學習哦!
  • 【源頭活水】基於視覺的在線地圖:一種Transformer網絡方法
    「問渠那得清如許,為有源頭活水來」,通過前沿領域知識的學習,從其他研究領域得到啟發,對研究問題的本質有更清晰的認識和理解,是自我提高的不竭源泉。為此,我們特別精
  • 熱門的模型跨界,Transformer、GPT做CV任務一文大盤點
    RECOGNITION AT SCALE》:匿名論文,提出 Vision Transformer,將 Transformer 應用於圖像識別。《Feature Pyramid Transformer》:南理、南洋理工等聯合發表的論文,提出特徵金字塔 Transformer(FPT),用於視覺識別任務。