Transformer在CV領域有可能替代CNN嗎?|卷積|神經網絡|算子|上下文...

2021-01-11 網易

  

  新智元推薦

  來源:極市平臺&知乎

  編輯:SF

  【新智元導讀】Transformer有可能替換CNN嗎?本文總結了來自於知乎問題:「如何看待Transformer在CV上的應用前景,未來有可能替代CNN嗎?」下的3個精華回答,對Transformer在CV領域的未來發展提出了有價值的觀點。

  目前已經有基於Transformer在三大圖像問題上的應用:分類(ViT),檢測(DETR)和分割(SETR),並且都取得了不錯的效果。那麼未來,Transformer有可能替換CNN嗎,Transformer會不會如同在NLP領域的應用一樣革新CV領域?後面的研究思路可能會有哪些?

  湃森:要從方法提出的動機來剖析

  回答這個問題,筆者認為可以從方法提出的動機來剖析比較合適,即為什麼我們需要它;而不是簡單的「存在即合理」,大家皆用我也用的風向標。

  Why CNN?

  首先我們應該了解為什麼CNN會在圖像領域被大規模應用,我們可以從三個主要點說起,比如基於傳統的方法,基於模式識別的方法,基於深度學習的方法。

  1. 傳統方法在視覺任務上的應用絕大多數都依賴於在某個領域具有豐富經驗的專家,去針對具體的任務設計出一組最具有代表性的數據表示來作為輸入特徵進行處理,使得特徵之間具備可區分性,典型的有SIFT。

  其次,一些特徵提取的方法也需要人為的參與,手工設計出一些特徵提取算子,比如一些經典的邊緣檢測算子,水平檢測,垂直檢測等。

  然而, 一方面需要依賴專家手動設計特徵的方式所需要的先驗知識多,模型的的性能也極其依賴於其所設計出來的數據表示 ,這樣一來不僅費時費力,而且也很難針對實際場景中複雜多變的任務去設計出一種合適的算子,不具備泛化性。

  另一方面,受制於數據採集的環境,設備等影響,比如光照,拍攝視角,遮擋,陰影,背景等等,這些因素會嚴重製約模型的性能,即手工設計的特徵並不具備魯棒性。

  2. 基於模式識別的方法大多數是一些與機器學習相關的技術,比如隨機森林,支持向量機,感知機等。

  機器學習較傳統方法的一個顯著優勢就是,可以避免人為進行純手動設計特徵 ,它能夠學習出一組從輸入的數據表示到輸出的映射這一套規則。

  比如AutoEncoder便能夠從一組輸入中學習出另一組數據的表示,雖然生成的結果基本是模糊的。儘管這些方法具有以上的優勢,但是如何學習高效的學習出一組更合適的映射規則是關鍵。

  對於高效性來說,以感知機為例, 它利用多個MLP來進行特徵的學習從而來表徵輸入數據 。但是這樣有很明顯的缺陷,一方面計算量是非常龐大的,另一方面直接將輸入flatten為一個列向量,會破壞圖像中目標原有的結構和上下文聯繫。

  在此基礎上,我們可以繼續優化它,把它推廣到更一般的表示——CNN,MLP其實是CNN的一種特例。

  3. 基於深度學習的方法在圖像識別領域最典型的應用便是CNN 。CNN是一種分層(hierarchical)的數據表示方式,高層的特徵表示依賴於底層的特徵表示,由淺入深逐步抽象地提取更具備高級語義信息的特徵。

  比如第一層更傾向於提取邊緣,角點,線條等low-level的特徵,第二層提取顏色,紋理等mid-level的特徵,第三層提取更具抽象語義的high-level的特徵。網絡的深度有助於模型提取更抽象地高級特徵,網絡的寬度有利於模型提取更豐富的特徵表示。

  這種連接主義 (connectionism)本質上是一種解決問題很好的思路,每一層都學習各自簡單的表示,但最後通過連接起來,卻形成了強大的(powerful)的特徵表徵能力!

  此外,CNN還具有一個非常重要的特性,它是通過共享卷積核來提取特徵,這樣一方面可以極大的降低參數量來避免更多冗餘的計算從而提高網絡模型計算的效率,另一方面又結合結合卷積和池化使網絡具備一定的平移不變性(shift-invariant)和平移等變性(equivariance)。

  當然,對於分類任務來說,我們是希望網絡具備平移不變性的特點,而對於分割任務來說我們則更希望其具備平移等變性,不過這些都是後話,在這裡不展開闡述。因此,這便是CNN如何學習高效的學習出一組更合適的映射規則的關鍵。

  雖然CNN具備如此多的優點,但不是一開始就一蹴而就,也並不是完美無瑕的。

  以圖像分割為例,在全卷積神經網絡FCN提出以前,大多數基於CNN的方法都是基於Patch-wise即將圖像塊作為輸入輸入到CNN中去進行相應類別預測,這種方式一來計算非常冗餘,二來也缺乏充足的上下文信息。

  所以為什麼FCN會這麼有影響力,甚至可以稱為是一個mile-stone的網絡,就在於它真正意義上將patch-wise做到了pixel-wise,這對於語義分割這種密集型任務來說是至關重要的。

  當然,FCN也存在許多的缺點,諸如分割結果粗糙等,當這並不妨礙我們基於它的思想去進行很多的拓展。

  比如最近幾年提出的很多分割論文都是針對它去進行改進,有人提倡改善編碼器利用更強大的卷積模塊去提取更具備代表性的特徵。

  有人熱衷於改善解碼器,比如引入跳躍連接操作來彌補編碼器下採樣過程中空間細節信息的丟失從而來實現更精準的定位,關於如何跳躍又是一個問題,有直接連線的Unet。

  繼而 有人又藉助語義鴻溝(semantic gap)或者背景噪聲幹擾這些口去突破 ,利用多個卷積去消除,結合高級特徵的強語義和低級特徵豐富的細節信息去指導融合的也有,另外還有藉助注意力方式去消除歧義和抑制背景噪聲的也大有人在。

  除了編解碼器之外,我們借用特徵金字塔的思想還可以結合多層的結果去融合輸出,得到一個更加細化的特徵表示。在拋掉模型本身,也可以從任務本身下手,從全監督到半監督,自監督,few-shot learning,ome-shot learning,甚至是無監督域等等也有很多方向可以突破。

  其他視覺任務如分類,檢測或者low-level的任務如超分,去噪等也可以此類比,很多人寫不來論文或者解決不了問題的關鍵點在於根本沒發現問題在哪裡,又何談解決問題。

  Why transformer?

  目前為止,我們已經簡要的總結了CNN為什麼會被提出以及它的優勢在哪。

  儘管CNN存在以上優勢,比如它利用卷積核或濾波器不斷地提取抽象地高級特徵,理論上來說其感受野應該能覆蓋到全圖, 但許多研究表明其實際感受野遠小於理論感受野,這不利於我們充分的利用上下文信息進行特徵的捕獲 ,雖然我們可以通過不斷的堆疊更深的卷積層,但這顯然會造成模型過於臃腫計算量急劇增加,違背了初衷。

  而transformer的優勢就在於利用注意力的方式來捕獲全局的上下文信息從而對目標建立起遠距離的依賴,從而提取出更強有力的特徵。

  因此,我們並不需要說一味的拋棄CNN,或許可以轉換下思路把兩者結合起來,將transformer當做是一種特徵提取器利用起來,再結合CNN的一些優勢去解決現有的問題。

  對於接下來這個方向的思考,筆者推測當過了這把trasformer的新鮮勁,即在各個任務上都利用transformer替代一遍後, 未來的工作更多的是結合這兩者 ,來實現一個更優或者說是一個更reasonable的結果,讓我們拭目以待。

  總的來說,每一種技術的提出,都會受到當時所處環境或多或少的影響,然後通過不斷地發現問題,提出問題,再到解決問題這樣一步步不停地迭代。

  從宏觀角度上來看, 一個學科技術要發展的更快更好,其中的一個很重要原因便是具備普適性。

  個人認為這一點非常重要,普適性意味著入門門檻低,這樣湧入這個圈子的人就多,形成的「泡沫」就大,資本才會為其買單,真正意義上潛心研究的專家才能更被凸顯出來,才能有更充足的經費和動力去研究,去突破現有的技術將知識的邊界不斷的拓寬,利用科技造福人類。

  當然,這裡面必定夾雜著許多魚龍混雜的人或物,但是只要宏觀方向把握得當,制度制定得比較完善,就能夠避免「泡沫」的幻滅,整體維持一個健康向上的發展。畢竟,任何事物都具備兩面性,發展是一把雙刃劍。

  唯有寄希望於巨頭公司和機構有更大的擔當,當好這個時代的領頭羊和風向標,在制度的籠子下引領著這個時代朝著健康向上的道路去發展,而不是諸如一窩蜂的跑到菜市場去搞「社區團購」之類的割韭菜活動,而是應該做到真正意義上的「科技向善」。

  齊國君:CNN和Transformer在處理視覺信息上各有優缺點

  CNN網絡在提取底層特徵和視覺結構方面有比較大的優勢。這些 底層特徵構成了在patch level 上的關鍵點、線和一些基本的圖像結構 。這些底層特徵具有明顯的幾何特性,往往關注諸如平移、旋轉等變換下的一致性或者說是共變性。

  比如,一個CNN卷積濾波器檢測得到的關鍵點、物體的邊界等構成視覺要素的基本單元在平移等空間變換下應該是同時變換(共變性)的。CNN網絡在處理這類共變性時是很自然的選擇。

  但當我們檢測得到這些基本視覺要素後, 高層的視覺語義信息往往更關注這些要素之間如何關聯在一起進而構成一個物體,以及物體與物體之間的空間位置關係如何構成一個場景 ,這些是我們更加關心的。目前來看,transformer在處理這些要素之間的關係上更自然也更有效。

  從這兩方面的角度來看,將CNN在處理底層視覺上的優勢和transformer在處理視覺要素和物體之間關係上的優勢相結合,應該是一個非常有希望的方向。

  小小將:足夠大的參數+好的訓練方法,三層神經網絡可以逼近任何一個非線性函數

  先簡單來看一下transformer在分類,檢測和分割上的應用:

  (1)分類 ViT: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

  

  把圖像分成固定大小的patchs,把patchs看成words送入transformer的encoder,中間沒有任何卷積操作,增加一個class token來預測分類類別。

  (2)檢測 DETR:End-to-End Object Detection with Transformers

  

  先用CNN提取特徵,然後把最後特徵圖的每個點看成word,這樣特徵圖就變成了a sequence words,而檢測的輸出恰好是a set objects,所以transformer正好適合這個任務。

  (3)分割 SETR:Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers

  

  用ViT作為的圖像的encoder,然後加一個CNN的decoder來完成語義圖的預測。

  當然,目前基於transformer的模型在分類,檢測和分割上的應用絕不止上面這些,但基本都是差不多的思路。

  比如ViT-FRCNN:Toward Transformer-Based Object Detection這個工作是把ViT和RCNN模型結合在一起來實現檢測的。

  

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

  

  這裡來談一下自己幾點粗鄙的認識:

  (1)CNN是通過不斷地堆積卷積層來完成對圖像從局部信息到全局信息的提取,不斷堆積的卷積層慢慢地擴大了感受野直至覆蓋整個圖像;但是transformer並不假定從局部信息開始,而且一開始就可以拿到全局信息,學習難度更大一些,但transformer學習長依賴的能力更強。

  另外從ViT的分析來看,前面的layers的「感受野」(論文裡是mean attention distance)雖然迥異但總體較小,後面的layers的「感受野「越來越大,這說明ViT也是學習到了和CNN相同的範式。

  

  (2)CNN對圖像問題有天然的inductive bias,如平移不變性等等,以及CNN的仿生學特性,這讓CNN在圖像問題上更容易;相比之下,transformer沒有這個優勢,那麼學習的難度很大,往往需要更大的數據集(ViT)或者更強的數據增強(DeiT)來達到較好的訓練效果。

  好在transformer的遷移效果更好,大的數據集上的pretrain模型可以很好地遷移到小數據集上。還有一個就是ViT所說的,transformer的scaling能力很強,那麼進一步提升參數量或許會帶來更好的效果(就像驚豔的GPT模型)。

  

  (3)目前我們還看到很大一部分工作還是把transformer和現有的CNN工作結合在一起,如ViT其實也是有Hybrid Architecture(將ResNet提出的特徵圖送入ViT)。

  而對於檢測和分割這類問題,CNN方法已經很成熟,難以一下子用transformer替換掉,目前的工作都是CNN和transformer的混合體,這其中有速度和效果的雙重考慮

  另外也要考慮到如果輸入較大解析度的圖像,transformer的計算量會很大,所以ViT的輸入並不是pixel,而是小patch,對於DETR它的transformer encoder的輸入是1/32特徵這都有計算量的考慮,不過這肯定有效果的影響,所以才有後面改進工作deform DETR。

  短期來看,CNN和transformer應該還會攜手同行 。最新的論文Rethinking Transformer-based Set Prediction for Object Detection,還是把現有的CNN檢測模型和transformer思想結合在一起實現了比DETR更好的效果(訓練收斂速度也更快):

  

  (4)這我想到了神經網絡的本質:一個複雜的非線性系統來擬合你的問題。無論是CNN,RNN或者transformer都是對問題一種擬合罷了,也沒有孰優孰劣。

  就一個受限的問題來看,可能有個高低之分,但我相信隨著數據量的增加,問題的效果可能最終取決於模型的計算量和參數,而不是模型是哪個,因為之前的工作已經證明:一個三層神經網絡可以逼近任何一個非線性函數,前提是參數足夠大,而且更重要的是你找到一個好的訓練方法。

  未來雖然很難說,但依然可期!

  【1】https://www.zhihu.com/question/437495132/answer/1656908750

  【2】https://www.zhihu.com/question/437495132/answer/1658559732

  【3】https://www.zhihu.com/question/437495132/answer/1656610825

