目前,將基于視覺任務(wù)的Transformer結(jié)構(gòu)正在快速發(fā)展。雖然一些研究人員已經(jīng)證明了基于Transformer的模型具有良好的數(shù)據(jù)擬合能力,但仍有越來越多的證據(jù)表明這些模型存在過擬合,特別是在訓(xùn)練數(shù)據(jù)有限的情況下。
本文通過逐步改變模型結(jié)構(gòu),將基于Transformer的模型逐步過渡到基于卷積的模型。在過渡過程中獲得的結(jié)果,為提高視覺識別能力提供了有用的信息。基于這些觀察結(jié)果,作者提出了一種名為Visformer(Vision-friendly Transformer)的新架構(gòu) 。在相同的計算復(fù)雜度下,Visformer在ImageNet分類精度方面,優(yōu)于基于Transformer和基于卷積的模型,當(dāng)模型復(fù)雜度較低或訓(xùn)練集較小時,優(yōu)勢變得更加顯著。
Visformer: The Vision-friendly Transformer
論文:https:///abs/2104.12533v4
代碼:https://github.com/danczs/Visformer
在過去的十年里,卷積在視覺識別的深度學(xué)習(xí)模型中起著核心作用。當(dāng)源自自然語言處理的Transformer被應(yīng)用到視覺場景中時,這種情況就開始發(fā)生改變。ViT模型表明,一張圖像可以被分割成多個patch網(wǎng)格,Transformer直接應(yīng)用在網(wǎng)格上,每個patch都可以看做是一個視覺單詞。
ViT需要大量的訓(xùn)練數(shù)據(jù)(ImageNet-21K或JFT-300M數(shù)據(jù)集),因為Transformer建模了長距離的注意和交互,因此容易發(fā)生過擬合。后面也有一些工作基于ViT繼續(xù)做改進,但是效果依舊不佳,特別是在訓(xùn)練數(shù)據(jù)有限的情況下。另一方面,在大量數(shù)據(jù)訓(xùn)練下,視覺Transformer可以獲得比基于卷積的模型更好的性能。也就是說,視覺Transformer具有更高的性能“上限”,而基于卷積的模型性能“下界”更好。上界和下界都是神經(jīng)網(wǎng)絡(luò)的重要特性。上界是實現(xiàn)更高性能的潛力,下界使網(wǎng)絡(luò)在有限數(shù)據(jù)訓(xùn)練或擴展到不同復(fù)雜性時表現(xiàn)更好。基于對Transformer-based和基于卷積的網(wǎng)絡(luò)的下界和上界的觀察,本文的主要目的是探究差異背后的原因,從而設(shè)計出具有較高下界和上界的網(wǎng)絡(luò)。基于Transformer的網(wǎng)絡(luò)和基于卷積的網(wǎng)絡(luò)之間的差距可以在ImageNet上通過兩種不同的訓(xùn)練設(shè)置來揭示。第一個是基本設(shè)置(base setting) 。它是基于卷積的模型的標(biāo)準(zhǔn)設(shè)置,即訓(xùn)練周期更短,數(shù)據(jù)增強只包含基本的操作,如random-size cropping、 flipping。將此設(shè)置下的性能稱為基本性能(base performance) 。另一個設(shè)置是精英設(shè)置(elite setting) ,它對基于Transformer的模型進行了專門的調(diào)整,即訓(xùn)練周期更長,數(shù)據(jù)增強更強( RandAugment、CutMix等)。將此設(shè)置下的性能稱為精英性能(elite performance) 。在本文中,作者以DeiT-S和ResNet-50作為基于Transformer和基于卷積的模型的代表。在不同數(shù)量訓(xùn)練數(shù)據(jù)和訓(xùn)練設(shè)置下的兩個模型結(jié)果如上表所示??梢钥闯觯珼eit-S和ResNet-50采用了相近的FLOPs和參數(shù)。然而,在這兩種設(shè)置下,它們在完整數(shù)據(jù)上的表現(xiàn)非常不同。Deit-S具有更高的精英性能,但從精英到基礎(chǔ)會導(dǎo)致DeiT-S的精度下降10%以上。ResNet-50在基礎(chǔ)設(shè)置下表現(xiàn)得要好得多,但對精英設(shè)置的提升僅為1.3%。這促使作者去研究這些模型之間的區(qū)別。
在這兩種設(shè)置下,可以大致估計模型的下界和上界。作者使用的方法是執(zhí)行一步一步的過渡操作,以逐步將一個模型變成另一個模型,這樣就可以進一步認(rèn)知這兩個網(wǎng)絡(luò)中的模塊和設(shè)計的特性。作者將轉(zhuǎn)換的過程分為8個步驟。
具體來說,從DeiT-S到ResNet-50,應(yīng)(i)使用全局平均池化 (非分類token)
(ii)引入逐步的patch embedding
(iii)采用多階段 的主干網(wǎng)絡(luò)設(shè)計
(iv)使用Batch Norm (非Layer Norm)
(v)利用3×3卷積
(vi)放棄position encoding 方案
(vii)用卷積替換Self-Attention
(viii)調(diào)整網(wǎng)絡(luò)形狀 (如深度、寬度等)
在深入分析了結(jié)果背后的原因后,作者采用了所有有助于視覺識別的因素,并提出Visformer(Vision-friendly Transformer)。如上表所示,在ImageNet分類評估上,Visformer比DeiT和ResNet的性能更好。在精英設(shè)置下,在類似的模型復(fù)雜度下,Visformer-S模型分別比DeiT-S和ResNet-50高出2.12%和3.46%。當(dāng)使用10%的類和數(shù)據(jù)訓(xùn)練時,Visformer-S甚至表現(xiàn)優(yōu)于ResNet-50,這揭示了Visformer-S的高性能下界。此外,對于tiny模型,Visformer-ti的性能超過Deit-Ti 6%以上。3.1. 基于Transformer和基于卷積的視覺識別模型
識別是計算機視覺中的基本任務(wù)。本文主要考慮圖像分類,其中輸入圖像通過深度網(wǎng)絡(luò)傳播,得到輸出類標(biāo)簽。大多數(shù)深度網(wǎng)絡(luò)都是以分層的方式設(shè)計的。
在本文中,作者考慮了兩種結(jié)構(gòu):Transformer和卷積。卷積用于捕獲可重復(fù)的局部特征,它使用許多可學(xué)習(xí)的卷積核來計算輸入對不同模式的響應(yīng)。在本文中,作者將研究限制在殘差塊(卷積+殘差)內(nèi),并在相鄰的卷積層之間插入非線函數(shù)(激活函數(shù)、normalization)。另一方面,Transformer起源于自然語言處理,其目的是捕獲任何兩個token之間的關(guān)系,即使它們彼此相距很遠。這是通過為每個token生成三個特征來實現(xiàn)的,分別稱為query、key和value。然后,將每個token的響應(yīng)計算為所有value的加權(quán)和,其中權(quán)重由其query與相應(yīng)key之間的相似性決定。這個操作被稱為多頭自注意(MHSA)。Transformer Block中還包含其他操作,包括歸一化和線性映射。在本文中,作者考慮DeiT-S和ResNet-50分別作為基于Transformer和基于卷積的模型的代表。除了基礎(chǔ)架構(gòu)之外,這兩個網(wǎng)絡(luò)在設(shè)計上也有一些不同,比如ResNet-50有一些向下采樣層,將模型劃分為多個階段,但在整個DeiT-S中,token的數(shù)量保持不變。3.2.基礎(chǔ)(base)和精英(elite)設(shè)置
雖然DeiT-S的準(zhǔn)確率為80.1%,高于ResNet-50的78.7%,但我們可以注意到DeiT-S顯著改變了訓(xùn)練策略,例如,訓(xùn)練周期的數(shù)量增加了3×以上,數(shù)據(jù)增強變得更強。
有趣的是,DeiT-S似乎嚴(yán)重依賴于精心調(diào)整的訓(xùn)練策略,其他基于Transformer的模型,包括ViT和PIT,也說明了它們對其他因素的依賴性,例如,大規(guī)模的訓(xùn)練集。接下來,作者對這一現(xiàn)象進行了全面的研究。作者在ImageNet數(shù)據(jù)集上評估了所有的分類模型,該數(shù)據(jù)集有1K類、1.28萬訓(xùn)練圖像和50K測試圖像。每個類的訓(xùn)練圖像的數(shù)量大致相同。對每個識別模型的優(yōu)化都有兩個設(shè)置。第一個為基礎(chǔ)設(shè)置 ,并被基于卷積的網(wǎng)絡(luò)廣泛采用。使用SGD優(yōu)化器進行90個epoch的訓(xùn)練。batch大小為512的學(xué)習(xí)速率從0.2開始,然后隨著余弦退火函數(shù)逐漸衰減到0.00001。采用隨機裁剪和翻轉(zhuǎn)等簡單的數(shù)據(jù)增強策略。第二種為精英設(shè)置 ,它已被驗證可以有效地改進基于Transformer的模型。batch大小為512,優(yōu)化器為初始學(xué)習(xí)率為0.0005的Adamw優(yōu)化器。為了避免過擬合,采用了更強的數(shù)據(jù)增強策略:Mixup、Mixup、 Random Erasing、Repeated Augmentation等等。相應(yīng)地,訓(xùn)練持續(xù)300個epoch,比基礎(chǔ)設(shè)置的時間要長得多。模型在這兩個設(shè)置下得到的分類精度分別稱為基礎(chǔ)性能 和精英性能 。3.3.從DeiT-S到ResNet-50的過渡

