天天看點

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

Convolution和Self-Attention是兩種強大的表征學習方法,它們通常被認為是兩種彼此不同的方法。

在本文中證明了它們之間存在着很強的潛在關系,因為這兩個方法的大部分計算實際上是用相同的操作完成的。具體來說:

  • 首先,證明了具有k\times k 卷積可以分解成k^2個獨立的1\times 1卷積;
  • 然後,進行移位和求和操作;
  • 再然後,将Self-Attention子產品中的query、key和value的投影解釋為多個1\times 1卷積,然後計算注意力權重和value的聚合。

是以,兩個子產品的第一階段都包含了類似的操作。更重要的是,與第二階段相比,第一階段的計算複雜度(通道的平方)占主導地位。

這個觀察結果自然地導緻了這兩個看似不同的範式的優雅內建,即,一個混合模型,它既兼顧Self-Attention和Convolution的優點,同時與Convolution或Self-Attention對應的模型相比,具有更小的計算開銷。大量的實驗表明,本文方法在圖像識别和下遊任務上取得了持續改進的結果。

1簡介

近年來,卷積和Self-Attention在計算機視覺領域得到了長足的發展。卷積神經網絡廣泛應用于圖像識别、語義分割和目标檢測,并在各種基準上實作了最先進的性能。最近,随着Vision Transformer的出現,基于Self-Attention的子產品在許多視覺任務上取得了與CNN對應子產品相當甚至更好的表現。

盡管這兩種方法都取得了巨大的成功,但卷積和Self-Attention子產品通常遵循不同的設計範式。傳統卷積根據卷積的權值在局部感受野上利用一個聚合函數,這些權值在整個特征圖中共享。固有的特征為圖像處理帶來了至關重要的歸納偏差。

相比之下,Self-Attention子產品采用基于輸入特征上下文的權重平均操作,通過相關像素對之間的相似函數動态計算注意力權重。這種靈活性使注意力子產品能夠适應地關注不同的區域,并捕捉更多的特征。

考慮到卷積和Self-Attention的不同和互補性質,通過內建這些子產品,存在從兩種範式中受益的潛在可能性。先前的工作從幾個不同的角度探讨了Self-Attention和卷積的結合。

早期的研究,如SENet、CBAM,表明Self-Attention可以作為卷積子產品的增強。最近,Self-Attention被提出作為獨立的塊來替代CNN模型中的傳統卷積,如SAN、BoTNet。

另一種研究側重于将Self-Attention和卷積結合在單個Block中,如 AA-ResNet、Container,而該體系結構限于為每個子產品設計獨立的路徑。是以,現有的方法仍然将Self-Attention和卷積作為不同的部分,并沒有充分利用它們之間的内在關系。

在這篇論文中,作者試圖揭示Self-Attention和卷積之間更為密切的關系。通過分解這兩個子產品的操作表明它們在很大程度上依賴于相同的1\times 1卷積操作。作者基于這一觀察結果開發了一個混合模型,名為ACmix,并以最小的計算開銷優雅地內建了Self-Attention和卷積。

具體地說:

  • 首先,通過使用1\times 1卷積對輸入特征進行映射,獲得豐富的中間特征集;
  • 然後,按照不同的模式(分别以Self-Attention方式和卷積方式)重用和聚合中間特征。

通過這種方式,ACmix既享受了兩個子產品的優點,又有效地避免了兩次昂貴的投影操作。

主要貢獻:

  1. 揭示了Self-Attention和卷積之間強大的潛在關系,為了解兩個子產品之間的聯系提供了新的視角,并為設計新的學習範式提供了靈感;
  2. 介紹了Self-Attention和卷積子產品的一個優雅內建,它享受這兩者的優點。經驗證據表明,混合模型始終優于其純卷積或Self-Attention對應模型。

2相關工作

卷積神經網絡使用卷積核提取局部特征,已經成為各種視覺任務中最強大和最正常的技術。同時,Self-Attention在BERT和GPT3等廣泛的語言任務中也表現出普遍的表現。理論分析表明,當具有足夠大的容量時,Self-Attention可以表示任意卷積層的函數類。是以,最近有一項研究探讨了将Self-Attention引入視覺任務的可能性。

主流方法有兩種:

  • 一種是将Self-Attention作為網絡中的建構塊;
  • 另一種是将Self-Attention與卷積作為互補部分。

2.1 Self-Attention only

一些研究表明,Self-Attention可以成為完全替代卷積操作。最近,Vision Transformer表明,隻要有足夠的資料,就可以将圖像視為由256個token組成的序列,并利用Transformer模型來實作圖像識别中的競争性結果。此外,在檢測、分割、點雲識别等視覺任務中采用了Transformer範式。

2.2 用注意力提升卷積

