如何看待Transformer在CV上的應(yīng)用前景,未來(lái)有可能替代CNN嗎?

文章轉(zhuǎn)載自知乎問(wèn)答,著作權(quán)歸屬原作者,如有侵權(quán)請(qǐng)聯(lián)系刪除!
https://www.zhihu.com/question/437495132
mileistone(畢業(yè)于上海交大,擅長(zhǎng)機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、計(jì)算機(jī)視覺(jué))回答:
Transformer的核心模塊是self-attention,CNN的核心模塊是conv,我認(rèn)為在計(jì)算機(jī)視覺(jué)領(lǐng)域self-attention不會(huì)替代conv,而是和conv融合、取長(zhǎng)補(bǔ)短。
我在CNN與GCN的區(qū)別、聯(lián)系及融合中對(duì)比了self-attention和conv,簡(jiǎn)述如下:
對(duì)比公式(1)和公式(3)
一、每個(gè)node的空間變換
(1)和(3)都會(huì)對(duì)node做空間變換即,和
。但是(1)中每個(gè)點(diǎn)的空間變換是相同的,而(3)中不同點(diǎn)做的空間變換不同。
二、對(duì)node與node之間相關(guān)性的建模
(1)中通過(guò)對(duì)每個(gè)空間變化之后的特征進(jìn)行加權(quán),
(即self-attention)顯式地對(duì)node與node之間的相關(guān)性進(jìn)行了建模,而且這個(gè)相關(guān)性相對(duì)輸入而言是動(dòng)態(tài)的。
(3)中雖然沒(méi)顯式地針對(duì)node與node之間地相關(guān)性進(jìn)行建模,但是每個(gè)node的空間變換不相同,這個(gè)不相同隱式地包含了點(diǎn)與點(diǎn)之間的相關(guān)性,不過(guò)這個(gè)相關(guān)性相對(duì)輸入而言是靜態(tài)的,即無(wú)論輸入怎么變,點(diǎn)與點(diǎn)之間的相關(guān)性一經(jīng)訓(xùn)練完成就再也不會(huì)變化。
這個(gè)有點(diǎn)像BN和SENet,BN中的對(duì)每個(gè)通道有一個(gè)加權(quán),SENet會(huì)通過(guò)SE模塊去學(xué)每個(gè)通道的加權(quán)(論文中叫attention),BN中的
是靜態(tài)的,訓(xùn)練結(jié)束后每個(gè)通道的加權(quán)不會(huì)根據(jù)輸入的變化而變化,而SENet中的attention是動(dòng)態(tài)的,每個(gè)通道上的attention會(huì)因?yàn)檩斎氩煌l(fā)生變化。
三、局部與全局
(1)中取決于上一層所有的node,而(3)中
僅取決于
附近的node(卷積核的size決定其范圍)。
可以看到從三個(gè)角度來(lái)看,self-attetion和conv采取了不同的思路。給定一個(gè)角度,self-attention的思路一定比conv更好嗎?我想可能不一定,不同思路對(duì)應(yīng)不同的數(shù)據(jù)分布,也就是各有優(yōu)劣。
給定數(shù)據(jù)分布,針對(duì)不同角度,我們選取self-attention和conv中更好的思路,最后可以融合成一個(gè)更好的模塊。比如CNN與GCN的區(qū)別、聯(lián)系及融合中所提到的:
公式(1)和(3)既有相似又有區(qū)別,那么很直接的一個(gè)想法是能否對(duì)它們的特性做排列組合,得到更好的模型呢?
比如,結(jié)合(3)中的局部性和(1)中的self-attention,得到![]()
再比如,結(jié)合(3)中不同點(diǎn)之間不共享空間變化這個(gè)特點(diǎn)和(1)中的self-attention,得到![]()
舉幾個(gè)具體的例子。
A、圖像跟文本不太一樣的一個(gè)地方是圖像比文本維度更大,直接全部用self-attention,會(huì)導(dǎo)致計(jì)算量出奇的大,這明顯是我們不太愿意看到的,如果借用conv的局部思想也許就可以緩解這個(gè)問(wèn)題,或者干脆在網(wǎng)絡(luò)前面部分直接用conv。
比如ViT(文章里提到的將圖片分成多個(gè)無(wú)overlap的patch,每個(gè)patch通過(guò)linear projection映射為patch embedding,這個(gè)過(guò)程其實(shí)就是conv)、DETR。我在關(guān)于Vision Transformer的一些思考里詳細(xì)分析過(guò)ViT,有興趣可以看一下。
B、conv有兩個(gè)假設(shè),局部相關(guān)性和空間平穩(wěn)性,在conv橫行計(jì)算機(jī)視覺(jué)領(lǐng)域的時(shí)候,學(xué)術(shù)界認(rèn)為conv之所以這么有效是因?yàn)檫@兩個(gè)假設(shè)和圖像的數(shù)據(jù)分布非常匹配。
假如conv的這兩個(gè)假設(shè)實(shí)際上真的和圖像的數(shù)據(jù)分布非常匹配,那其實(shí)可以將這兩個(gè)假設(shè)和self-attention結(jié)合起來(lái),即self-attention不是針對(duì)全局的,而是類(lèi)似conv一樣,一個(gè)patch一個(gè)patch滑,每個(gè)patch里做self-attention。
另外,我們面對(duì)一個(gè)領(lǐng)域內(nèi)多種方法的時(shí)候,總想排個(gè)序,看看誰(shuí)最好,誰(shuí)最差。但是實(shí)際上,大部分情況下,沒(méi)有放之四海而皆準(zhǔn)的最好,每個(gè)方法有自己的適用范圍,有自己優(yōu)點(diǎn)和缺點(diǎn)。我們葆有一個(gè)更開(kāi)放和包容的心態(tài)也許更好,在不知道具體數(shù)據(jù)分布的時(shí)候,不要強(qiáng)行排序,也不要接受他人的排序。
當(dāng)數(shù)據(jù)分布確定的時(shí)候,我們?cè)賮?lái)分析已有的方法有哪些特性跟它是匹配的,然后“集萬(wàn)千寵愛(ài)于一身”,豈不美哉。
就像深度學(xué)習(xí)火起來(lái)的時(shí)候,很多初學(xué)者內(nèi)心都有一個(gè)疑問(wèn)“既然有了深度學(xué)習(xí),我們是不是不需要傳統(tǒng)機(jī)器學(xué)習(xí)算法了?”,我在深度學(xué)習(xí)的學(xué)習(xí)歷程里討論過(guò)這個(gè)問(wèn)題:
尺有所長(zhǎng),寸有所短。每個(gè)模型都有它適用的范圍(其實(shí)也就是assumption),深度學(xué)習(xí)也不例外,超過(guò)了適用范圍,啥模型都得嗝屁。比如你的數(shù)據(jù)天然是線性可分的,那lr或者svm將會(huì)是最好的選擇,如果你選了高大上的深度學(xué)習(xí),結(jié)果反而會(huì)適得其反。
面對(duì)一個(gè)任務(wù),分析這個(gè)任務(wù)的assumption,然后去你的武器庫(kù)(也就是各種模型)里尋找跟這個(gè)assumption匹配的武器,知己知彼,方能百戰(zhàn)不殆。不要瞧不起svm這樣的匕首,也不要太高看深度學(xué)習(xí)這樣的屠龍刀。

