如何看待Transformer在CV上的應(yīng)用前景,未來有可能替代CNN嗎?
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
編輯:Amusi ?|? 來源:知乎
https://www.zhihu.com/question/437495132
本文僅作為學(xué)術(shù)分享,如果侵權(quán),會刪文處理
轉(zhuǎn)自?|?CVer
如何看待Transformer在CV上的應(yīng)用前景,未來有可能替代CNN嗎?
目前已經(jīng)有基于Transformer在三大圖像問題上的應(yīng)用:分類(ViT),檢測(DETR)和分割(SETR),并且都取得了不錯的效果。
那么未來,Transformer有可能替換CNN嗎,Transformer會不會如同在NLP領(lǐng)域的應(yīng)用一樣革新CV領(lǐng)域?后面的研究思路可能會有哪些呢?
作者:小小將
https://www.zhihu.com/question/437495132/answer/1656610825
先簡單來看一下transformer在分類,檢測和分割上的應(yīng)用:
(1)分類 ViT: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

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

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

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

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

這里來談一下自己幾點粗鄙的認(rèn)識:
(1)CNN是通過不斷地堆積卷積層來完成對圖像從局部信息到全局信息的提取,不斷堆積的卷積層慢慢地擴大了感受野直至覆蓋整個圖像;但是transformer并不假定從局部信息開始,而且一開始就可以拿到全局信息,學(xué)習(xí)難度更大一些,但transformer學(xué)習(xí)長依賴的能力更強,另外從ViT的分析來看,前面的layers的“感受野”(論文里是mean attention distance)雖然迥異但總體較小,后面的layers的“感受野“越來越大,這說明ViT也是學(xué)習(xí)到了和CNN相同的范式。

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

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