先前提出的多種圖像注意力機制表明,它可以克服卷積網絡局部性的局限性。是以,許多研究者探索使用注意力子產品或利用更多的關系資訊來增強卷積網絡功能的可能性。

  • Squeeze-andExcitation(SE)和Gather-Excite(GE) Reweight每個通道的特征圖。
  • BAM和CBAM Reweight 通道和空間位置,以更好地細化特征映射。
  • AA-ResNet通過連接配接來自另一個獨立的Self-Attention的注意力map,增強了某些卷積層。
  • BoTNet用Self-Attention代替卷積。

一些工作旨在通過從更大範圍的像素聚集資訊,設計一個更靈活的特征提取器。Hu等人提出了一種局部關系方法,根據局部像素的組成關系自适應地确定聚集權值。Wang等人提出了Non-Local網絡,通過引入全局像素之間相似性的Non-Local塊來增加感受野。

2.3 用卷積提升注意力

随着Vision Transformer的問世,許多基于Transformer的變種已經被提出,并在計算機視覺任務上取得了顯著的改進。其中已有的研究主要集中在對Transformer 模型進行卷積運算以引入額外的歸納偏差。

  • CvT在Token過程中采用卷積,并利用卷積來降低Self-Attention的計算複雜度。
  • ViT with convolutional stem提出在早期增加卷積以實作更穩定的訓練。
  • CSwin Transformer采用了基于卷積的位置編碼技術,并對下遊任務進行了改進。
  • Conformer結合Transformer與一個獨立的CNN模型內建這兩個功能。

3舊知識回顧

3.1 卷積操作

卷積是現代ConvNets最重要的組成部分之一。首先回顧标準卷積運算,并從不同的角度重新表述它。如圖2(a)所示。為簡單起見,假設卷積的步長為1。

考慮一個k\in R^{C_{out}×C_{in}×k×k}的标準卷積,其中k為kernel size,C_{in}、C_{out}是輸入和輸出通道的大小。

已知輸入張量F\in R^{C_{in}×H×W}和輸出張量G\in R^{C_{out}×H×W},其中H、W表示高度和寬度,讓f_{ij}\in R^{C_{in}}、g_{ij}\in R^{C_{out}}作為像素(i,j)分别對應于F和G。則标準卷積可表示為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升
清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

表示kernel position(p,q)的kernel weights。

為友善起見,可以将式(1)改寫為來自不同kernel position的feature map的總和:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

為了進一步簡化公式,定義了Shift操作,

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

as

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

∆x、∆y為水準位移和垂直位移。則式(3)可改寫為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

是以,标準卷積可以概括為2個stages:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

圖2(a)

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升
  • 第一階段:将輸入的feature map從某一位置線性投影,這與标準的1×1卷積相同。
  • 第二階段:将投影的feature map根據kernel position進行移位,最終聚合到一起。可以很容易地觀察到,大多數計算代價是在1×1卷積中執行的,而接下來的位移和聚合是輕量級的。

3.2 Self-Attention操作

注意力機制也被廣泛應用于視覺任務中。與傳統卷積相比,注意力允許模型在更大的範圍内聚焦于重要區域。如圖2(b)所示。

考慮一個有N個Head的标準Self-Attention子產品。令輸入張量和輸出張量F\in R^{C_{in}×H×W}和G\in R^{C_{out}×H×W},其中H、W表示高度和寬度,讓f_{ij}\in R^{C_{in}}、g_{ij}\in R^{C_{out}}作為像素(i,j)分别對應于F和G。然後,注意力子產品的輸出計算為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

||是N個注意力頭輸出的拼接,W_q^{(l)},W_k^{(l)},W_v^{(l)}是query,key和value的投影矩陣。N_k(i,j) 表示像素的局部區域,空間範圍k以(i,j)為中心,A(W_q^{(l)}f_{ij},W_k^{(l)}f_{ab})是對應于N_k(i,j)内特征的注意力權重。

對于廣泛采用的自注意力子產品,注意力權重的計算方法為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

其中d為W^{(l)}_qf_{ij}的特征維數。

此外,多頭自注意力可以分解為兩個階段,并重新表述為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升
清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

圖2(b)

  • 第一階段:使用1×1卷積将輸入特征投影為query、key和value;
  • 第二階段:包括注意力權重的計算和value矩陣的聚合,即聚集局部特征。與第一階段相比,相應的計算代價較小,與卷積的模式相同。

3.3 Computational Cost

為了充分了解卷積子產品和自注意力子產品的計算瓶頸,作者分析了每個階段的浮點運算(FLOPs)和參數數量,總結如表1所示。

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