小將將(算法工程師,興趣點(diǎn)不限于圖像識(shí)別,目標(biāo)檢測(cè),圖像分割,模型壓縮,GPU編程等)回答:
Attention is All You Need??!
看OpenAI最近放出來(lái)的研究文本和圖像的工作DALL·E和CLIP,真的被驚艷到了!
先簡(jiǎn)單來(lái)看一下transformer在分類(lèi),檢測(cè)和分割上的應(yīng)用:
(1)分類(lèi) ViT: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

把圖像分成固定大小的patchs,把patchs看成words送入transformer的encoder,中間沒(méi)有任何卷積操作,增加一個(gè)class token來(lái)預(yù)測(cè)分類(lèi)類(lèi)別。
(2)檢測(cè) DETR:End-to-End Object Detection with Transformers

先用CNN提取特征,然后把最后特征圖的每個(gè)點(diǎn)看成word,這樣特征圖就變成了a sequence words,而檢測(cè)的輸出恰好是a set objects,所以transformer正好適合這個(gè)任務(wù)。
(3)分割 SETR:Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers

用ViT作為的圖像的encoder,然后加一個(gè)CNN的decoder來(lái)完成語(yǔ)義圖的預(yù)測(cè)。
當(dāng)然,目前基于transformer的模型在分類(lèi),檢測(cè)和分割上的應(yīng)用絕不止上面這些,但基本都是差不多的思路。比如ViT-FRCNN:Toward Transformer-Based Object Detection這個(gè)工作是把ViT和RCNN模型結(jié)合在一起來(lái)實(shí)現(xiàn)檢測(cè)的。

