CPVT:美團提出動態位置編碼,讓ViT的輸入更靈活 | ICLR 2023

論文提出了一種新的ViT位置編碼CPE,基於每個token的局部鄰域信息動態地生成對應位置編碼。CPE由卷積實現,使得模型融合CNN和Transfomer的優點,不僅可以處理較長的輸入序列,也可以在視覺任務中保持理想的平移不變性。從實驗結果來看,基於CPE的CPVT比以前的位置編碼方法效果更好

來源:曉飛的算法工程筆記 公衆號

論文: Conditional Positional Encodings for Vision Transformers

Introduction


  Transformer的自注意機制可以捕捉長距離的圖像信息,根據圖像內容動態地調整感受域大小。但自注意操作是順序不變的,不能利用輸入序列中的token順序信息。爲了讓Transformer順序可知,將位置編碼加到輸入的token序列中成爲了常規操作,但這也爲Tranformer帶來兩個比較大的問題:

  • 雖然位置編碼很有效,但會降低Transformer的靈活性。位置編碼可以是可學習的,也可以是由不同頻率的正弦函數直接生成的。如果需要輸入更長的token序列,模型當前的位置編碼以及權值都會失效,需要調整結構後再fine-tuning以保持性能。
  • 加入位置編碼後,絕對位置編碼使得Transformer缺乏圖像處理所需的平移不變性。如果採用相對位置編碼,不僅帶來額外的計算成本,還要修改Transformer的標準實現。而且在圖像處理中,相對位置編碼的效果沒有絕對位置編碼好。

  爲了解決上述問題,論文提出了一個用於Vision Transformer的條件位置編碼(CPE,conditional positional encoding)。與以往預先定義且輸入無關的固定或可學習的位置編碼不同,CPE是動態生成的,生成的位置編碼中的每個值都與對應輸入token的局部鄰域相關。因此,CPE可以泛化到更長的輸入序列,並且在圖像分類任務中保持所需的平移不變性,從而提高分類精度。

  CPE通過一個簡單的位置編碼生成器(PEG,position encoding generator)實現,可以無縫地融入當前的Transformer框架中。在PEG的基礎上,論文提出了Conditional Position encoding Vision Transformer(CPVT),CPVT在ImageNet分類任務中達到了SOTA結果。

  論文的貢獻總結如下:

  • 提出了一種新型的位置編碼方案,條件位置編碼(CPE)。CPE由位置編碼生成器(PEG)動態生成,可以簡單地嵌入到深度學習框架中,不涉及對Transformer的修改。
  • CPE以輸入token的局部鄰域爲條件生成對應的位置編碼,可適應任意的輸入序列長度,從而可以處理更大分辨率的圖像。
  • 相對於常見的絕對位置編碼,CPE可以保持平移不變性,這有助於提高圖像分類的性能。
  • 在CPE的基礎上,論文提出了條件位置編碼ViT(CPVT),在ImageNet上到達了SOTA結果。
  • 此外,論文還提供了class token的替代方案,使用平移不變的全局平均池(GAP)進行類別預測。通過GAP,CPVT可以實現完全的平移不變性,性能也因此進一步提高約1%。相比之下,基於絕對位置編碼的模型只能從GAP中獲得很小的性能提升,因爲其編碼方式本身已經打破了平移不變性。

Vision Transformer with Conditional Position Encodings


Motivations

  在Vision Transformer中,尺寸爲\(H\times W\)的輸入圖像被分割成\(N=\frac{HW}{S^2}\)\(S×S\)的圖像塊,隨後加上相同大小的可學習絕對位置編碼向量。

  論文認爲常用的絕對位置編碼有兩個問題:

  • 模型無法處理比訓練序列更長的輸入序列。
  • 圖像塊平移後會對應新的位置編碼,使得模型不具備平移不變性。

  實際上,直接去掉位置編碼就能將模型應用於長序列,但這種解決方案會丟失輸入序列的位置信息,嚴重降低了性能。其次,可以像DeiT那樣對位置編碼進行插值,使其具有與長序列相同的長度。但這種方法需要對模型多做幾次fine-tuning,否則性能也是會明顯下降。對於高分辨率的輸入,最完美的解決方案是在不進行任何fine-tuning的情況下,模型依然有顯著的性能改善。

  使用相對位置編碼雖然可以解決上述兩個問題,但不能提供任何絕對位置信息。有研究表明,絕對位置信息對分類任務也很重要。而在替換對比實驗中,採用相對位置編碼的模型性能也是較差的。