(4)這我想到了神經(jīng)網(wǎng)絡(luò)的本質(zhì):一個復(fù)雜的非線性系統(tǒng)來擬合你的問題。無論是CNN,RNN或者transformer都是對問題一種擬合罷了,也沒有孰優(yōu)孰劣。就一個受限的問題來看,可能有個高低之分,但我相信隨著數(shù)據(jù)量的增加,問題的效果可能最終取決于模型的計算量和參數(shù),而不是模型是哪個,因為之前的工作已經(jīng)證明:一個三層神經(jīng)網(wǎng)絡(luò)可以逼近任何一個非線性函數(shù),前提是參數(shù)足夠大,而且更重要的是你找到一個好的訓(xùn)練方法。
未來雖然很難說,但依然可期!
作者:湃森
https://www.zhihu.com/question/437495132/answer/1656908750
回答這個問題,筆者認(rèn)為可以從方法提出的動機來剖析比較合適,即為什么我們需要它;而不是簡單的“存在即合理”,大家皆用我也用的風(fēng)向標(biāo)。
1. Why CNN?
首先我們應(yīng)該了解為什么CNN會在圖像領(lǐng)域被大規(guī)模應(yīng)用,我們可以從三個主要點說起,比如基于傳統(tǒng)的方法,基于模式識別的方法,基于深度學(xué)習(xí)的方法。
傳統(tǒng)方法在視覺任務(wù)上的應(yīng)用絕大多數(shù)都依賴于在某個領(lǐng)域具有豐富經(jīng)驗的專家,去針對具體的任務(wù)設(shè)計出一組最具有代表性的數(shù)據(jù)表示來作為輸入特征進(jìn)行處理,使得特征之間具備可區(qū)分性,典型的有SIFT。其次,一些特征提取的方法也需要人為的參與,手工設(shè)計出一些特征提取算子,比如一些經(jīng)典的邊緣檢測算子,水平檢測,垂直檢測等。然而,一方面需要依賴專家手動設(shè)計特征的方式所需要的先驗知識多,模型的的性能也極其依賴于其所設(shè)計出來的數(shù)據(jù)表示,這樣一來不僅費時費力,而且也很難針對實際場景中復(fù)雜多變的任務(wù)去設(shè)計出一種合適的算子,不具備泛化性。另一方面,受制于數(shù)據(jù)采集的環(huán)境,設(shè)備等影響,比如光照,拍攝視角,遮擋,陰影,背景等等,這些因素會嚴(yán)重制約模型的性能,即手工設(shè)計的特征并不具備魯棒性。
基于模式識別的方法大多數(shù)是一些與機器學(xué)習(xí)相關(guān)的技術(shù),比如隨機森林,支持向量機,感知機等。機器學(xué)習(xí)較傳統(tǒng)方法的一個顯著優(yōu)勢就是,可以避免人為進(jìn)行純手動設(shè)計特征,它能夠?qū)W習(xí)出一組從輸入的數(shù)據(jù)表示到輸出的映射這一套規(guī)則。比如AutoEncoder便能夠從一組輸入中學(xué)習(xí)出另一組數(shù)據(jù)的表示,雖然生成的結(jié)果基本是模糊的。盡管這些方法具有以上的優(yōu)勢,但是如何學(xué)習(xí)高效的學(xué)習(xí)出一組更合適的映射規(guī)則是關(guān)鍵。對于高效性來說,以感知機為例,它利用多個MLP來進(jìn)行特征的學(xué)習(xí)從而來表征輸入數(shù)據(jù)。但是這樣有很明顯的缺陷,一方面計算量是非常龐大的,另一方面直接將輸入flatten為一個列向量,會破壞圖像中目標(biāo)原有的結(jié)構(gòu)和上下文聯(lián)系。在此基礎(chǔ)上,我們可以繼續(xù)優(yōu)化它,把它推廣到更一般的表示——CNN,MLP其實是CNN的一種特例。
基于深度學(xué)習(xí)的方法在圖像識別領(lǐng)域最典型的應(yīng)用便是CNN。CNN是一種分層(hierarchical)的數(shù)據(jù)表示方式,高層的特征表示依賴于底層的特征表示,由淺入深逐步抽象地提取更具備高級語義信息的特征。比如第一層更傾向于提取邊緣,角點,線條等low-level的特征,第二層提取顏色,紋理等mid-level的特征,第三層提取更具抽象語義的high-level的特征。網(wǎng)絡(luò)的深度有助于模型提取更抽象地高級特征,網(wǎng)絡(luò)的寬度有利于模型提取更豐富的特征表示。這種連接主義 (connectionism)本質(zhì)上是一種解決問題很好的思路,每一層都學(xué)習(xí)各自簡單的表示,但最后通過連接起來,卻形成了強大的(powerful)的特征表征能力!此外,CNN還具有一個非常重要的特性,它是通過共享卷積核來提取特征,這樣一方面可以極大的降低參數(shù)量來避免更多冗余的計算從而提高網(wǎng)絡(luò)模型計算的效率,另一方面又結(jié)合結(jié)合卷積和池化使網(wǎng)絡(luò)具備一定的平移不變性(shift-invariant)和平移等變性(equivariance)。當(dāng)然,對于分類任務(wù)來說,我們是希望網(wǎng)絡(luò)具備平移不變性的特點,而對于分割任務(wù)來說我們則更希望其具備平移等變性,不過這些都是后話,在這里不展開闡述。因此,這便是CNN如何學(xué)習(xí)高效的學(xué)習(xí)出一組更合適的映射規(guī)則的關(guān)鍵。
雖然CNN具備如此多的優(yōu)點,但不是一開始就一蹴而就,也并不是完美無瑕的。以圖像分割為例,在全卷積神經(jīng)網(wǎng)絡(luò)FCN提出以前,大多數(shù)基于CNN的方法都是基于Patch-wise即將圖像塊作為輸入輸入到CNN中去進(jìn)行相應(yīng)類別預(yù)測,這種方式一來計算非常冗余,二來也缺乏充足的上下文信息。所以為什么FCN會這么有影響力,甚至可以稱為是一個mile-stone的網(wǎng)絡(luò),就在于它真正意義上將patch-wise做到了pixel-wise,這對于語義分割這種密集型任務(wù)來說是至關(guān)重要的。當(dāng)然,F(xiàn)CN也存在許多的缺點,諸如分割結(jié)果粗糙等,當(dāng)這并不妨礙我們基于它的思想去進(jìn)行很多的拓展。比如最近幾年提出的很多分割論文都是針對它去進(jìn)行改進(jìn),有人提倡改善編碼器利用更強大的卷積模塊去提取更具備代表性的特征,有人熱衷于改善解碼器,比如引入跳躍連接操作來彌補編碼器下采樣過程中空間細(xì)節(jié)信息的丟失從而來實現(xiàn)更精準(zhǔn)的定位,關(guān)于如何跳躍又是一個問題,有直接連線的Unet,繼而有人又借助語義鴻溝(semantic gap)或者背景噪聲干擾這些口去突破,利用多個卷積去消除,結(jié)合高級特征的強語義和低級特征豐富的細(xì)節(jié)信息去指導(dǎo)融合的也有,另外還有借助注意力方式去消除歧義和抑制背景噪聲的也大有人在。除了編解碼器之外,我們借用特征金字塔的思想還可以結(jié)合多層的結(jié)果去融合輸出,得到一個更加細(xì)化的特征表示。在拋掉模型本身,也可以從任務(wù)本身下手,從全監(jiān)督到半監(jiān)督,自監(jiān)督,few-shot learning,ome-shot learning,甚至是無監(jiān)督域等等也有很多方向可以突破。其他視覺任務(wù)如分類,檢測或者low-level的任務(wù)如超分,去噪等也可以此類比,很多人寫不來論文或者解決不了問題的關(guān)鍵點在于根本沒發(fā)現(xiàn)問題在哪里,又何談解決問題。
2. Why transformer?
目前為止,我們已經(jīng)簡要的總結(jié)了CNN為什么會被提出以及它的優(yōu)勢在哪。盡管CNN存在以上優(yōu)勢,比如它利用卷積核或濾波器不斷地提取抽象地高級特征,理論上來說其感受野應(yīng)該能覆蓋到全圖,但許多研究表明其實際感受野遠(yuǎn)小于理論感受野,這不利于我們充分的利用上下文信息進(jìn)行特征的捕獲,雖然我們可以通過不斷的堆疊更深的卷積層,但這顯然會造成模型過于臃腫計算量急劇增加,違背了初衷。而transformer的優(yōu)勢就在于利用注意力的方式來捕獲全局的上下文信息從而對目標(biāo)建立起遠(yuǎn)距離的依賴,從而提取出更強有力的特征。因此,我們并不需要說一味的拋棄CNN,或許可以轉(zhuǎn)換下思路把兩者結(jié)合起來,將transformer當(dāng)做是一種特征提取器利用起來,再結(jié)合CNN的一些優(yōu)勢去解決現(xiàn)有的問題。對于接下來這個方向的思考,筆者推測當(dāng)過了這把trasformer的新鮮勁,即在各個任務(wù)上都利用transformer替代一遍后,未來的工作更多的是結(jié)合這兩者,來實現(xiàn)一個更優(yōu)或者說是一個更reasonable的結(jié)果,讓我們拭目以待。
總的來說,每一種技術(shù)的提出,都會受到當(dāng)時所處環(huán)境或多或少的影響,然后通過不斷地發(fā)現(xiàn)問題,提出問題,再到解決問題這樣一步步不停地迭代。從宏觀角度上來看,一個學(xué)科技術(shù)要發(fā)展的更快更好,其中的一個很重要原因便是具備普適性。個人認(rèn)為這一點非常重要,普適性意味著入門門檻低,這樣涌入這個圈子的人就多,形成的“泡沫”就大,資本才會為其買單,真正意義上潛心研究的專家才能更被凸顯出來,才能有更充足的經(jīng)費和動力去研究,去突破現(xiàn)有的技術(shù)將知識的邊界不斷的拓寬,利用科技造福人類。當(dāng)然,這里面必定夾雜著許多魚龍混雜的人或物,但是只要宏觀方向把握得當(dāng),制度制定得比較完善,就能夠避免“泡沫”的幻滅,整體維持一個健康向上的發(fā)展。畢竟,任何事物都具備兩面性,發(fā)展是一把雙刃劍。唯有寄希望于巨頭公司和機構(gòu)有更大的擔(dān)當(dāng),當(dāng)好這個時代的領(lǐng)頭羊和風(fēng)向標(biāo),在制度的籠子下引領(lǐng)著這個時代朝著健康向上的道路去發(fā)展,而不是諸如一窩蜂的跑到菜市場去搞“社區(qū)團(tuán)購”之類的割韭菜活動,而是應(yīng)該做到真正意義上的“科技向善”。
作者:齊國君
https://www.zhihu.com/question/437495132/answer/1658559732
CNN和transformer在處理視覺信息上各有優(yōu)缺點。
CNN網(wǎng)絡(luò)在提取底層特征和視覺結(jié)構(gòu)方面有比較大的優(yōu)勢。這些底層特征構(gòu)成了在patch level 上的關(guān)鍵點、線和一些基本的結(jié)構(gòu)。這些底層特征往往關(guān)注諸如平移、旋轉(zhuǎn)等變換下的一致性或者說是共變性。比如,一個CNN卷積濾波器檢測得到的關(guān)鍵點、物體的邊界等構(gòu)成視覺要素的基本單元在平移等空間變換下應(yīng)該是共邊的。CNN網(wǎng)絡(luò)在處理這些共變性下是很自然的。
但當(dāng)我們檢測得到這些基本視覺要素后,高層的視覺語義信息往往和這些要素之間如何關(guān)聯(lián)在一起進(jìn)而構(gòu)成一個物體,以及物體與物體之間的空間位置關(guān)系如何構(gòu)成一個場景,這些是我們更加關(guān)心的。目前來看,transformer在處理這些要素之間的關(guān)系上更自然也更有效。
從這兩方面的角度來看,將CNN在處理底層視覺上的優(yōu)勢和transformer在處理視覺要素和物體之間關(guān)系上的優(yōu)勢相結(jié)合,應(yīng)該是一個非常有希望的方向。
作者:kai.han
https://www.zhihu.com/question/437495132/answer/1658543332
關(guān)于Transformer在CV上的應(yīng)用,我們最近剛好整理了一份綜述(A Survey on Visual Transformer),方便大家追蹤最新進(jìn)展(不定期更新):
華為和北大等提出視覺Transformer:全面調(diào)研
在這份綜述的最后,我們初步思考并給出了未來3個研究方向:
1、現(xiàn)有的Visual Transformer都還是將NLP中Transformer的結(jié)構(gòu)套到視覺任務(wù)做了一些初步探索,未來針對CV的特性設(shè)計更適配視覺特性的Transformer將會帶來更好的性能提升。
2、現(xiàn)有的Visual Transformer一般是一個模型做單個任務(wù),近來有一些模型可以單模型做多任務(wù),比如IPT,未來是否可以有一個世界模型,處理所有任務(wù)?
3、現(xiàn)有的Visual Transformer參數(shù)量和計算量多大,比如ViT需要18B FLOPs在ImageNet達(dá)到78%左右Top1,但是CNN模型如GhostNet只需600M FLOPs可以達(dá)到79%以上Top1,所以高效Transformer for CV亟需開發(fā)以媲美CNN。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