關(guān)于transformer更多在CV上的工作,可以看最新的兩篇綜述文章:A Survey on Visual Transformer;Transformers in Vision: A Survey


這里來(lái)談一下自己幾點(diǎn)粗鄙的認(rèn)識(shí):
(1)CNN是通過(guò)不斷地堆積卷積層來(lái)完成對(duì)圖像從局部信息到全局信息的提取,不斷堆積的卷積層慢慢地?cái)U(kuò)大了感受野直至覆蓋整個(gè)圖像;但是transformer并不假定從局部信息開(kāi)始,而且一開(kāi)始就可以拿到全局信息,學(xué)習(xí)難度更大一些,但transformer學(xué)習(xí)長(zhǎng)依賴的能力更強(qiáng),另外從ViT的分析來(lái)看,前面的layers的“感受野”(論文里是mean attention distance)雖然迥異但總體較小,后面的layers的“感受野“越來(lái)越大,這說(shuō)明ViT也是學(xué)習(xí)到了和CNN相同的范式。沒(méi)有“受限”的transformer一旦完成好學(xué)習(xí),勢(shì)必會(huì)發(fā)揮自己這種優(yōu)勢(shì)。

(2)CNN對(duì)圖像問(wèn)題有天然的inductive bias,如平移不變性等等,以及CNN的仿生學(xué)特性,這讓CNN在圖像問(wèn)題上更容易;相比之下,transformer沒(méi)有這個(gè)優(yōu)勢(shì),那么學(xué)習(xí)的難度很大,往往需要更大的數(shù)據(jù)集(ViT)或者更強(qiáng)的數(shù)據(jù)增強(qiáng)(DeiT)來(lái)達(dá)到較好的訓(xùn)練效果。好在transformer的遷移效果更好,大的數(shù)據(jù)集上的pretrain模型可以很好地遷移到小數(shù)據(jù)集上。還有一個(gè)就是ViT所說(shuō)的,transformer的scaling能力很強(qiáng),那么進(jìn)一步提升參數(shù)量或許會(huì)帶來(lái)更好的效果(就像驚艷的GPT模型)。

(3)目前我們還看到很大一部分工作還是把transformer和現(xiàn)有的CNN工作結(jié)合在一起,如ViT其實(shí)也是有Hybrid Architecture(將ResNet提出的特征圖送入ViT)。而對(duì)于檢測(cè)和分割這類(lèi)問(wèn)題,CNN方法已經(jīng)很成熟,難以一下子用transformer替換掉,目前的工作都是CNN和transformer的混合體,這其中有速度和效果的雙重考慮。另外也要考慮到如果輸入較大分辨率的圖像,transformer的計(jì)算量會(huì)很大,所以ViT的輸入并不是pixel,而是小patch,對(duì)于DETR它的transformer encoder的輸入是1/32特征這都有計(jì)算量的考慮,不過(guò)這肯定有效果的影響,所以才有后面改進(jìn)工作deform DETR。短期來(lái)看,CNN和transformer應(yīng)該還會(huì)攜手同行。最新的論文Rethinking Transformer-based Set Prediction for Object Detection,還是把現(xiàn)有的CNN檢測(cè)模型和transformer思想結(jié)合在一起實(shí)現(xiàn)了比DETR更好的效果(訓(xùn)練收斂速度也更快):