結果表明:

  • 對于卷積子產品:卷積階段一的理論FLOPs和參數相對于通道大小C具有二次複雜度,而階段二的計算代價為線性C,不需要額外的訓練參數。
  • 對于自注意力子產品:發現了類似卷積的趨勢,所有的訓練參數都保留在階段一。對于理論的FLOPs,考慮了一個正常的情況在一個類似ResNet的模型中,k_a= 7和C=64,128,256,512不同的層深度。結果表明,第一階段消耗的操作量為3c^2>2k_a^2C ,并且這種差異随着通道大小的增長而更加明顯。

為了進一步驗證分析的有效性,作者還總結了在ResNet50模型中卷積和自注意力子產品的實際計算成本。實際上,将所有3×3卷積子產品的成本加起來,以從模型的角度反映這種趨勢。計算結果表明,99%的卷積計算和83%的自注意力在第一階段,與理論分析相一緻。

4本文方法

4.1 将自注意力與卷積聯系起來

前面介紹了對自注意力和卷積子產品的分解,從多個角度揭示了更深層次的關系。首先,這兩個階段的作用非常相似。階段一是一個特征學習子產品,兩種方法通過執行1\times 1個卷積來将特征投射到更深的空間,進而共享相同的操作。另一方面,第二階段對應的是特征聚合的過程。

從計算的角度來看,卷積子產品和自注意力子產品在第一階段進行的1 × 1卷積都需要理論浮點數和通道大小參數的二次複雜度C。相比較而言,在第二階段,兩個子產品都是輕量級的或幾乎不需要計算。

綜上所示,上述分析表明:

  1. Convolution和self-attention在通過1×1 convolutions投影輸入feature map的操作上實際上是相同的,這也是兩個子產品的計算開銷;
  2. 雖然對于捕獲語義特征至關重要,但第二階段的聚合操作是輕量級的,不需要擷取額外的學習參數。

4.2 自注意力與卷積的整合

上述的觀察自然帶來了卷積和自注意力的完美結合。由于兩個子產品共享相同的1×1卷積操作,是以隻能執行一次投影,并将這些中間特征映射分别用于不同的聚合操作。于是本文作者提出了如圖2(c)所示的混合子產品ACmix。

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

圖2(c)

具體來說,ACmix依舊包括兩個階段:

  1. 在第一階段:通過3個1×1卷積對輸入特征進行投影,然後reshape為N個Pieces。是以,獲得了包含3×N特征映射的一組豐富的中間特征。
  2. 在第二階段:它們遵循不同的範例。對于自注意力路徑,将中間特征集合到N組中,每組包含3個特征,每個特征來自1×1卷積。對應的三個特征圖分别作為query、key和value,遵循傳統的多頭自注意力子產品。對于kernel size為k的卷積路徑,采用輕全連接配接層,生成k^2個特征映射。是以,通過對生成的特征進行移位和聚合,對輸入特征進行卷積處理,并像傳統的一樣從局部感受野收集資訊。

最後,将兩個路徑的輸出相加,其強度由兩個可學習标量控制:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

4.3 改進Shift和Summation

如圖4.2節和圖2所示,卷積路徑中的中間特征遵循傳統卷積子產品中的移位和求和操作。盡管它們在理論上是輕量級的,但向不同方向移動張量實際上破壞了資料局部性,很難實作向量化實作。這可能會極大地損害了推理時的實際效率。

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

圖3

作為補救措施,采用固定kernel的深度卷積來代替低效張量位移,如圖3 (b)所示。以shift(f,-1,-1)移位特征為例,計算為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

其中c表示每個輸入特征的通道。

另一方面,如果表示卷積核(kernel size k = 3)為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

相應的輸出可以表示為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

是以,對于特定的位移方向,經過精心設計的kernel weight,卷積輸出相當于簡單張量位移。為了進一步合并來自不同方向的特征的總和,作者将所有的輸入特征和卷積核分别串聯起來,将移位運算表示為單群卷積,如圖3 (c.I)所示。這一修改使子產品具有更高的計算效率。

在此基礎上還引入了一些适應性來增強子產品的靈活性。所示在圖3 (c.II)中,釋放卷積核作為可學習權值,以移位核作為初始化。這提高了模型的容量,同時保持了原有的移位操作能力。還使用多組卷積核來比對卷積的輸出通道維數和自注意力路徑,如圖3 (c.III)所示。

4.4 ACmix的計算成本

為了更好的比較,在表1中總結了ACmix的FLOPs和參數。

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

第一階段的計算成本和訓練參數與自注意力相同,且比傳統卷積(如3×3 conv)輕。在第二階段,ACmix引入了額外的計算開銷(完全連接配接層群組卷積),其計算複雜度是線性對通道大小C和相對較小的階段即實際成本與理論分析ResNet50模型顯示了類似的趨勢。

4.5 對其他注意力模式的推廣

