前言
在計算機視覺中,相對位置編碼的有效性還沒有得到很好的研究,甚至仍然存在爭議,本文分析了相對位置編碼中的幾個關鍵因素,提出了一種新的針對2D圖像的相對位置編碼方法,稱為圖像RPE(IRPE)。
本文來自公眾號CV技術指南的
關注公眾號CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
代碼:https://github.com/microsoft/Cream/tree/main/iRPE
Background
Transformer的核心是self-attention,它能夠按順序對tokens之間的關系進行建模。然而,self-attention有一個固有的缺陷-它不能捕獲輸入tokens的順序。因此,合並位置信息的顯式表示對於Transformer特別重要,因為模型在其他方面完全不受序列排序的影響,這對於對結構化數據進行建模是不可取的。
transformer位置表示的編碼方法主要有兩類。一個是絕對的,另一個是相對的。
絕對方法將輸入tokens的絕對位置從1編碼到最大序列長度。也就是說,每個位置都有單獨的編碼向量。然后將編碼向量與輸入Tokens組合,以將位置信息輸入給模型。
相對位置方法對輸入tokens之間的相對距離進行編碼,並學習tokens之間的成對關系。相對位置編碼(relative position encoding, RPE)通常通過具有與self-attention模塊中的 query 和 key 交互的可學習參數的查詢表來計算。這樣的方案允許模塊捕獲Tokens之間非常長的依賴關系。
相對位置編碼在自然語言處理中被證明是有效的。然而,在計算機視覺中,這種效果仍然不清楚。最近很少有文獻對其進行闡述,但在Vision Transformer方面卻得出了有爭議的結論。
例如,Dosovitski等人觀察到相對位置編碼與絕對位置編碼相比沒有帶來任何增益。相反,Srinivaset等人發現相對位置編碼可以誘導明顯的增益,優於絕對位置編碼。此外,最近的工作聲稱相對位置編碼不能和絕對位置編碼一樣好用。這些工作對相對位置編碼在模型中的有效性得出了不同的結論,這促使我們重新審視和反思相對位置編碼在Vision Transformer中的應用。
另一方面,語言建模采用原始相對位置編碼,輸入數據為一維單詞序列。但對於視覺任務,輸入通常是2D圖像或視頻序列,其中像素具有高度空間結構。目前尚不清楚:從一維到二維的擴展是否適用於視覺模型;方向信息在視覺任務中是否重要?
Contributions
本文首先回顧了現有的相對位置編碼方法,然后針對二維圖像提出了新的編碼方法。做了以下貢獻。
1.分析了相對位置編碼中的幾個關鍵因素,包括相對方向、上下文的重要性、query、key、value和相對位置嵌入之間的交互以及計算代價。該分析對相對位置編碼有了全面的理解,並為新方法的設計提供了經驗指導。
2.提出了一種高效的相對編碼實現方法,計算成本從原始O()降低到O(nkd)(其中k<<n),適用於高分辨率輸入圖像,如目標檢測、語義分割等Tokens數可能非常大的場合。
3.綜合考慮效率和通用性,提出了四種新的vision transformer的相對位置編碼方法,稱為image RPE(IRPE)。這些方法很簡單,可以很容易地插入self-attention層。實驗表明,在不調整任何超參數和設置的情況下,該方法在ImageNet和COCO上分別比其原始模型DeiTS和DETR-ResNet50提高了1.5%(top-1ACC)和1.3%(MAP)。
4.實驗證明,在圖像分類任務中,相對位置編碼可以代替絕對編碼。同時,絕對編碼對於目標檢測是必要的,其中像素位置對於目標定位是重要的。
Methods
首先,為了研究編碼是否可以獨立於輸入嵌入,論文引入了兩種相對位置模式:偏置模式(Bias Mode)和上下文模式(Contextual Mode)。與傳統的裁剪函數(Clip function)不同,論文提出了一種分段函數(Piecewise function)來將相對位置映射到編碼。之后,為了研究方向性的重要性,論文設計了兩種非定向方法和兩種定向方法。
Bias Mode和Contextual Mode
以前的相對位置編碼方法都依賴於輸入嵌入。它帶來了一個問題,即編碼是否可以獨立於輸入?論文引入了相對位置編碼的偏置模式和上下文模式來研究這一問題。前者與輸入嵌入無關,后者考慮與query、key或value的交互。
用一個統一的公式來表示,即
其中b_ij是2D相對位置編碼,用來定義偏置或上下文模式。
對於偏置模式,b_ij = r_ij,其中r_ij是可學習標量,並且表示位置i和j之間的相對位置權重。
對於上下文模式,
其中r_ij是與query嵌入交互的可訓練向量。上下文模式有多個變體,這里不一一例舉,有需要者請看論文。
Piece Index Function
在描述二維相對位置權值之前,首先引入一個多對一函數,將一個相對距離映射為有限集合中的一個整數,然后以該整數為索引,在不同的關系位置之間共享編碼。這樣的索引函數可以極大地減少長序列(例如高分辨率圖像)的計算成本和參數數量。
盡管在[18]中使用的裁剪函數h(X)=max(−β,min(β,x))也降低了成本,但是將相對距離大於β的位置分配給相同的編碼。這種方法不可避免地遺漏了遠程相對位置的上下文信息。
論文引入了一個分段函數g(x):R→{y∈Z|−β≤y≤β},用於索引到相應編碼的相對距離。該函數基於一個假設,即較近的鄰居比較遠的鄰居更重要,並通過相對距離來分配注意力。它表示為
其中[·]是舍入運算,Sign()確定數字的符號,即正輸入返回1,負輸入返回-1,反之返回0。α確定分段點,β控制輸出在[−β,β]范圍內,γ調整對數部分的曲率。
將分段函數h(X)與剪裁函數h(X)=min(−β,max(β,x))進行比較。在圖2中,裁剪函數h(X)分布均勻的注意力,省略遠距離的位置,但分段函數g(x)根據相對距離分布不同的注意力水平。作者認為應該保留遠程位置的潛在信息,特別是對於高分辨率圖像或需要遠程特征依賴的任務,因此選擇g(X)來構造映射方法。
2D相對位置計算
1.歐氏距離方法(Euclidean Method):計算兩個相對位置的歐氏距離,將距離通過一個可學習的偏置標量或上下文向量映射到相應的編碼。
2.量化方法(Quantization Method ):在上述歐氏距離方法中,較近的兩個相對距離不同的鄰居可以映射到同一個索引中,例如二維相對位置(1,0)和(1,1)都映射到索引1中,而應該將最近的鄰居分開。因此,需要將歐式距離量化,即不同的實數映射成不同的整數。
quant(·)將一組實數{0,1,1.41,2,2.24,...}映射為一組整數{0,1,2,3,4,...}。此方法也是非定向的。
3.交叉法(Cross Method)。像素的位置方向對圖像也很重要,因此提出了有向映射方法。這種方法被稱為Cross方法,它分別在水平和垂直方向上計算編碼,然后對它們進行匯總。該方法如下給出,
其中p˜xi(i,j)和p˜yi(i,j)在偏置模式下都是可學習標量,或者在上下文模式下都是可學習向量。與SASA中的編碼類似,相同的偏移量在x軸或y軸上共享相同的編碼,但主要區別在於我們使用分段函數根據相對距離來分配注意力。
4.乘積法(Product Method)。如果一個方向上的距離相同,無論是水平距離還是垂直距離,交叉方法都會將不同的相對位置編碼到同一嵌入中。此外,交叉法帶來額外的計算開銷。為了提高效率和包含更多的方向性信息,論文設計了乘積方法,其公式如下
一個高效的實現方法
在上下文模式中,以上所有的方法都有一個共同的部分:。
計算這個部分需要時間復雜度O(),其中n和d分別表示輸入序列的長度和特征通道的數目。由於I(i,j)的多對一特性,集合I(i,j)的大小K通常小於vision transformer。因此,論文提供如下高效實現:
它花費O(nkd)的時間復雜度預計算所有的z_i,t,然后通過映射t=i(i,j)將zi_,t賦給那個共同表達式。賦值運算的時間復雜度為O(N^2),其代價比預計算過程小得多。因此,相對位置編碼的計算成本也從原來的 O() 降低到 O(nkd)。
Conclusion
1. 四種方法的兩種模式之間的比較。
在vision transformer中,有向方法(交叉和乘積)通常比無向方法(歐式距離和量化)表現得更好。這一現象說明了方向性對於vision transformer是很重要的,因為圖像像素具有高度的結構化和語義相關性。
無論使用哪種方法,上下文模式都實現了優於偏置模式的性能。潛在的原因可能是上下文模式改變了帶有輸入特征的編碼,而偏置模式保持靜態。
2.相對位置編碼可以在不同頭部之間共享或不共享的結果比較。
對於偏置模式,當在頭部之間共享編碼時,准確度會顯著下降。相比之下,在上下文模式下,兩個方案之間的性能差距可以忽略不計。這兩種方法的平均TOP-1准確率都達到了80.9%。
論文推測,不同的頭部需要不同的相對位置編碼(RPE)來捕捉不同的信息。在上下文模式下,每個頭部可以通過公式計算自己的RPE。當處於偏置模式時,共享RPE強制所有頭部對patches給予相同的關注。
3.分段函數和裁剪函數的比較
在圖像分類任務中,這兩個函數之間的性能差距非常小,甚至可以忽略不計。然而,在目標檢測任務中,裁剪函數比分段函數差。其根本原因在於,當序列長度較短時,這兩個函數非常相似。分段函數是有效的,特別是當序列大小遠遠大於buckets的數量時。(注:作者把P_I(i,j)作為一個bucket(桶),用於存儲相對位置權重)
與分類相比,目標檢測使用分辨率高得多的輸入,導致輸入序列長得多。因此,推測當輸入序列較長時,應該使用分段函數,因為它能夠將不同的注意力分配到距離相對較大的位置,而當相對距離大於β時,裁剪函數分配相同的編碼。
4.在ImageNet上與其它SOTA模型的比較
歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
在公眾號中回復關鍵字 “入門指南“可獲取計算機視覺入門所有必備資料
其它文章