本節(jié)顯示了從DeiT-S到ResNet-50轉(zhuǎn)換的分解過程,共有八個步驟。關(guān)鍵步驟如上圖所示。
分解過程中得到的網(wǎng)絡(luò)性能如上表所示。
3.3.1使用全局平均池化來替換分類token
轉(zhuǎn)換的第一步是刪除分類token,并向基于Transformer的模型添加全局平均池化。與基于卷積的模型不同,Transformer通常會在輸入中添加一個分類token,并利用相應(yīng)的輸出token來執(zhí)行分類。相比之下,基于卷積的模型通過空間維度的全局平均池化獲得分類特征。
通過刪除分類token,Transformer可以等價地轉(zhuǎn)換為卷積版本。patch embedding操作等價于其卷積核大小和步長是patch大小的卷積。MHSA和MLP塊中的線性層等價于1×1卷積。(如上圖所示)通過這些操作得到Net1,這個結(jié)構(gòu)的performance如上表所示。可以看出,這種轉(zhuǎn)變可以極大地提高基礎(chǔ)性能。作者進一步的實驗表明,添加全局池化本身可以將基礎(chǔ)性能從64.17%提高到69.44%。此外,這種轉(zhuǎn)變可以略微提高精英性能。3.3.2用 step-wise patch embedding替換patch flattening
DeiT和ViT模型直接用patch embedding層對圖像進行編碼,這相當(dāng)于核大小和步幅等于patch size的卷積。然而,patch flatten操作會損害每個patch內(nèi)的位置信息,使得提取patch內(nèi)的信息變得更加困難。為了解決這一問題,現(xiàn)有的方法通常在patch embedding之前附加一個預(yù)處理模塊。這個預(yù)處理模塊可以使用卷積網(wǎng)絡(luò)或者Transformer。
作者采用有一個相當(dāng)簡單的解決方案,即將大patch embedding分解為逐步的小patch embedding。具體來說,作者首先將ResNet中的stem層添加到Transformer上,這是一個7×7的卷積層,步幅為2。由于原始DeiT模型中的patch大小為16,所以還需要在stem層后embed 8×8的patch。作者將8 × 8 patch embedding分成了4 × 4 embedding和 2 × 2 embedding,由4×4和2×2的卷積層實現(xiàn)。
此外,作者還添加了一個額外的2×2卷積,以便在分類前進一步將patch大小從16×16進一步升級到32×32。這些patch embedding層也可以看作是下采樣層,在每次下采樣的時候,作者將通道數(shù)增加了一倍。通過利用step-wise patch embedding,patch內(nèi)的先驗位置被編碼到特征中。從上表可以看出,Net2可以顯著提高網(wǎng)絡(luò)的基礎(chǔ)性能和精英性能。這表明,在基于Transformer的模型中,step-wise patch embedding是比更大的patch embedding更好的選擇。此外,這種轉(zhuǎn)換具有計算效率,只引入了大約4%的額外FLOPs。3.3.3多階段設(shè)計
在本節(jié)中,作者將網(wǎng)絡(luò)分成了多階段。同一階段的block具有相同的特征分辨率。由于step-wise patch embedding已經(jīng)在embedding的時候?qū)⒕W(wǎng)絡(luò)分成了不同的階段,因此本節(jié)中的轉(zhuǎn)換是將Transformer Block重新分配到不同的階段,如上圖所示(中)。
在這種轉(zhuǎn)變下,基礎(chǔ)性能得到了進一步的提高。這種設(shè)計利用了圖像局部先驗,因此在輕量的數(shù)據(jù)增強下模型能表現(xiàn)得更好。然而,該網(wǎng)絡(luò)的精英性能明顯下降。為了研究原因,作者進行了消融實驗,發(fā)現(xiàn) self-attention在很大的分辨率下不能很好地工作。作者推測大分辨率特征包含太多的token,而self-attention很難學(xué)習(xí)它們之間的關(guān)系。3.3.4用LayerNorm替換BatchNorm
與BatchNorm相比,LayerNorm與Batch大小無關(guān),對特定任務(wù)更友好,而BatchNorm在適當(dāng)?shù)腂atch大小下通常可以獲得更好的性能。作者用BatchNorm替換所有的LayerNorm,結(jié)果表明BatchNorm的性能優(yōu)于LayerNorm。它可以提高網(wǎng)絡(luò)的基礎(chǔ)性能和精英性能。
此外,作者還嘗試在Net2中添加BatchNorm,以進一步提高精英性能。然而,該Net2-BN網(wǎng)絡(luò)存在收斂性問題。這就解釋了為什么BatchNorm在純Self-Attention模型中沒有得到廣泛的應(yīng)用。但對于本文的混合模型,BatchNorm是提高性能的可靠方法。3.3.5引入3×3卷積
由于網(wǎng)絡(luò)的token以特征圖的形式存在,因此引入核大小大于1×1的卷積是很自然的。大核卷積的具體含義如上圖的右下角所示。全局 self-attention試圖建立所有token之間的關(guān)系時,而卷積將局部鄰域內(nèi)的token聯(lián)系起來。
因此,作者選擇在feed-forward中的1×1卷積之間插入3×3卷積,從而將MLP塊轉(zhuǎn)換為bottleneck塊,如上圖的右上角所示。所獲得的bottleneck塊與ResNet-50中的bottleneck塊相似,但它們的bottleneck比例不同。作者在所有三個階段中都用bottleneck塊替換MLP塊。3×3卷積可以利用圖像中的局部先驗,進一步提高了網(wǎng)絡(luò)的基礎(chǔ)性能?;A(chǔ)性能(77.37%)與ResNet-50(77.43%)相當(dāng)。但精英性能下降了0.82%。作者進行了更多的實驗來研究其原因——沒有向所有階段添加3×3卷積,而是分別向不同階段插入3×3卷積。作者觀察到3×3卷積只在高分辨率特征上有效。作者推測,利用局部關(guān)系對于自然圖像中的高分辨率特征是很重要的。然而,對于低分辨率的特征,在配備了全局self-attention時,局部卷積是不重要。3.3.6移除position embedding
在基于Transformer的模型中,position embedding對token間的位置信息進行了編碼。在本節(jié)的過渡網(wǎng)絡(luò)中,作者刪除了position embedding。
結(jié)果如上表所示,基礎(chǔ)性能幾乎沒有變化,精英性能略有下降(0.29%)。作為比較,作者測試刪除了DeiT-S的position embedding,精英性能顯著下降了3.95%。結(jié)果表明,position embedding在過渡模型中的作用不如基于純Transformer的模型重要。因為過渡模型中的卷積操作已經(jīng)利用了位置信息,這也解釋了為什么基于卷積的模型不需要position embedding。3.3.7用feed-forward來代替self-attention
在本節(jié)中,作者刪除每個階段的self-attention,而使用feed-forward層,使網(wǎng)絡(luò)成為一個純基于卷積的網(wǎng)絡(luò)。所得網(wǎng)絡(luò)(Net7)的性能如上表所示?;诩兙矸e的網(wǎng)絡(luò)在基礎(chǔ)性能和精英性能都要差得多。
這表明,self-attention能夠驅(qū)動神經(jīng)網(wǎng)絡(luò)獲得更高的精英性能,并且不是導(dǎo)致ViT或DeiT的基礎(chǔ)性能差的原因。因此可以設(shè)計一個具有高基礎(chǔ)性能和精英性能的self-attention網(wǎng)絡(luò)。3.3.8調(diào)整網(wǎng)絡(luò)的形狀
Net7和ResNet-50之間仍有許多區(qū)別。但是,這兩個網(wǎng)絡(luò)都是基于卷積的網(wǎng)絡(luò)。這兩種網(wǎng)絡(luò)之間的性能差距可以歸因于網(wǎng)絡(luò)架構(gòu)設(shè)計策略。
上表的結(jié)果表明,ResNet-50具有更好的網(wǎng)絡(luò)架構(gòu),并且可以在更少的FLOPs下表現(xiàn)得更好。然而,ResNet-50的精英表現(xiàn)更差。這表明,基本性能和精英性能之間的不一致性不僅存在于self-attention模型中,而且也存在于基于純卷積的網(wǎng)絡(luò)中。3.4. Visformer

