【論文閱讀及代碼實現(xiàn)】BiFormer: 具有雙水平路由注意的視覺變壓器
BiFormer: Vision Transformer with Bi-Level Routing Attention
視覺轉(zhuǎn)換器的核心組成部分,注意力是捕捉長期依賴關(guān)系的有力工具
計算跨所有空間位置的成對token交互時,計算負(fù)擔(dān)和沉重的內(nèi)存占用
提出了一種新的動態(tài)稀疏注意,通過雙層路由實現(xiàn)更靈活的內(nèi)容感知計算分配
?
?
過程:
- 首先在粗區(qū)域級別過濾掉不相關(guān)的鍵值對
- 然后在剩余候選區(qū)域(即路由區(qū)域)的聯(lián)合中應(yīng)用細(xì)粒度的Token到Token
- 利用稀疏性來節(jié)省計算和內(nèi)存,同時只涉及GPU-friendly的密集矩陣乘法
?
提出了一種新的通用視覺變壓器,稱為BiF變壓器
?
一、總體介紹
?
Transformer有許多適合于構(gòu)建強大的數(shù)據(jù)驅(qū)動模型的屬性
捕獲數(shù)據(jù)中的遠(yuǎn)程依賴關(guān)系
?
卷積本質(zhì)上是一個局部算子,與之相反,注意力的一個關(guān)鍵屬性是全局接受場,它使視覺轉(zhuǎn)換器能夠捕獲遠(yuǎn)程依賴
稀疏關(guān)注引入到視覺轉(zhuǎn)換,可以減少相應(yīng)的計算量
?
不同語義區(qū)域的查詢實際上關(guān)注的鍵值對是完全不同的。因此,強制所有查詢處理同一組令牌可能不是最優(yōu)的
需要評估所有查詢和鍵之間的配對親和力,因此具有相同的vanilla attention復(fù)雜性。另一種可能性是基于每個查詢的本地上下文來預(yù)測注意力偏移量
?
高效地定位有價值的鍵值
提出了一種區(qū)域到區(qū)域路由,核心思想是在粗粒度的區(qū)域級別過濾掉最不相關(guān)的鍵值
不是直接在細(xì)粒度的令牌級別
應(yīng)用Token到令Token的注意,這是非常重要的,因為現(xiàn)在假定鍵值(Q,K,V)對在空間上是分散的
?
使用BRA作為核心構(gòu)建塊,我們提出了BiFormer,這是一個通用的視覺變壓器骨干
BRA使BiFormer能夠以內(nèi)容感知的方式為每個查詢處理最相關(guān)的鍵/值Token的一小部分,因此我們的模型實現(xiàn)了更好的計算性能權(quán)衡
?
?
具體作用:
- 引入了一種新的雙層路由機制,自適應(yīng)查詢的方式實現(xiàn)內(nèi)容感知的稀疏模式
- 雙級路由關(guān)注作為基本構(gòu)建塊
- 更好的性能和更低的計算量
?
二、聯(lián)系工作
?
Vision transformers
??采用基于通道的MLP塊進行錯位嵌入(通道混合),并采用注意力塊進行交叉位置關(guān)系建,transformers使用注意力作為卷積的替代方案來實現(xiàn)全局上下文建模
??vanilla attention在所有空間位置上兩兩計算特征親和性,它會帶來很高的計算負(fù)擔(dān)和沉重的內(nèi)存占用
?
?
Efficient attention mechanisms
??稀疏連接模式[6],低秩近似[43]或循環(huán)操作[11]來減少vanilla attention的計算和內(nèi)存復(fù)雜性瓶頸,Swin變壓器中,將注意力限制在不重疊的局部窗口上,并引入移位窗口操作來實現(xiàn)相鄰窗口之間的窗口間通信
?
手工制作的稀疏模式:
- 膨脹窗口[41,46]
- 十字形窗口[14]
不同查詢的關(guān)注區(qū)域可能會有顯著差異
??雙層路由注意的目標(biāo)是定位幾個最相關(guān)的鍵值對,而四叉樹注意構(gòu)建了一個到ken金字塔,并組裝來自不同粒度的所有級別的消息
?
三、具體模型
3.1 注意力
?
?
注意力的具體表示:
Q∈RNq×C,鍵K∈RNkv×C,值V∈RNkv×C作為輸入
避免權(quán)值集中和梯度消失,引入標(biāo)量因子√C
基礎(chǔ)的構(gòu)建塊是多頭自關(guān)注(MHSA)
?
3.2 雙級路由注意(BRA)
?
為了緩解MHSA的可擴展性問題,一些研究[14,29,41,46,48]提出了不同的稀疏關(guān)注機制,其中每個查詢只關(guān)注少量的鍵值對
探索了一種動態(tài)的、查詢感知的稀疏注意機制。
整體結(jié)構(gòu)圖:
?
具體操作思想:
- 在粗區(qū)域級別過濾掉大多數(shù)不相關(guān)的鍵值對
- 只保留一小部分路由區(qū)域
- 路由區(qū)域的聯(lián)合中應(yīng)用細(xì)粒度的令牌到令牌關(guān)
?
Region partition and input projection.
特征圖X∈RH×W×C
分為S×S個不重疊的區(qū)域,使得每個區(qū)域包含H×W×S2特征向量
將其轉(zhuǎn)化為
同時將導(dǎo)出查詢,鍵,值張量,Q, K, V∈R s2xHW/S2×C,具有線性投影
?
?
Region-to-region routing with directed graph
構(gòu)造一個有向圖來找到參與關(guān)系,每個給定區(qū)域應(yīng)該參與的區(qū)域
對Q和K應(yīng)用每個區(qū)域的平均值來推導(dǎo)區(qū)域級查詢和鍵Qr, Kr∈RS2×C
?
Qr與轉(zhuǎn)置的Kr之間的矩陣乘法推導(dǎo)出區(qū)域到區(qū)域親和圖的鄰接矩陣
Ar中的條目度量兩個區(qū)域在語義上的關(guān)聯(lián)程度
步驟是通過僅為每個區(qū)域保留top-k連接來修剪關(guān)聯(lián)圖
?
Ir的第i行包含第i區(qū)最相關(guān)區(qū)域的k個指標(biāo)
區(qū)域到區(qū)域路由索引矩陣Ir,我們就可以應(yīng)用細(xì)粒度的Token到令Token的注意關(guān)注。對于區(qū)域i中的每個查詢令牌
收集鍵和值張量
函數(shù)LCE(·)使用深度卷積參數(shù)化,我們將內(nèi)核大小設(shè)置為5
?
BRA的計算包括三個部分:
-
線性投影
-
區(qū)域到區(qū)域路由
-
token到token注意
?
3.4. BiFormer的結(jié)構(gòu)設(shè)計
?
BRA為基本構(gòu)建塊,提出了一種新的通用視覺變壓器BiFormer
具體結(jié)構(gòu):
- 第一階段使用重疊的patch嵌入
- 第二到第四階段使用patch合并模塊
- 使用Ni連續(xù)的BiFormer塊來變換特征
將每個注意頭設(shè)置為32個通道,MLP擴展比e=3。對于BRA,由于輸入分辨率不同,我們對4個階段使用topk = 1,4,16, S2
分類/語義分割/目標(biāo)檢測任務(wù),區(qū)域劃分因子S = 7/8/16
?
?
四、論文實驗結(jié)果
?
同樣只看在ADE20K,語義分割上的實驗效果,與其他的效果來進行對比
基于MMSegmentation[8]在ADE20K[55]數(shù)據(jù)集上進行了語義分割實驗。
采用框架對比:
- 語義FPN
- UperNet
主干都使用ImageNet-1K預(yù)訓(xùn)練的權(quán)重進行初始化,而其他層則使用隨機初始化,使用AdamW優(yōu)化器對模型進行優(yōu)化,批量大小設(shè)置為32
Swin Transformer相同的設(shè)置
?
?
五、代碼理解
?
從官方代碼中給出的代碼中我們選取biformer_base來對相應(yīng)的
通過相應(yīng)參數(shù),我們可以得知,在構(gòu)建模型中的數(shù)據(jù)
由于我下游任務(wù)是語義分割,topks的最后一項參數(shù)是S=8,s2是64
?
?
這里是具體的BRA模塊的構(gòu)成參數(shù)導(dǎo)入,由4個階段的不同來分配不同的參數(shù),因為s=-1改為了s=64,在4個階段的Attention都為BiLevelRoutingAttention
?
?
在代碼中的具體使用
原官方代碼中有很多if,else的判斷選擇,但是最后執(zhí)行的代碼為這一段
Biformer的具體函數(shù)在
可以看到具體的函數(shù)操作
?
?
六、遙感實驗結(jié)果
2023.5.21 | resnet50 | Vaihingen | 256*256(疊切) | 3225 | 否 | 否 | 100 | 0.01 | SGD | 是 | OA=83.47% | Miou=67.75% | F1=80.53% | resnet50+BiFormer*4+IRFFN(depth=[3,4,6,3] num_heads=[2, 4, 8, 16],dilation=[1, 2]) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2023.5.21 | resnet50 | Vaihingen | 256*256(疊切) | 3225 | 否 | 否 | 100 | 0.01 | SGD | 是 | 82.93% | 67.61% | 80.35% | resnet50+BiFormer2+MSDA2+IRFFN(depth=[3,4,6,3] num_heads=[2, 4, 8, 16],dilation=[1, 2]) |
2023.5.21 | resnet50 | Vaihingen | 256*256(疊切) | 3225 | 否 | 否 | 100 | 0.01 | SGD | 是 | 83.24% | 67.74% | 80.44% | resnet50+BiFormer+MSDA+BiFormer+MSDA+IRFFN(depth=[3,4,6,3] num_heads=[2, 4, 8, 16],dilation=[1, 2]) |
主干網(wǎng)絡(luò):resnet50
解碼器:Unet的融合解碼文章來源:http://www.zghlxwxcb.cn/news/detail-529093.html
初步結(jié)論:具有一定提高的效果,但作為輕量級的網(wǎng)絡(luò),在實際的使用上效果一般文章來源地址http://www.zghlxwxcb.cn/news/detail-529093.html
到了這里,關(guān)于【論文閱讀及代碼實現(xiàn)】BiFormer: 具有雙水平路由注意的視覺變壓器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!