Conditional Positional Encodings

  論文認爲,一個完美的視覺任務的位置編碼應該滿足以下要求:

  • 對輸入序列順序可知,但平移不變。
  • 具有歸納能力,能夠處理比訓練時更長的序列。
  • 能提供一定程度的絕對位置信息,這對性能非常重要。

  經過研究,論文發現將位置編碼表示爲輸入的局部領域關係表示,就能夠滿足上述的所有要求:

  • 首先,它是順序可知的,輸入序列順序也會影響到局部鄰域的順序。而輸入圖像中目標的平移可能不會改變其局部鄰域的順序,即平移不變性。
  • 其次,模型可以應用更長的輸入序列,因爲每個位置編碼都由對應token的局部鄰域生成。
  • 此外,它也可以表達一定程度的絕對位置信息。只要任意一個輸入token的絕對位置是已知的(比如邊界的零填充),所有其他token的絕對位置可以通過輸入token之間的相互關係推斷出來。

  因此,論文提出了位置編碼生成器(PEG),以輸入token的局部鄰域爲條件,動態地產生位置編碼。

  • Positional Encoding Generator

  PEG的處理過程如圖2所示。爲了將局部領域作爲條件,先將DeiT的輸入序列\(X\in \mathbb{R}^{B\times N\times C}\)重塑爲二維圖像形狀\(X^{'} \in\mathbb{R}^{B\times H\times W\times C}\),然後通過函數\(\mathcal{F}\)\(X^{'}\)的局部圖像中生成產生條件性位置編碼\(E^{B\times H\times W\times C}\)

  PEG可以由一個核大小爲\(k(k\ge 3)\)、零填充爲\(\frac{k-1}{2}\)的二維卷積來實現。需要注意的是,零填充是爲了位置編碼包含絕對位置信息,從而提升模型性能。函數\(\mathcal{F}\)也可以是其它形式,如可分離卷積等。

Conditional Positional Encoding Vision Transformers

  基於條件性位置編碼,論文提出了條件位置編碼Vision Transformer(CPVT),除了條件位置編碼之外,其它完全遵循ViT和DeiT來設計。CPVT一共有三種尺寸:CPVT-Ti、CPVT-S和CPVT-B。

  有趣的是,論文發現PEG的插入位置對性能也會有大影響。在第一個encoder之後插入的性能最佳,而不是直接在開頭插入。

  此外,DeiT和ViT都使用一個額外的可學習class token進行分類。但根據其結構設計,該token不是平移不變的,只能靠訓練來儘可能學習平移不變性。一個簡單的替代方法是直接換爲全局平均池(GAP),因爲GAP本身就是平移不變的。因此,論文也提出了CVPT-GAP,去掉class token,改爲採用GAP輸出進行預測。在與平移不變的位置編碼配套使用時,CVPT-GAP是完全平移不變的,可以實現更好的性能。

Experiment


  訓練配置。

  直接將224x224模型改爲384x384輸入進行測試。

  class token與GAP的性能對比。

  對第二個encoder的自注意力圖進行可視化,CPVT的自注意力圖明顯更加多樣化。

  與SOTA網絡進行對比,⚗爲使用DeiT的蒸餾策略的結果。

  PEG插入位置對比,第一個encoder之後插入效果最好。

  PEG的-1插入場景可能是由於原始圖片需要更大的感受域,通過實驗驗證增大卷積核能顯著提高性能。

  插入PEG個數的對比實驗。

  不同位置編碼方式的對比實驗。

  PEG生成位置編碼時零填充的對比實驗。

  對PEG性能提升來源進行對比實驗,PEG的確跟輸入的領域關係有關,但跟卷積參數是否對應當前網絡關係不大。

  不同配置下的性能對比。

  應用到PVT上的性能提升。

  作爲目標監測網絡主幹的性能對比。

Conclusion


  論文提出了一種新的ViT位置編碼CPE,基於每個token的局部鄰域信息動態地生成對應位置編碼。CPE由卷積實現,使得模型融合CNN和Transfomer的優點,不僅可以處理較長的輸入序列,也可以在視覺任務中保持理想的平移不變性。從實驗結果來看,基於CPE的CPVT比以前的位置編碼方法效果更好。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】

work-life balance.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章