作者的目標(biāo)是建立一個具有高基礎(chǔ)性能和精英性能的網(wǎng)絡(luò)。過渡研究表明,基礎(chǔ)性能和精英性能之間存在一定的不一致性。
第一個問題是階段性設(shè)計,它提高了基本性能,但降低了精英性能 。為了研究其原因,作者將Net5的每個階段的bottleneck塊分別替換為Self-Attention塊,從而估計不同階段的Self-Attention的重要性。結(jié)果如上表所示,在所有三個階段中,Self-Attention的取代都降低了基礎(chǔ)性能和精英性能。此外,取代第一階段的Self-Attention幾乎對網(wǎng)絡(luò)性能沒有影響。更大的分辨率包含更多的token,作者推測Self-Attention要學(xué)習(xí)它們之間的關(guān)系更困難,因此低分辨率的Self-Attention比高分辨率的Self-Attention發(fā)揮著更重要的作用。第二個問題是在前饋塊中添加3×3卷積,這使精英性能降低了0.82% ?;贜et4,作者在每個階段分別用bottleneck塊替換MLP塊。如上表所示,盡管所有階段都在基礎(chǔ)性能上得到了改進,但只有第一階段精英性能得到提升。當(dāng)Self-Attention在這些位置上已經(jīng)有了一個全局視圖時,3×3卷積對于其他兩個低分辨率的階段是不必要的。在高分辨率階段,Self-Attention難以處理所有的token,3×3卷積可以提供改進。