相關焦點

  • Transformer在CV領域有可能替代CNN嗎?
    本文總結了來自於知乎問題:「如何看待Transformer在CV上的應用前景,未來有可能替代CNN嗎?」下的3個精華回答,對Transformer在CV領域的未來發展提出了有價值的觀點。 目前已經有基於Transformer在三大圖像問題上的應用:分類(ViT),檢測(DETR)和分割(SETR),並且都取得了不錯的效果。
  • Transformer靠什麼"基因",得以闖入CV界秒殺CNN?
    循環神經網絡的問題  在NLP領域中,以LSTMs和GRU為代表的循環神經網絡曾經風光無限,它們的結構內部有極其巧妙的長期狀態輸入和輸出,能夠讓模型從文本中提取豐富的上下文語義。  但是,卷積神經網絡畢竟只是關注局部信息的網絡結構,它的這種計算機制導致了它在文本信息處理上難以捕捉和存儲長距離的依賴信息。人們一方面想擴大卷積核、增加通道數來捕捉長期依賴,一方面還害怕由於擴大模型所導致的維度災難。
  • 熱門的模型跨界,Transformer、GPT做CV任務一文大盤點
    模型將其展平並在將其傳遞到 transformer 編碼器之前進行位置編碼補充。然後,transformer 解碼器將少量固定數量的學得位置嵌入作為輸入,稱為對象查詢,並另外參與編碼器的輸出。將解碼器的每個輸出嵌入傳遞到預測檢測(類和邊界框)或無對象類的共享前饋網絡(FFN)。
  • 人工智慧之卷積神經網絡(CNN)
    ^_^本文引用地址:http://www.eepw.com.cn/article/201806/381807.htm  20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用於局部敏感和方向選擇的神經元時發現其獨特的網絡結構可以有效地降低反饋神經網絡的複雜性,繼而提出了卷積神經網絡CNN(Convolutional Neural Networks)。
  • Transformer靠什麼"基因",得以闖入CV界秒殺CNN?
    在詳細介紹Transformers之前,我們先來梳理一下NLP領域在Transformers技術誕生之前所面臨的問題,尤其是在挖掘數據之間的長期依賴性時所面臨的問題。在NLP領域中,以LSTMs和GRU為代表的循環神經網絡曾經風光無限,它們的結構內部有極其巧妙的長期狀態輸入和輸出,能夠讓模型從文本中提取豐富的上下文語義。
  • NLP/CV模型跨界,視覺Transformer趕超CNN?
    機器之心報導機器之心編輯部在計算機視覺領域中,卷積神經網絡(CNN)一直佔據主流地位。Transformer 架構早已在自然語言處理任務中得到廣泛應用,但在計算機視覺領域中仍然受到限制。在計算機視覺領域,注意力要麼與卷積網絡結合使用,要麼用來代替卷積網絡的某些組件,同時保持其整體架構不變。
  • nlp領域發生了新的技術突破,用attention機制研究nlp領域
    近期,nlp領域發生了一系列的技術突破。包括:attention機制,cnn,adaptive attention network(an),兩層cnn相比較,an表現優於一層的cn。今天我們將從這兩種attention機制開始研究nlp領域突破性技術!
  • PyTorch可視化理解卷積神經網絡
    如今,機器已經能夠在理解、識別圖像中的特徵和對象等領域實現99%級別的準確率。生活中,我們每天都會運用到這一點,比如,智慧型手機拍照的時候能夠識別臉部、在類似於谷歌搜圖中搜索特定照片、從條形碼掃描文本或掃描書籍等。造就機器能夠獲得在這些視覺方面取得優異性能可能是源於一種特定類型的神經網絡——卷積神經網絡(CNN)。
  • 自注意力可以替代CNN,能表達任何卷積濾波層
    那麼,問題來了:自注意力能替代CNN嗎?為了研究這個問題,需要先來回顧一下它們分別是如何處理一張圖像。給定一張圖像,其大小為W x H x D。卷積層卷積神經網絡由多個卷積層和子採樣層組成。每個卷積層可以學習大小為K x K的卷積濾波器,輸入和輸出的維度分別是Din和Dout。
  • 從圖(Graph)到圖卷積(Graph Convolution):漫談圖神經網絡 (二)
    在從圖(Graph)到圖卷積(Graph Convolution): 漫談圖神經網絡 (一)中,我們簡單介紹了基於循環圖神經網絡的兩種重要模型,在本篇中,我們將著大量筆墨介紹圖卷積神經網絡中的卷積操作。接下來,我們將首先介紹一下圖卷積神經網絡的大概框架,藉此說明它與基於循環的圖神經網絡的區別。
  • 看了這篇文章,了解深度卷積神經網絡在目標檢測中的進展
    深度卷積神經網絡(DCNN)在圖像分類和識別上取得了很顯著的提高。1.4 ION: Inside-Outside Net[4]ION 也是基於 Region Proposal 的,在得到候選區域的基礎上,為了進一步提高在每一個候選感興趣區域 ROI 的預測精度,ION 考慮了結合 ROI 內部的信息和 ROI 以外的信息,有兩個創新點:一是使用空間遞歸神經網絡
  • 把CNN裡乘法全部去掉會怎樣?華為提出移動端部署神經網絡新方法
    最近,我們又看到華為的另一篇論文,這一次沒有用加法替代乘法,而是用「按位移位」和「按位取反」來取代乘法運算。深度學習模型,尤其是深度卷積神經網絡(DCNN),在多個計算機視覺應用中獲得很高的準確率。但是,在移動環境中部署時,高昂的計算成本和巨大的耗電量成為主要瓶頸。而大量使用乘法的卷積層和全連接層正是計算成本的主要貢獻者。
  • 把CNN裡的乘法全部去掉會怎樣?華為提出移動端部署神經網絡新方法
    深度學習模型,尤其是深度卷積神經網絡(DCNN),在多個計算機視覺應用中獲得很高的準確率。但是,在移動環境中部署時,高昂的計算成本和巨大的耗電量成為主要瓶頸。
  • 理解神經網絡:從神經元到RNN、CNN、深度學習
    卷積神經網絡(CNN)卷積神經網絡(CNN)是神經網絡的一種,在計算機視覺領域應用非常廣泛。它的名字來源於組成其隱藏層的種類。CNN的隱藏層通常包含卷積層,池化層,全連接層,以及歸一化層。這些層的名字簡潔的表明了,使用了卷積和池化函數等作為激活函數,而不是使用之前定義的普通激活函數。
  • 要想了解卷積神經網絡,首先需要了解三種基本架構
    卷積網絡是研究關於圖像(紋理,圖像尺度等)的抽象層面的一種網絡,跟傳統網絡不同的是,它不僅可以根據一個固定尺寸圖像生成物體識別數據,還可以對圖像其他部分進行其他操作。卷積可以有多個,它的作用是「放大」和「增強」圖像的抽象空間。那麼卷積可以用於哪些場景呢?
  • 環信人工智慧專家李理:詳解卷積神經網絡
    接下來介紹一種非常重要的神經網絡——卷積神經網絡。這種神經網絡在計算機視覺領域取得了重大的成功,而且在自然語言處理等其它領域也有很好的應用。深度學習受到大家的關注很大一個原因就是Alex等人實現的AlexNet(一種深度卷積神經網絡)在LSVRC-2010 ImageNet這個比賽中取得了非常好的成績。此後,卷積神經網絡及其變種被廣泛應用於各種圖像相關任務。 這裡主要參考了Neural Networks and Deep Learning和cs231n的課程來介紹CNN,兩部分都會有理論和代碼。
  • 談一談逆勢而上的圖神經網絡
    隱空間attribute-structure對齊來解決論文快訊 | NeurIPS20:有向圖卷積網絡Digraph Inception Convolutional Networks拉普拉斯矩陣與拉普拉斯算子的關係 (乾貨預警,需慢讀細品)論文快訊 | TMM20-半監督學習的各向異性圖卷積網絡最新《圖神經網絡推薦系統》2020綜述論文,27頁
  • 深度學習技術和卷積神經網絡(CNN)讓機器視覺識別更智能
    隨著人工智慧技術的進步,深度學習技術(DL)和卷積神經網絡技術(CNN)領域的人工智慧(AI)被引入到機器視覺圖像處理系統的應用中來,從而幫助機器學習和機器檢測缺陷更加高效,使機器視覺識別的過程更加精確。也讓使用這些技術的企業可以從智能化中獲得更高的生產經營效益。
  • AI入門:卷積神經網絡
    講到AI不得不講深度學習,而講到深度學習,又不能不講卷積神經網絡。如果把深度學習比作中國的網際網路界,那捲積神經網絡和循環神經網絡就是騰訊和阿里級別的地位。今天我們主要討論的卷積神經網絡,到底卷積神經網絡能解決什麼問題,它的結構是怎樣的?是怎麼學習的?應用在哪些具體的產品上?本文將為大家一一解答。
  • 了解CNN這一篇就夠了:卷積神經網絡技術及發展
    在不同類型的神經網絡當中,卷積神經網絡是得到最深入研究的。早期由於缺乏訓練數據和計算能力,要在不產生過擬合的情況下訓練高性能卷積神經網絡是很困難的。標記數據和近來GPU的發展,使得卷積神經網絡研究湧現並取得一流結果。本文中,我們將縱覽卷積神經網絡近來發展,同時介紹卷積神經網絡在視覺識別方面的一些應用。