魚羊 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
談到Transformer,你可能會(huì)想到一眾NLP模型。
但現(xiàn)在,Transformer其實(shí)還能替CNN把活給干了,并且干得還不賴。
比如微軟亞研院最新提出的Swin Transformer,就在COCO數(shù)據(jù)集的分割檢測(cè)任務(wù)上來了個(gè)跨領(lǐng)域超車,一舉達(dá)到SOTA。
那么,問題來了。
關(guān)注NLP的盆友想必就會(huì)問,用Transformer做CV任務(wù),這個(gè)想法早已有之,也沒見對(duì)CNN的地位有什么動(dòng)搖,Swin Transformer又有何不同?
這就涉及到Transformer的CV應(yīng)用存在的兩個(gè)主要問題:
首先,基于Transformer的模型,token的長度是固定的。這對(duì)于NLP里的單詞當(dāng)然沒有什么問題,但到了CV領(lǐng)域,視覺元素的比例各異,比如同一個(gè)場(chǎng)景中會(huì)存在大小不同的物體。
其次,圖像中的像素與文本中的文字相比,對(duì)分辨率的要求更高。而常規(guī)的自注意力的計(jì)算復(fù)雜度,是圖像大小的平方,這就導(dǎo)致其在像素級(jí)別進(jìn)行密集預(yù)測(cè)時(shí)會(huì)出現(xiàn)問題。
而Swin Transformer,就旨在解決這些NLP和CV之間差異帶來的問題。
通過移動(dòng)窗口計(jì)算的分層Transformer
Swin Transformer的訣竅,核心是兩板斧:
基于分層特征圖,利用特征金字塔網(wǎng)絡(luò)(FPN)或U-Net等技術(shù)進(jìn)行密集預(yù)測(cè)
將自注意力計(jì)算限制在不重疊的局部窗口中,同時(shí)允許跨窗口連接,從而帶來更高的效率。
這第二板斧,也就是基于移動(dòng)窗口的自注意力:
如上圖所示,在l層,采用常規(guī)的窗口分區(qū)方案,在每個(gè)窗口內(nèi)計(jì)算自注意力。
在下一層l+1,窗口分區(qū)會(huì)被移動(dòng),產(chǎn)生新的窗口。新窗口中的自注意力計(jì)算跨越了l層中窗口的邊界,提供了新的關(guān)聯(lián)信息。
具體而言,Swin Transformer的整體架構(gòu)是醬嬸的:
將RGB圖像分割成不重疊的圖像塊(token);
應(yīng)用MLP(多層感知機(jī))將原始特征轉(zhuǎn)化為任意維度;
應(yīng)用多個(gè)修改了自注意力計(jì)算的Swin Transformer塊,并保持token的數(shù)量;
下采樣層:通過合并2×2窗口中的相鄰圖像塊來減少token的數(shù)量,并將特征深度增加一倍。
實(shí)驗(yàn)結(jié)果
研究人員讓Swin Transformer分別挑戰(zhàn)了ImageNet-1K、COCO和ADE20K上的圖像分類、對(duì)象檢測(cè)和語義分割任務(wù)。
其中,用于預(yù)訓(xùn)練的是ImageNet-22K數(shù)據(jù)集,ImageNet-1K數(shù)據(jù)集則用于微調(diào)。
結(jié)果顯示,在COCO的分割和檢測(cè)任務(wù),以及ADE20K的語義分割任務(wù)上,Swin Transformer都超越了CNN,達(dá)到了SOTA。
而在ImageNet-1K的分類任務(wù)上,雖然沒能超越EfficientNet,但效果相當(dāng)且速度更快。
關(guān)鍵詞: MSRA Transformer 超越 CNN