結(jié)合上述觀察結(jié)果,作者提出了Visformer,結(jié)構(gòu)如上表所示。4.1. Comparison to the state-of-the-arts

上表比較了Visformer和DeiT的性能,在基礎(chǔ)設(shè)置和精英設(shè)置下,Visformer都優(yōu)于DeiT,并且在基礎(chǔ)設(shè)置下優(yōu)勢更顯著。

上表比較了Visformer和其他Transformer-based模型性能。
4.2. Training with limited data

上表比較了在有限數(shù)據(jù)集下,三種模型的對比,可以看出Visformer都取得了不錯的結(jié)果。本文提出了一種的有利于視覺識別Transformer模型——Visformer。作者使用兩個設(shè)置,基礎(chǔ)和精英設(shè)置,來評估每個模型的性能。為了研究基于Transformer的模型和基于卷積的模型表現(xiàn)不同的原因,作者分解了這些模型之間的差距,并設(shè)計了一個八步過渡步驟,以研究DeiT-S和ResNet-50之間的差距。
通過吸收優(yōu)點并丟棄缺點,作者得到了同時優(yōu)于DeiT-S和ResNet-50的Visformer-S模型。當(dāng)被轉(zhuǎn)移到一個緊湊的模型和在小數(shù)據(jù)集上進行評估時,Visformer也展現(xiàn)出了不錯的性能。