自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解決 NLP 任務(wù)的 Transformer 為什么可以應(yīng)用于計算機視覺?

人工智能 機器視覺 架構(gòu)
在這篇文章中,我們探索了兩種基礎(chǔ)架構(gòu),它們使Transformer能夠闖入計算機視覺的世界。

幾乎所有的自然語言處理任務(wù),從語言建模和masked詞預(yù)測到翻譯和問答,在2017年Transformer架構(gòu)首次亮相后都經(jīng)歷了革命性的變化。Transformer在計算機視覺任務(wù)中也表現(xiàn)出色,只用了2-3年的時間。在這篇文章中,我們探索了兩種基礎(chǔ)架構(gòu),它們使Transformer能夠闖入計算機視覺的世界。

一、視覺Transformer

1. 主要思想

視覺Transformer的意圖是將標(biāo)準(zhǔn)變換器架構(gòu)泛化,以處理和從圖像輸入中學(xué)習(xí)。關(guān)于架構(gòu)的一個主要思想是作者足夠透明地強調(diào)了:

“受到NLP中Transformer擴(kuò)展成功的啟發(fā),我們嘗試直接將標(biāo)準(zhǔn)Transformer應(yīng)用于圖像,盡可能少地進(jìn)行修改?!?/p>

2. 操作

可以非常字面地理解“盡可能少的修改”,因為他們幾乎完全沒有修改。他們實際修改的是輸入結(jié)構(gòu):

  • 在NLP中,Transformer編碼器采用代表輸入句子/段落的獨熱向量序列(或等價的標(biāo)記索引),并返回可用于進(jìn)一步任務(wù)(例如,分類)的上下文embedding向量序列。
  • 為了泛化到計算機視覺,視覺Transformer采用代表輸入圖像的patch向量序列,并返回可用于進(jìn)一步任務(wù)(例如,分類)的上下文embedding向量序列。

特別是,假設(shè)輸入圖像的維度為(n,n,3),要將其作為輸入傳遞給Transformer,視覺Transformer的操作如下:

  • 將其劃分為k2個patch,k為某個值(例如,k=3),如圖中所示。
  • 現(xiàn)在每個patch將為(n/k,n/k,3),下一步是將每個patch展平為向量。

patch向量將是維度為3*(n/k)(n/k)的向量。例如,如果圖像是(900,900,3),我們使用k=3,那么patch向量將具有維度300300*3,代表展平patch中的像素值。在論文中,作者使用k=16。因此,論文的名稱為“一幅圖像值16x16個詞:大規(guī)模圖像識別的Transformer”,而不是提供代表單詞的獨熱向量,他們代表代表圖像patch的像素向量。

其余的操作與原始Transformer編碼器保持不變:

  • 這些patch向量通過一個可訓(xùn)練的embedding層傳遞
  • 向每個向量添加位置embedding,以保持圖像中的空間信息
  • 輸出是num_patches編碼器表示(每個補丁一個),可用于對補丁或圖像級別進(jìn)行分類
  • 更常見的(如在論文中),在表示前添加CLS標(biāo)記,相應(yīng)的用于對整個圖像進(jìn)行預(yù)測(類似于BERT)

Transformer解碼器呢?

記住它就像Transformer編碼器;不同之處在于它使用masked自注意而不是自注意(但相同的輸入簽名保持不變)。無論如何,你應(yīng)該很少使用僅解碼器的Transformer架構(gòu),因為簡單地預(yù)測下一個patch可能不是非常感興趣的任務(wù)。

3. 混合架構(gòu)

作者還提到,可以以CNN特征圖而不是圖像本身作為輸入來形成混合架構(gòu)(CNN將輸出傳遞給視覺Transformer)。在這種情況下,我們將輸入視為通用的(n,n,p)特征圖,patch向量將具有維度(n/k)*(n/k)*p。

4. 結(jié)構(gòu)的喪失

你可能會想到這種架構(gòu)不應(yīng)該這么好,因為它將圖像視為線性結(jié)構(gòu),而它并不是。作者試圖通過提到來描繪這是有意為之:

The two-dimensional neighborhood structure is used very sparingly…position embeddings at initialization time carry no information about the 2D positions of the patches and all spatial relations between the patches have to be learned from scratch

我們將看到Transformer能夠?qū)W習(xí)這一點,這在其實驗中的好表現(xiàn)中得到了證明,更重要的是,下一篇論文中的架構(gòu)。

5. 結(jié)果

結(jié)果的主要結(jié)論是,視覺Transformer在小數(shù)據(jù)集上往往不能超越基于CNN的模型,但在大數(shù)據(jù)集上接近或超越基于CNN的模型,無論如何都需要顯著減少計算量:

在這里我們可以看到,對于JFT-300M數(shù)據(jù)集(擁有3億張圖像),在該數(shù)據(jù)集上預(yù)訓(xùn)練的ViT模型超越了基于ResNet的基線,同時大大減少了預(yù)訓(xùn)練所需的計算資源??梢钥吹?,他們使用的較大的視覺Transformer(ViT-Huge,有632M參數(shù)和k=16)使用了ResNet模型所用計算量的約25%,并且仍然超越了它。性能甚至在使用僅<6.8%計算量的ViT-Large時并沒有降低那么多。