随着自注意力機制的發展,許多研究都集中在探索注意力的變化,以進一步提升模型性能。有學者提出的Patchwise attention将來自局部區域所有特征的資訊合并為注意力權重,取代原來的softmax操作。swin-transformer采用的視窗注意力方法在同一局部視窗中保持token的感受字段相同,以節省計算成本,實作快速推理速度。另一方面,ViT和DeiT考慮将長期依賴關系保持在單個層中的全局注意力。在特定的模型體系結構下,這些修改被證明是有效的。

在這種情況下,值得注意的是,提出的ACmix是獨立于自注意力公式的,并且可以很容易地應用到上述的變體。具體來說,注意力權重可以概括為:

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

其中[·]表示特征拼接,φ(·)表示具有中間非線性激活的兩個線性投影層,Wk(i,j)是每個query token的專門接受字段,W代表整個特征圖。然後,計算出的注意力權重可以應用于式(12),并符合一般公式。

5實驗

5.1 ImageNet

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升
清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

分類結果如上圖表所示。對于ResNet-ACmix模型優于所有具有可比較的浮點數或參數的Baseline。

例如,ResNet-ACmix 26實作了與SASA-ResNet 50相同的top-1精度,但執行次數為80%。在類似的FLOPs案例中,本文的模型比SASA的表現好0.35%-0.8%,而相對于其他Baseline的優勢甚至更大。

對于SANACmix、PVT-ACmix和Swin-ACmix,本文的模型實作了持續的提升。SAN- acmix 15以80%的FLOPs超過SAN 19。PVT-ACmix-T顯示出與PVT-Large相當的性能,隻有40%的FLOPs。Swin-ACmix-S以60% FLOPs實作了比Swin-B更高的精度。

5.2 語義分割與目标檢測

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

作者在ADE20K資料集中評估了模型的有效性,并在Semantic-FPN 和UperNet兩種分割方法上顯示結果。在ImageNet-1K上預訓練Backbone。事實證明

ACmix在所有設定下都實作了提升。

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

作者也在COCO上進行了實驗。

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升
清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

表3和表4顯示了基于resnet的模型和基于Transformer的模型在不同檢測head情況下的結果,包括RetinaNet、Mask R-CNN 和 Cascade Mask R-CNN。可以觀察到ACmix始終優于具有相似參數或FLOPs的Baseline。這進一步驗證了将ACmix轉移到下遊任務時的有效性。

5.3 消融實驗

1、結合兩個路徑的輸出

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

探索卷積和自注意力輸出的不同組合對于模型性能的影響。作者采用了多種組合方法進行實驗,結果總結如表6所示。通過用傳統的3 × 3卷積代替視窗注意,還展示了僅采用一條路徑的模型的性能,Swin-T用自注意力,而Conv-Swin-T用卷積。正如所觀察到的,卷積和自注意力子產品的組合始終優于使用單一路徑的模型。固定所有操作符的卷積和自注意力的比例也會導緻性能下降。相比之下,使用學習的參數給ACmix帶來了更高的靈活性,卷積和自注意力路徑的強度可以根據濾波器在整個網絡中的位置自适應調整。

2、Group Convolution Kernels

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

作者還對組卷積核的選擇進行了消融實驗,在表7中實證地展示了每種适應的有效性,以及它對實際推理速度的影響。用組卷積代替張量位移,大大提高了推理速度。此外,使用可學習的卷積核和精心設計的初始化增強了模型的靈活性,并有助于最終的性能。

5.5 Bias towards Different Paths

清華大學提出ACmix | 這才是Self-Attention與CNN正确的融合範式,性能速度全面提升

同樣值得注意的是,ACmix引入了兩個可學習标量α、β來合并來自兩個路徑的輸出。這導緻了子產品的一個副産品,其中α和β實際上反映了模型在不同深度上對卷積或自注意力的偏向。

這裡進行了平行實驗,圖5顯示了SAN-ACmix模型和Swin-ACmix 模型中不同層學到的參數α、β。左圖和中間圖分别顯示了自注意力和卷積路徑速率的變化趨勢。在不同的實驗中,速率的變化相對較小,特别是當層更深時。

這個觀察結果表明,對于不同的設計模式,深度模型具有穩定的偏好。在右邊的圖中顯示了一個更明顯的趨勢,其中兩個路徑之間的比率被明确地表示出來。可以看到:

  • 在Transformer模型的早期階段,卷積可以作為很好的特征提取器。
  • 在網絡的中間階段,模型傾向于利用兩種路徑的混合,對卷積的偏向越來越大。
  • 在最後階段,自注意力表現出比卷積更大的優勢。這也與之前作品的設計模式一緻,即在最後階段多采用自注意力來代替原來的3x3卷積,早期的卷積被證明對vision transformer更有效。

通過分析α和β的變化發現在深度模型的不同階段對卷積和自注意力有不同的偏向。

6參考

[1].On the Integration of Self-Attention and Convolution