(4)這我想到了神經(jīng)網(wǎng)絡(luò)的本質(zhì):一個(gè)復(fù)雜的非線性系統(tǒng)來(lái)擬合你的問(wèn)題。無(wú)論是CNN,RNN或者transformer都是對(duì)問(wèn)題一種擬合罷了,也沒(méi)有孰優(yōu)孰劣。就一個(gè)受限的問(wèn)題來(lái)看,可能有個(gè)高低之分,但我相信隨著數(shù)據(jù)量的增加,問(wèn)題的效果可能最終取決于模型的計(jì)算量和參數(shù),而不是模型是哪個(gè),因?yàn)橹暗墓ぷ饕呀?jīng)證明:一個(gè)三層神經(jīng)網(wǎng)絡(luò)可以逼近任何一個(gè)非線性函數(shù),前提是參數(shù)足夠大,而且更重要的是你找到一個(gè)好的訓(xùn)練方法。
未來(lái)雖然很難說(shuō),但依然可期!

齊國(guó)君
(University of Central Florida?·?Professor and Director of MAPLE Lab)回答:
CNN和transformer在處理視覺(jué)信息上各有優(yōu)缺點(diǎn)。
CNN網(wǎng)絡(luò)在提取底層特征和視覺(jué)結(jié)構(gòu)方面有比較大的優(yōu)勢(shì)。這些底層特征構(gòu)成了在patch level 上的關(guān)鍵點(diǎn)、線和一些基本的圖像結(jié)構(gòu)。這些底層特征具有明顯的幾何特性,往往關(guān)注諸如平移、旋轉(zhuǎn)等變換下的一致性或者說(shuō)是共變性。
比如,一個(gè)CNN卷積濾波器檢測(cè)得到的關(guān)鍵點(diǎn)、物體的邊界等構(gòu)成視覺(jué)要素的基本單元在平移等空間變換下應(yīng)該是同時(shí)變換(共變性)的。CNN網(wǎng)絡(luò)在處理這類(lèi)共變性時(shí)是很自然的選擇。
但當(dāng)我們檢測(cè)得到這些基本視覺(jué)要素后,高層的視覺(jué)語(yǔ)義信息往往更關(guān)注這些要素之間如何關(guān)聯(lián)在一起進(jìn)而構(gòu)成一個(gè)物體,以及物體與物體之間的空間位置關(guān)系如何構(gòu)成一個(gè)場(chǎng)景,這些是我們更加關(guān)心的。目前來(lái)看,transformer在處理這些要素之間的關(guān)系上更自然也更有效。
從這兩方面的角度來(lái)看,將CNN在處理底層視覺(jué)上的優(yōu)勢(shì)和transformer在處理視覺(jué)要素和物體之間關(guān)系上的優(yōu)勢(shì)相結(jié)合,應(yīng)該是一個(gè)非常有希望的方向。

推薦閱讀
盤(pán)點(diǎn) | 2020年「21篇」醫(yī)學(xué)影像算法最佳綜述




,和
。但是(1)中每個(gè)點(diǎn)的空間變換是相同的,而(3)中不同點(diǎn)做的空間變換不同。
對(duì)每個(gè)空間變化之后的特征進(jìn)行加權(quán),
對(duì)每個(gè)通道有一個(gè)加權(quán),SENet會(huì)通過(guò)SE模塊去學(xué)每個(gè)通道的加權(quán)(論文中叫attention),BN中的
取決于上一層所有的node,而(3)中
附近的node(卷積核的size決定其范圍)。