與此同時,其他人也暴露了結(jié)果,當(dāng)在僅有130萬圖像的ImageNet-1K上訓(xùn)練時,ResNet的表現(xiàn)明顯更好。

6. 通過Masking進(jìn)行自監(jiān)督學(xué)習(xí)

作者對自監(jiān)督的  masked patch 預(yù)測進(jìn)行了初步探索,模仿BERT中使用的masked語言建模任務(wù)(即 masked patch并嘗試預(yù)測它們)。

“We employ the masked patch prediction objective for preliminary self-supervision experiments. To do so we corrupt 50% of patch embeddings by either replacing their embeddings with a learnable [mask] embedding (80%), a random other patch embedding (10%) or just keeping them as is (10%).”

通過自監(jiān)督預(yù)訓(xùn)練,他們較小的ViT-Base/16模型在ImageNet上達(dá)到了79.9%的準(zhǔn)確率,比從頭開始訓(xùn)練有2%的顯著提高。但仍然比有監(jiān)督預(yù)訓(xùn)練落后4%。

二、Masked 自編碼視覺Transformer

1. 主要思想

正如我們從視覺Transformer論文中看到的,通過masked輸入圖像中的patch進(jìn)行預(yù)訓(xùn)練所獲得的收益并不像在普通的NLP中那樣顯著,那里masked預(yù)訓(xùn)練可以在一些微調(diào)任務(wù)中取得最先進(jìn)的結(jié)果。

這篇論文提出了一種涉及編碼器和解碼器的視覺Transformer架構(gòu),當(dāng)使用masked進(jìn)行預(yù)訓(xùn)練時,與基礎(chǔ)視覺Transformer模型相比,可以獲得顯著的改進(jìn)(與以有監(jiān)督方式訓(xùn)練基礎(chǔ)尺寸視覺Transformer相比,改進(jìn)高達(dá)6%)。

這是一些示例(輸入,輸出,真實標(biāo)簽)。從某種意義上說,它是一個自編碼器,因為它試圖在填充缺失patch的同時重建輸入。

2. 架構(gòu)

他們的編碼器只是我們前面解釋的普通視覺Transformer編碼器。在訓(xùn)練和推理中,它只采用“觀察到”的patch。與此同時,他們的解碼器也是普通的視覺Transformer編碼器,但它采用:

  • 缺失patch的masked標(biāo)記向量
  • 已知patch的編碼器輸出向量

所以對于圖像[[A, B, X], [C, X, X], [X, D, E]],其中X表示缺失的patch,解碼器將采用補丁向量序列[Enc(A), Enc(B), Vec(X), Vec(X), Vec(X), Enc(D), Enc(E)]。Enc返回給定patch向量的編碼器輸出向量,X是表示缺失標(biāo)記的向量。

解碼器中的最后一層是一個線性層,它將上下文embedding(由解碼器中的視覺Transformer編碼器產(chǎn)生)映射到與patch大小相等長度的向量。損失函數(shù)是均方誤差,它計算原始patch向量和這一層預(yù)測的向量之間的差異的平方。在損失函數(shù)中,我們只關(guān)注由于masked標(biāo)記而進(jìn)行的解碼器預(yù)測,并忽略對應(yīng)于存在的預(yù)測(即,Dec(A),Dec(B),Dec(C)等)。

3. 最后評論和示例

作者建議在圖像中masked大約75%的patch,這可能令人驚訝;BERT只會masked大約15%的單詞。他們這樣解釋:

“Images,are natural signals with heavy spatial redundancy — e.g., a missing patch can be recovered from neighboring patches with little high-level understanding of parts, objects, and scenes. To overcome this difference and encourage learning useful features, we mask a very high portion of random patches.”

責(zé)任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2011-11-07 14:52:14

AMDInterlagos超級計算機

2023-07-07 10:53:08

2021-05-21 09:29:57

計算機互聯(lián)網(wǎng)技術(shù)

2023-02-10 11:46:26

2023-09-04 15:15:17

計算機視覺人工智能

2020-12-21 14:40:10

Java技術(shù)開發(fā)

2023-11-01 14:51:21

邊緣計算云計算

2023-09-20 16:31:03

人工智能

2011-12-01 10:55:16

超級計算機高性能計算Top500

2021-08-30 09:00:00

人工智能計算機視覺機器學(xué)習(xí)

2018-03-13 15:31:09

區(qū)塊鏈

2023-11-24 16:38:38

無人機計算機視覺

2020-12-15 15:40:18

深度學(xué)習(xí)Python人工智能

2020-12-16 19:28:07

深度學(xué)習(xí)計算機視覺Python庫

2021-05-19 09:00:00

人工智能機器學(xué)習(xí)技術(shù)

2023-04-04 08:25:31

計算機視覺圖片

2024-02-22 08:17:31

十六進(jìn)制數(shù)字計算

2020-12-14 08:00:31

計算機計數(shù)程序

2012-12-16 15:26:49

超級計算機LinuxHPC

2023-10-30 00:14:34

Agent提示工程LLM
點贊
收藏

51CTO技術(shù)棧公眾號