深度卷積神經網路架構:從基本元件到結構創新

重磅乾貨,第一時間送達

本文轉自:人工智慧與演算法學習

https://arxiv。org/pdf/1901。06032。pdf

摘要

1、

引言

2、

CNN基本元件

2。1 卷積層

2。2 池化層

2。3 啟用函式

2。4 批次歸一化

2。5 Dropout

2。6 全連線層

3、

深度CNN結構演化史

3。1 1980年代末至1999年:CNN的起源

3。2 2000年初:CNN停滯不前

3。3 2006-2011年:CNN的復興

3。4 2012-2014年:CNN的崛起

3。5 2015年至今:CNN的結構創新和應用迅速增長

4、

CNN中的結構創新

4。1 基於空間利用的CNN

4。2 基於深度的CNN

4。3 基於多路徑的CNN

4。4 基於寬度的多連線CNNs

4。5 基於特徵圖(Channel FMap)利用的CNN

4。6 基於通道(輸入)利用的CNNs

4。7 基於注意力的CNNs

5、

CNN應用

5。1 自然語言處理

5。2 計算機視覺相關應用

5。3 物體檢測

5。4 影象分類

5。5 語音識別

6、

CNN面臨的挑

7、

未來方向

8、

結論

致謝

摘要

深度卷積神經網路(CNN)是一種特殊型別的神經網路,在各種競賽基準上表現出了當前最優結果。深度 CNN 的超強學習能力主要是透過使用多個非線性特徵提取階段實現的,這些階段能夠從資料中自動學習分層表徵。大量可用的資料和硬體處理單元的改進加速了 CNN 的研究,最近也報道了非常有趣的深度 CNN 架構。近來,深度 CNN 架構研究比賽表明,創新的架構理念以及引數最佳化可以提高 CNN 在各種視覺相關任務上的效能。鑑於此,關於 CNN 設計的不同想法被提出,如使用不同的啟用函式和損失函式、引數最佳化、正則化以及處理單元的重構。然而,在表徵能力方面的主要改進是透過重構處理單元來實現的。尤其是,使用塊而不是層作為結構單元的想法獲得了極大關注。因此,本綜述著重於最近報道的深度CNN架構中存在的內在分類法,將CNN架構中的最新創新分為七個不同類別。這七個類別分別基於空間利用、深度、多路徑、寬度、特徵圖利用、通道提升和注意力。此外,本文還涵蓋了對 CNN 組成部分的基本理解,並揭示了 CNN 目前面臨的挑戰及其應用。

關鍵詞:深度學習,卷積神經網路,結構,表徵能力,殘差學習,CNN通道提升

1、引言

機器學習(ML)演算法屬於人工智慧(AI)的一個特殊領域,該領域無需明確程式設計,透過學習資料之間的潛在關係並做出決策,從而將智慧賦予計算機。自1990年代末以來,已經開發出了不同的ML演算法來模擬人類的感官反應,如言語和視覺等,但是它們通常無法達到人類水準的滿意度[1]-[6]。機器視覺(MV)任務具有挑戰性促使產生了一類特殊的神經網路(NN),即卷積神經網路(CNN)[7]。

CNN被認為是學習影象內容的最佳技術之一,並且在影象識別、分割、檢測和檢索相關任務方面顯示了最佳的成果[8],[9]。CNN的成功所引起的關注已超出學術界。在行業中,諸如Google,Microsoft,AT&T,NEC和Facebook之類的公司已經建立了活躍的研究小組,以探索CNN的新架構[10]。目前,大多數影象處理競賽的領跑者都採用基於深度CNN的模型。

CNN拓撲分為多個學習階段,由卷積層、非線性處理單元和下采樣層的組合組成[11]。每層使用一組卷積核(過濾器)[12]執行多次轉換。卷積運算透過將影象分成小片(類似於人眼的視網膜)來提取區域性相關的特徵,從而使其能夠學習合適的特徵。卷積核的輸出被分配給非線性處理單元,這不僅有助於學習抽象表示,而且還將非線性嵌入到特徵空間中。這種非線性為不同的響應生成了不同的啟用模式,因此有助於學習影象中的語義差異。非線性函式的輸出通常經過下采樣,這有助於總結結果,並使輸入對於幾何變形不變[12],[13]。

CNN的結構設計靈感來自Hubel和Wiesel的工作,因此在很大程度上遵循了靈長類動物視覺皮層的基本結構[14],[15]。CNN最早在1989年透過LeCuN的工作而備受關注,該技術用於處理網格狀拓撲資料(影象和時間序列資料)[7],[16]。CNN的普及很大程度上是由於其分層特徵提取能力。CNN的分層組織模擬人腦中新皮質深層和分層學習過程,該過程會自動從基礎資料中提取特徵[17]。CNN的學習過程分期與靈長類動物的視覺皮層腹側通路(V1-V2-V4-IT/VTC)非常相似[18]。靈長類動物的視覺皮層首先從視網膜位區域接收輸入,在該區域透過外側膝狀核執行多尺度高通濾波和對比度歸一化。此後,透過分類為V1,V2,V3和V4的視覺皮層的不同區域執行檢測。實際上,視覺皮層的V1和V2部分類似於卷積層和下采樣層,而顳下區類似於CNN的較高層,這可以推斷影象[19]。在訓練期間,CNN透過反向傳播演算法根據輸入調整權重變化來學習。CNN使用反向傳播演算法最小化損失函式類似於基於響應的人腦學習。CNN具有提取低、中和高層特徵的能力。高階特徵(更抽象特徵)是低階和中級特徵的組合。藉助自動特徵提取功能,CNN減少了合成單獨的特徵提取器的需要[20]。因此,CNN可以透過少量處理從原始畫素中學習良好的內部表示。

人們發現,透過增加CNN的深度可以增強CNN的表達能力,隨後到來的是使用CNN進行影象分類和分割的熱潮[21]。當處理複雜的學習問題時,深層架構比淺層架構具有優勢。以分層的方式堆疊多個線性和非線性處理單元,可為深度網路提供學習不同抽象級別上覆雜表示的能力。此外,硬體的進步及其帶來的高計算資源也是深度CNN近期成功的主要原因之一。較深的CNN架構顯示出比基於淺層和傳統視覺模型效能的顯著進步。除了在監督學習中使用外,深層CNN還有從大量未標記的資料中學習有用表示的潛力。CNN使用多個對映功能使它能夠改進不變表示的提取,因此使其能夠處理數百個類別的識別任務。最近,研究表明,可以利用轉移學習(TL)的概念將不同層特徵(包括低階和高階)轉移到通用識別任務中[22]–[24]。CNN的重要屬性是分層學習,自動特徵提取,多工處理和權重共享[25]–[27]。

CNN學習策略和結構經過了多種改進,以使CNN可擴充套件到大而複雜的問題。這些創新可以歸類為引數最佳化,正則化,結構重構等。但是,據觀察,在AlexNet在ImageNet資料集上獲得優異效能之後,基於CNN的程式變得更為流行[21]。因此,CNN的重大創新主要在2012年以來提出,主要包括處理單元的重組和新區塊的設計。類似地,Zeiler和Fergus[28]引入了特徵的逐層視覺化的概念,這將趨勢轉向了在諸如VGG[29]的深層結構中以低空間解析度提取特徵的趨勢。如今,大多數新架構都是基於VGG引入的簡單同質拓撲原理構建的。另一方面,Google小組提出了一個有趣的想法,即分割、變換和合並,並且相應的塊稱為inception塊。inception塊首次給出了在層內進行分支的概念,該概念允許在不同的空間尺度上提取特徵[30]。2015年,ResNet[31]引入的用於深層CNN訓練的跳躍連線概念廣為人知,隨後,此概念被大多數後續的Nets使用,例如Inception-ResNet,WideResNet,ResNext等[32]–[34]。

為了提高CNN的學習能力,不同的結構設計,例如WideResNet,Pyramidal Net,Xception等,從附加基數和增加寬度的角度探討了多尺度轉換的效果[32],34],[35]。因此,研究重點從引數最佳化和連線重新調整轉向改進網路的架構設計(層結構)。這種轉變帶來了許多新的體系結構思想,例如通道提升,空間和通道智慧開發以及基於注意力的資訊處理等[36]–[38]。

在過去的幾年中,研究人員對深層CNN進行了各種有趣的研究,詳細闡述了CNN的基本組成部分及其替代方案。[39]的綜述回顧了2012-2015年的著名架構及其組成部分。同樣,在文獻中,有一些著名的綜述討論了CNN的不同演算法,並專注於CNN的應用[20],[26],[27],[40],[41]。同樣,[42]中的綜述討論了基於加速技術的CNN分類。另一方面,在本綜述中,我們討論了近期和著名的CNN體系結構的內在分類。本綜述中討論的各種CNN架構可以大致分為以下七個主要類別:空間利用,深度,多路徑,寬度,特徵圖利用,通道提升和基於注意的CNN。本文的其餘部分按以下順序組織(如圖1所示):第1節總結了CNN的基礎知識,其與靈長類動物的視覺皮層的相似性以及對機器視覺的貢獻。第2節概述了基本CNN元件,第3節討論了深度CNN的體系結構演變。第4節討論了CNN結構的最新創新,並將CNN分為七個大類。第5節和第6節闡明瞭CNN的應用和當前的挑戰,而第7節討論了未來的工作,最後一節得出了結論。

深度卷積神經網路架構:從基本元件到結構創新

圖1 本綜述結構

如今,CNN被認為是使用最廣泛的ML技術,尤其是在視覺相關應用中。CNN最近在各種ML應用中顯示了最佳的結果。ML系統的典型框圖如圖2所示。由於CNN既具有良好的特徵提取能力,又具有較強的辨別能力,因此在ML系統中,它主要用於特徵提取和分類。

2、CNN基本元件

典型的CNN體系結構通常包括卷積和池化層的交替,最後是一個或多個全連線層。在某些情況下,全連線層替換為全域性平均池化層。除了學習的各個階段外,還結合了不同的正則化單元,例如批次歸一化和dropout,以最佳化CNN效能[43]。CNN元件的排列在設計新體系結構和獲得增強效能方面起著基本作用。本節簡要討論了這些元件在CNN體系結構中的作用。

2。1 卷積層

卷積層由一組卷積核(每個神經元充當核)組成。這些核與影象的一小部分割槽域相關,稱為感受野。它透過將影象劃分成小塊(感受野)並將其與一組特定的權重(濾波器的元素與相應的感受野元素相乘)進行卷積來工作[43]。卷積運算可以表示如下:

其中,輸入影象用I_(x,y)表示,x,y表示具體位置,K_lk表示第k層的第l個卷積核。將影象分成小塊有助於提取區域性相關的畫素值。這種區域性彙總的資訊也稱為特徵圖。透過使用相同的權重卷積核在整個影象上滑動來提取影象中的不同特徵集。與全連線網路相比,卷積運算的這種權重共享功能使CNN引數更有效。根據濾波器的型別和大小,填充的型別以及卷積的方向,可以進一步將卷積操作分為不同的型別[44]。另外,如果核是對稱的,則卷積運算將變為相關運算[16]。

2。2 池化層

作為卷積運算輸出而產生的特徵圖可能出現在影象的不同位置。一旦提取特徵後,只要保留相對於其他特徵的近似位置,其精確位置就不再重要。像卷積一樣進行池化或下采樣是一個有趣的區域性操作。它彙總了感受野附近的相似資訊,並在該區域性區域內輸出主要響應[45]。

公式(2)表示池化操作,其中Z_l表示第l個輸出特徵圖,F_(x,y)^l表示第l個輸入特徵圖,而f_p (。)定義了池化操作的型別。合併操作的使用有助於提取特徵的組合,這些特徵對於平移和輕微變形是不變的[13],[46]。將特徵圖的大小減小到不變的特徵集不僅可以調節網路的複雜性,而且可以透過減少過度擬合來幫助提高通用性。CNN中使用了不同型別的池化公式,例如最大值,平均值,L2,重疊,空間金字塔合併等[47]-[49]。

2。3 啟用函式

啟用功能起決策功能,有助於學習複雜的模式。選擇適當的啟用功能可以加快學習過程。等式(3)定義了卷積特徵圖的啟用函式。

在上式中,F_l^k是卷積運算的輸出,分配給啟用函式;f_A (。)會新增非線性並返回第k層的轉換輸出T_l^k。在文獻中,不同的啟用函式,例如sigmoid,tanh,maxout,ReLU和ReLU的變體,例如leaky ReLU,ELU和PReLU[39],[48],[50],[51]用於引入特徵的非線性組合。然而,ReLU及其變體優於其他啟用函式,因為它有助於克服梯度消失問題[52],[53]。

深度卷積神經網路架構:從基本元件到結構創新

2。4 批次歸一化

批次歸一化用於解決與特徵圖中內部協方差平移有關的問題。內部協方差偏移量隨隱藏單位值分佈變化,這會降低收斂速度(透過將學習率強制為小值),並對引數初始化要求高。等式(4)中示出了對變換後的特徵圖T_l^k的批次歸一化。

在等式(4)中,N_lk表示歸一化特徵圖,F_lk是輸入特徵圖,μ_B和σ_B2分別表示小批次特徵圖的均值和方差。批次歸一化透過將特徵圖值設為零均值和單位方差來統一其分佈[54]。此外,它可以平滑梯度流並充當調節因素,從而有助於改善網路的泛化。

2。5 Dropout

Dropout引入了網路內的正則化,最終透過以一定機率隨機跳過某些單元或連線來最終提高泛化性。在神經網路中,有時學習某個非線性關係的多個連線會相互適應,這會導致過擬合[55]。某些連線或單元的這種隨機丟棄會產生幾種稀疏的網路體系結構,最後選擇一個權重較小的代表性網路。然後,將這種選擇的架構視為所有提議網路的近似[56]。

2。6 全連線層

全連線層通常在網路末端用於分類任務。與池化和卷積不同,它是全域性操作。它從前一層獲取輸入,並全域性分析所有前一層的輸出[57]。這將選定特徵進行非線性組合,用於資料分類 [58]。

深度卷積神經網路架構:從基本元件到結構創新

圖3 深度CNN演化史

3、深度CNN結構演化史

如今,CNN被認為是受到生物學啟發的AI技術中使用最廣泛的演算法。CNN的歷史始於Hubel和Wiesel(1959,1962)進行的神經生物學實驗[14],[59]。他們的工作為許多認知模型提供了平臺,後來幾乎所有這些模型都被CNN取代。幾十年來,人們為提高CNN的效能做出了不同的努力。圖3中用圖形表示了這一歷史。這些改進可以分為五個不同的時代,下面將進行討論。

3。1 1980年代末至1999年:CNN的起源

自1980年代後期以來,CNN已應用於視覺任務。1989年,LeCuN等人提出了第一個名為ConvNet的多層CNN,其起源於福島的Neocognitron[60],[61]。LeCuN提出了ConvNet的監督訓練,與它的前身Neocognitron所採用的無監督強化學習方案相比,使用了反向傳播演算法[7],[62]。因此,LeCuN的工作為現代2D CNN奠定了基礎。監督訓練 使CNN具有從原始輸入中自動學習特徵的能力,而無需設計傳統ML方法使用的手工特徵。這個ConvNet成功解決了手寫數字和郵政編碼識別相關問題 [63]。1998年, LeCuN改進了ConvNet,並用於文件識別程式中的字元分類[64]。修改後的架構被命名為LeNet-5,它是對最初的CNN的改進,因為它可以從原始畫素中以分層的方式提取特徵表示[65]。LeNet-5依賴更少引數,同時考慮了影象空間拓撲,使CNN能夠識別影象的旋轉變體[65]。由於CNN在光學字元識別方面的良好效能,其分別於1993年和1996年開始在ATM和銀行中商業化使用。儘管LeNet-5實現了許多里程碑式成功,但是與之相關的主要問題是,其識別能力並未擴充套件到除手識別之外的其他分類任務。

3。2 2000年初:CNN停滯不前

在1990年代末和2000年代初,人們對NN的興趣減少,很少探索CNN在不同應用中的作用,例如物體檢測,影片監視等。由於在效能上的微不足道的改進(以高計算時間為代價),CNN在ML相關任務中變得沉寂。當時,其他統計方法,尤其是SVM比CNN更為流行[66]-[68] ,由於其相對較高的效能。在2000年初,普遍認為用於CNN訓練的反向傳播演算法無法有效收斂到最佳點,因此與手工製作的特徵相比,無法以監督的方式學習有用的特徵[69]。同時,任有研究人員繼續研究CNN,試圖最佳化其效能。Simard等人在2003年改進了CNN架構,並在手寫體基準資料集MNIST[64],[68]上顯示了與SVM相比更好的結果 [70]-[72]。透過將其在光學字元識別(OCR)中的應用擴充套件到其他的字元識別[72]-[74],如部署在影片會議中用於面部檢測的影象感測器中以及對街頭犯罪的管制等,這種效能的改進加快CNN的研究速度。同樣,基於CNN的系統已在超市跟蹤客戶[75]-[77]方面實現了工業化。此外,研究人員還探索了CNN在醫學影象分割、異常檢測和機器人視覺等其他應用中的潛力[78]-[80]。

3。3 2006-2011年:CNN的復興

深度神經網路通常具有複雜的體系結構和時間密集型訓練階段,有時跨越數週甚至數月。在2000年初,只有很少的技術可以訓練深度網路。此外,人們認為CNN無法解決複雜的問題。這些挑戰使人們停止在ML相關任務中使用CNN。

為了解決這些問題,2006年出現了許多有趣的方法來克服在訓練深度CNN和學習不變特徵時遇到的困難。Hinton在2006年針對深度架構提出了貪婪逐層預訓練方法,從而復興並恢復了深度學習的重要性[81],[82]。深度學習的復興 [84]^是使深度CNN成為眾人關注的因素之一。黃等(2006)使用最大池化而不是下采樣,透過學習不變特徵顯示出良好的結果[46],[85]。

在2006年末,研究人員開始使用圖形處理單元(GPU)[86],[87]來加速深度NN和CNN體系結構的訓練[88],[89]。NVIDIA在2007年推出了CUDA程式設計平臺[90],[91],該平臺可以更大程度地利用GPU的並行處理功能[92]。從本質上講,使用GPU進行神經網路訓練[88],[93]和其他硬體改進是CNN研究得以復興的主要因素。2010年,李飛飛在斯坦福大學的小組建立了一個名為ImageNet的大型影象資料庫,其中包含數百萬個帶有標籤的影象[94]。基於該資料庫舉辦年度ImageNet大規模視覺識別挑戰賽(ILSVRC),對各種模型的效能進行了評估和評分[95]。ILSVRC和NIPS在加強研究和增加CNN的使用方面一直非常活躍,從而使其流行起來。這是改善CNN效能和增加其使用的轉折點。

3。4 2012-2014年:CNN的崛起

可獲得的大規模訓練資料,硬體改進和計算資源有助於CNN演算法的改進。在此期間,可以發現CNN在目標檢測,影象分類和分割相關任務中的復興[9],[96]v。然而,CNN在影象分類任務中的成功不僅歸因於上述因素的結果,而且很大程度上歸功於架構修改、引數最佳化、管理單元的合併以及網路內連線的重新制定和調整[39],[ 42],[97]^。

CNN效能的主要突破體現在AlexNet[21]。AlexNet贏得了2012-ILSVRC競賽,這是影象檢測和分類中最困難的挑戰之一。AlexNet透過利用深度(合併了多個轉換層級)提高了效能,並在CNN中引入了正則化。與2012-ILSVRC中傳統ML技術相比,AlexNet[21]的表現堪稱典範(AlexNet將錯誤率從25。8降低至16。4),這表明2006年前CNN效能飽和的主要原因是由於沒有足夠的訓練資料和計算資源。綜上所述,在2006年之前,這些資源不足使得在不降低效能的情況下很難訓練高容量的CNN [98]。

隨著CNN在計算機視覺(CV)領域中越來越普遍,人們進行了許多嘗試以降低計算成本來提高CNN的效能。因此,每種新架構都試圖克服先前提出的架構與新結構重新組合的缺點。在2013年和2014年,研究人員主要集中在引數最佳化上,以在計算複雜性略有增加的情況下,在各種應用中加速CNN效能。2013年,Zeiler和Fergus[28]定義了一種機制,可以視覺化每個CNN層學習的過濾器。視覺化方法用於透過減小過濾器的尺寸來改進特徵提取階段。同樣,牛津大學小組提出的VGG架構[29]在2014年ILSVRC競賽中獲得亞軍,與AlexNet相比,其接感受野要小得多,但體積卻增加了。在VGG中,特徵圖體積在每一層加倍,深度從9層增加到16層。同年,贏得2014-ILSVRC競賽的GoogleNet[99]不僅致力於透過更改層設計來降低計算成本,而且根據深度擴充套件了寬度,以改善CNN效能。GoogleNet引入了分割、變換和合並塊的概念,其中合併了多尺度和多層轉換資訊以獲取區域性和全域性資訊[33],[99],[100]。使用多層轉換資訊有助於CNN處理不同層級的影象細節。在2012-14年度,CNN學習能力的提高主要是透過增加CNN的深度和引數最佳化策略實現。這表明CNN的深度有助於改善分類器的效能。

3。5 2015年至今:CNN的結構創新和應用迅速增長

通常來說,CNN的效能重大改善出現在2015-2019年期間。CNN的研究仍在進行中,並且有很大的改進潛力。CNN的表示能力取決於其深度,從某種意義上說,它可以透過定義從簡單到複雜的各種級別特徵來幫助學習複雜的問題。透過將複雜的問題分成較小的模組,多層轉換使學習變得容易。但是,深度架構所面臨的主要挑戰是負面學習的問題,這是由於網路較低層的梯度減小而發生的。為了解決這個問題,不同的研究小組致力於層連線的重新調整和新模組的設計。2015年初,Srivastava等人使用跨通道連線和資訊門控機制的概念來解決梯度消失問題並提高網路表示能力[101]-[103]。這個想法在2015年末成名,並提出了類似的概念:殘差塊或跳躍連線[31]。殘差塊是跨通道連線的一種變體,它透過規範跨塊的資訊流來平滑學習[104]-[106]。這個想法在ResNet體系結構中用於訓練150層深度網路[31]。跨通道連線的思想被Deluge,DenseNet等進一步擴充套件到了多層連線,以改善表示性[107],[108]。

在2016年,研究人員還結合深度探索了網路的寬度,以改進特徵學習[34],[35]。除此之外,沒有新的突出的體系結構修改,而是使用已經提出的體系結構的混合來提高深層CNN效能[33],[104]-[106],[109],[110]。這一事實使人感覺到,對有效調節CNN效能,相比適當組裝網路單元,可能還有其他更為重要因素。對此,Hu等(2017)確定網路表示在深度CNN的學習中發揮作用[111]。Hu等人介紹了特徵圖開發的思想,並指出少量資訊和領域無關的特徵可能會在更大程度上影響網路的效能。他利用了上述想法,並提出了名為“擠壓和激發網路(SE-Network)[111]”的新架構。它透過設計專門的SE塊來利用特徵圖(在文獻中通常稱為通道)資訊。該塊根據每個特徵圖在類識別中的作用為每個特徵圖分配權重。不同的研究人員對該想法進行了進一步的研究,他們透過利用空間和特徵圖(通道)資訊將注意力轉移到重要區域[37],[38],[112]。在2018年,Khan等人[36]引入了一種新的通道提升思路。用通道提升表示進行網路訓練的動機是使用豐富的表示。透過學習各種特徵以及透過TL概念利用已經學習的特徵,該想法有效地提高了CNN的效能。

從2012年至今,已經出現許多CNN架構的改進。關於CNN的架構進步,最近的研究重點是設計新的塊,這些塊可以透過利用特徵圖和空間資訊或透過新增人工通道來增強網路表示。

4、CNN中的結構創新

從1989年至今,CNN架構已進行了不同的改進。這些改進可以歸類為引數最佳化、正則化、結構重構等。但是,可以觀察到,CNN效能改進的主要動力來自處理單元的重組和新模組的設計。CNN架構中的大多數創新都與深度和空間利用有關。根據架構修改的型別,CNN可以大致分為以下七個類別:空間利用,深度,多路徑,寬度,特徵圖利用,通道提升和基於注意力的CNN。圖4所示的Deep CNN的分類法顯示了七個不同的類,而它們的摘要在表1中。

圖4 深度CNN結構分類

表1 不同類別最新體系結構效能比較,報告所有架構的Top 5個錯誤率

深度卷積神經網路架構:從基本元件到結構創新

深度卷積神經網路架構:從基本元件到結構創新

4。1 基於空間利用的CNN

CNN具有大量引數和超引數,例如權重、偏置、處理單元(神經元)數量、層數,濾波器大小、步幅、學習率、啟用函式等[119],[120]。由於卷積運算考慮了輸入畫素的鄰域(區域性性),因此可以透過使用不同的濾波器大小來探索不同級別的相關性。因此,在2000年初,研究人員利用空間濾波器來改善這方面的效能,探索了各種大小的過濾器,以評估它們對網路學習的影響。不同大小的過濾器封裝了不同級別的粒度;通常,小尺寸濾波器會提取細粒度資訊,大尺寸過濾器會提取粗粒度資訊。這樣,透過調整濾波器大小,CNN可以在粗粒度和細粒度細節上均表現良好。

4.1.1 LeNet

LeNet由LeCuN在1998年提出[65]。它以其歷史重要性而聞名,因為它是第一個CNN,顯示了手寫體識別的最佳效能。它具有對數字進行分類的能力,而不會受到較小的失真,旋轉以及位置和比例變化的影響。LeNet是一個前饋NN,由五個交替的卷積和池化層組成,然後是兩個全連線層。在2000年初,GPU未廣泛用於加速訓練,甚至CPU也很慢[121]。傳統多層全連線神經網路的主要侷限性在於,它將每個畫素視為一個單獨的輸入並對其進行轉換,這是一個巨大的計算負擔,特別是在當時[122]。LeNet利用了影象的潛在基礎,即相鄰畫素彼此相關並分佈在整個影象中。因此,使用可學習的引數進行卷積是一種在很少引數的情況下從多個位置提取相似特徵的有效方法。這改變了傳統的訓練觀點,即每個畫素被視為與其鄰域分離的單獨輸入特徵,而忽略了它們之間的相關性。LeNet是第一個CNN架構,它不僅減少了引數數量和計算量,而且能夠自動學習特徵。

4.1.2 AlexNet

LeNet [65]雖然開始了深層CNN的歷史,但是在那時,CNN僅限於手數字識別任務,並且不能很好地適用於所有類別的影象。AlexNet[21]被認為是第一個深度CNN架構,它顯示了影象分類和識別任務的開創性成果。AlexNet由Krizhevesky等人提出,他們透過加深CNN並應用許多引數最佳化策略來增強CNN的學習能力[21]。AlexNet的基本體系結構設計如圖5所示。在2000年初,硬體限制了深度CNN結構的學習能力,迫使其限制在較小的尺寸。為了利用CNN的表達能力,Alexnet在兩個NVIDIA GTX 580 GPU上進行了並行訓練以克服硬體的短板。在AlexNet中,特徵提取階段從5(LeNet)擴充套件到了7,從而使CNN適用於各種類別的影象。儘管事實上通常情況下,深度會提高影象不同解析度的泛化能力,但是與深度增加相關的主要缺點是過擬合。為了應對這一挑戰,Krizhevesky等人(2012)利用了Hinton[56],[123]的想法,即他們的演算法在訓練過程中隨機跳過了一些變換單元,以強制模型學習更魯棒的特徵。除此之外,ReLU還被用作非飽和啟用函式,透過在某種程度上減輕梯度消失的問題來提高收斂速度[53],[124]。重疊下采樣和區域性響應歸一化也被用於減少過度擬合來提高泛化性。與先前提出的網路相比,其他調整是在初始層使用了大型過濾器(11x11和5x5)。由於AlexNet的高效學習方法,它在新一代CNN中具有重要意義,並開始了CNN體系結構進步研究的新時代。

4.1.3 ZefNet

在2013年之前,CNN的學習機制主要是基於反覆試驗,而不知道改進背後的確切原因。缺乏瞭解限制了深層CNN在複雜影象上的效能。2013年,Zeiler和Fergus提出了一種有趣的多層反捲積神經網路(DeconvNet),該網路以ZefNet聞名[28]。開發ZefNet是為了定量視覺化網路效能。網路活動視覺化的想法是透過解釋神經元的啟用來監視CNN的效能。在先前的一項研究中,Erhan等人(2009)利用了相同的想法透過視覺化隱藏層的特徵[125],優化了深度信念網路(DBN)的效能。Le等人(2011年)以同樣的方式透過視覺化輸出神經元生成的影象類別來評估深度無監督自動編碼器(AE)的效能[126]。DeconvNet的工作方式與前向CNN相同,但顛倒了卷積和池化操作的順序。這種反向對映將卷積層的輸出投影回視覺上可感知的影象模式,從而給出了在每一層學習的內部特徵表示的神經元級別的解釋[127],[128]。ZefNet的目標是在訓練期間監視學習方案,從而將發現用於診斷與模型相關的潛在問題。這個想法在AlexNet上應用DeconvNet得到了實驗驗證,結果表明在網路的第一層和第二層中只有少數神經元處於活動狀態,而其他神經元則死了(處於非活動狀態)。此外,它表明第二層提取的特徵表現出混疊偽像(aliasing artifacts)。基於這些發現,Zeiler和Fergus調整了CNN拓撲並進行了引數最佳化。Zeiler和Fergus透過減小過濾器尺寸和步幅以在前兩個卷積層中保留最大數量的特徵,從而最大限度地提高了CNN的學習能力。CNN拓撲結構的這種重新調整帶來了效能提高,這表明特徵視覺化可用於識別設計缺陷並及時調整引數。

4.1.4 VGG

隨著CNN成功用於影象識別,Simonyan等人提出了一種簡單有效的CNN架構設計原則。他們的名為VGG的體系結構是模組化的分層模式[29]。與AlexNet和ZefNet相比,VGG的深度為19層,以模擬深度與網路表示能力的關係[21],[28]。ZefNet是2013年ILSVRC競賽的一線網路,它建議使用小型濾波器可以提高CNN的效能。基於這些發現,VGG用一堆3x3卷積層代替了11x11和5x5濾波器,並透過實驗證明,同時放置3x3濾波器可以達到大尺寸濾波器的效果(感受野同大尺寸濾波器同樣有效(5x5和7x7))。小尺寸濾波器的另一個好處是透過減少引數的數量提供了較低的計算複雜性。這些發現為在CNN中使用較小尺寸的濾波器創造了新的研究趨勢。VGG透過在卷積層之間放置1x1卷積來調節網路的複雜性,此外,還可以學習所得特徵圖的線性組合。為了調整網路,將最大池化層放置在卷積層之後,同時執行填充以保持空間解析度[46]。VGG在影象分類和定位問題上均顯示出良好的效果。雖然VGG未在2014-ILSVRC競賽中名列前茅,但由於其簡單、同質的拓撲結構和增加的深度而聞名。與VGG相關的主要限制是計算成本高。即使使用小尺寸的濾波器,由於使用了約1。4億個引數,VGG仍承受著很高的計算負擔。

4.1.5 GoogleNet

GoogleNet贏得了2014-ILSVRC競賽的冠軍,也被稱為Inception-V1。GoogleNet體系結構的主要目標是在降低的計算成本同時實現高精度[99]。它在CNN中引入了inception塊的新概念,透過拆分、變換和合並思想整合了多尺度卷積變換。inception塊的體系結構如圖6所示。該塊封裝了不同大小的濾波器(1x1、3x3和5x5),以捕獲不同尺度(細粒度和粗粒度)的空間資訊。在GoogleNet中,傳統的卷積層被替換為小塊,類似於在網路中網路(NIN)體系結構中提出的用微型NN替換每層的想法[57]。GoogleNet對分割、變換和合並的想法的利用,有助於解決與學習同一影象類別中存在的各種型別的變體有關的問題。除了提高學習能力外,GoogleNet的重點還在於提高CNN引數的效率。在採用大尺寸核心之前,GoogleNet透過使用1x1卷積濾波器新增瓶頸層來調節計算。它使用稀疏連線(並非所有輸出特徵圖都連線到所有輸入特徵圖),從而透過省略不相關的特徵圖(通道)來克服冗餘資訊和降低成本的問題。此外,透過在最後一層使用全域性平均池來代替連線層,從而降低了連線密度。這些引數調整使引數量從4000萬個大大減少到500萬個。應用的其他正則因素包括批次標準化和使用RmsProp作為最佳化器[129]。GoogleNet還引入了輔助學習器的概念以加快收斂速度。但是,GoogleNet的主要缺點是其異構拓撲,需要在模組之間進行自定義。GoogleNet的另一個限制是表示瓶頸,它極大地減少了下一層的特徵空間,因此有時可能會導致有用資訊的丟失。

圖6 inception塊基本結構

4。2 基於深度的CNN

深度CNN架構基於以下假設:隨著深度的增加,網路可以透過許多非線性對映和改進的特徵表示來更好地近似目標函式[130]。網路深度在監督訓練的成功中發揮了重要作用。理論研究表明,與淺層架構相比,深層網路可以更有效地表示某些功能類別[131]。Csáji在2001年提出了通用逼近定理,該定理指出單個隱藏層足以逼近任何函式,但這是以成倍增加許多神經元為代價的,因此經常使它在計算上不可行[132]。在這方面,Bengio和Delalleau [133]提出,更深層的網路有潛力以降低的成本維持網路的表現力[134]。2013年,Bengio等人根據經驗表明,對於複雜任務,深度網路在計算上更有效[84],[135]。在2014年ILSVRC競賽中表現最好的Inception和VGG,進一步強化了以下觀點:深度是調節網路學習能力的重要維度[29],[33],[99],[100]。

4.2.1 Highway Networks

基於直覺,可以透過增加網路深度來提高學習能力。2015年,Srivastava等人提出了一個名為Highway Networks的深層CNN [101]。與深度網路有關的主要問題是訓練慢和收斂慢[136]。Highway Networks透過引入新的跨層連線(在第4。3。1節中討論),利用深度來學習豐富的特徵表示。因此,Highway Networks也被歸類為基於多路徑的CNN體系結構。在ImageNet資料集上,具有50層的Highway Networks的收斂速度要好於薄而深的架構[94],[95]。Srivastava等人的實驗表明,新增10層以上的隱藏單元后,普通網路的效能會降低[137]。另一方面,即使深度為900層,Highway Networks的收斂速度也比普通網路快得多。

4.2.2 ResNet

ResNet由He等人提出,被認為是Deep Nets的延續[31]。ResNet透過在CNN中引入殘差學習的概念徹底改變了CNN架構競賽,並設計了一種有效的方法來訓練深度Nets。與Highway Networks類似,它屬於基於多路徑的CNN,因此其學習方法將在4。3。2節中討論。ResNet提出了152層深度CNN,贏得了2015-ILSVRC競賽。ResNet殘差塊的體系結構如圖7所示。分別比AlexNet和VGG深20倍和8倍的ResNet比以前提出的Nets[21],[29]表現出更少的計算複雜性。何等人根據經驗表明,具有50/101/152層的ResNet在影象分類任務上的錯誤少於34層的純Net。此外,ResNet在著名的影象識別基準資料集COCO [138]上提高了28%。ResNet在影象識別和定位任務上的良好效能表明,深度對於許多視覺識別任務至關重要。

深度卷積神經網路架構:從基本元件到結構創新

4.2.3 Inception-V3, V4 and Inception-ResNet

Inception-V3,V4和Inception-ResNet是Inception-V1和V2的改進版本[33],[99],[100]。Inception-V3的想法是在不影響泛化的情況下降低更深Nets的計算成本。為此,Szegedy等用小型非對稱濾波器(1x7和1x5)替換大型濾波器(5x5和7x7),並在大型過濾器之前使用1x1卷積作為瓶頸[100]。這使得傳統的卷積運算更像跨通道相關的。在以前的工作之一,林等充分利用了1x1濾波器在NIN架構中的潛力[57]。Szegedy等 [100]以一種智慧的方式使用了相同的概念。在Inception-V3中,使用了1x1卷積運算,該運算將輸入資料對映到小於原始輸入空間的3或4個獨立空間中,然後透過常規3x3或5x5卷積對映這些較小的3D空間中的所有相關性。在Inception-ResNet中,Szegedy等人結合了殘差學習和Inception塊的作用[31],[33]。這樣做時,濾波器級聯被殘差連線代替。此外,Szegedy等實驗表明,帶有殘差連線的Inception-V4(Inception-ResNet)具有與普通Inception-V4相同的泛化能力,但深度和寬度增加了。但是,他們觀察到Inception-ResNet的收斂速度比Inception-V4更快,這清楚地說明了使用殘差連線進行訓練會顯著加快對Inception網路的訓練。

4.2.4 ResNext

ResNext,也稱為聚合殘差變換網路,是對Inception網路的改進[115]。謝等人透過引入cardinality的概念,以強大而簡單的方式利用了分割,變換和合並[99]。cardinality是一個附加維,它是指轉換集的大小[139],[140]。Inception網路不僅提高了傳統CNN的學習能力,而且使網路資源有效。但是,由於在轉換分支中使用了多種空間嵌入(例如使用3x3、5x5和1x1濾波器),因此需要分別自定義每一層。實際上,ResNext從Inception,VGG和ResNet [29],[31],[99]中得出了特徵。ResNext透過將split,transform和merge塊中的空間解析度固定為3x3濾波器,利用了VGG的深度同質拓撲和簡化的GoogleNet架構。它還使用殘差學習。ResNext的構建塊如圖8所示。ResNext在split,transform和merge塊中使用了多個轉換,並根據cardinality定義了這些轉換。Xie等人(2017)表明,cardinality的增加顯著改善了效能。ResNext的複雜度是透過在3x3卷積之前應用低嵌入(1x1濾波器)來調節的,最佳化訓練 ^使用跳躍連線。

深度卷積神經網路架構:從基本元件到結構創新

圖8 ResNext構建塊

4。3 基於多路徑的CNN

深度網路的訓練是一項艱鉅的任務,這已成為最近有關深度網路研究的主題。深度CNN通常在複雜任務上表現良好。然而,更深的網路可能會遭受效能下降,梯度消失或爆炸的問題,這不是由過度擬合引起的,而是由深度的增加引起的[53],[142]。消失的梯度問題不僅會導致更高的測試誤差,而且會導致更高的訓練誤差[142],[144]。為了訓練更深的網路,研究人員提出了多路徑或跨層連線的概念[101],[107],[108],[113]。多個路徑或快捷方式連線可以透過跳過某些中間層來系統地將一層與另一層連線,以允許專門資訊流的跨層 [145],[146]。跨層連線將網路分為幾個塊。這些路徑還嘗試透過使較低的層可訪問梯度來解決梯度消失問題。為此,使用了不同型別的快捷連線,例如零填充,基於投影的,dropout,跳躍連線和1x1連線等。

4.3.1 Highway Networks

網路深度的增加主要是針對複雜問題提高了效能,但同時也使網路訓練變得困難。在深網中,由於層數眾多,誤差的反向傳播可能會導致較低層的梯度值較小。為了解決這個問題,Srivastava等人 [101]在2015年,基於跨層連線的想法,提出了一種新的CNN架構,稱為Highway Networks。在Highway Networks中,透過在層中分配兩個門單元(等式(5)),可以實現跨層的資訊暢通無阻。門控機制的思想是從基於長期短期記憶(LSTM)的遞迴神經網路(RNN)[147],[148]中得到啟發的。透過組合第l層和之前的l-k層資訊來聚合資訊,產生正則化效果,從而使基於梯度的深度網路訓練變得容易。這樣就可以使用隨機梯度下降(SGD)演算法訓練具有100多個層甚至多達900層的網路。Highway Networks網路的跨層連線性在公式(5和6)中定義。

在公式(5)中,T_g為轉換門,表示所產生的結果,而C_g為進位。在網路中,H_l (x_i,W_(H_l ) )表示隱藏層的作用和殘差的實現。而1- T_g (x_i,W_(T_g ) )充當層中的開關,決定資訊流的路徑。

4.3.2 ResNet

為了解決在訓練更深網路時遇到的問題,He等人(2015年)利用了Highway Network中使用的旁路途徑提出了ResNet[31]。ResNet的數學公式用公式(7和8)表示。

其中,f(x_i )是轉換後的訊號,而x_i是原始輸入。原始輸入x_i透過旁路路徑新增到f(x_i )。本質上,g(x_i )- x_i進行殘差學習。ResNet在層內引入了快捷連線以實現跨層連線,但是與Highway Networks相比,這些門是獨立於資料且無引數的。在Highway Networks中,當關閉門控快捷時,這些圖層表示非殘差功能。但是,在ResNet中,始終傳遞殘差資訊,並且永遠不會關閉快捷連線。殘差連結(快捷連線)加快了深層網路的收斂速度,從而使ResNet能夠避免梯度消失問題。152層深度的ResNet(分別比AlexNet和VGG的深度分別高20倍和8倍)贏得了2015-ILSVRC冠軍[21]。即使深度增加,ResNet的計算複雜度仍比VGG [29]低。

4.3.3 DenseNets

在Highway Networks和ResNet的延續中,研究人員提出了DenseNet來解決梯度消失問題[31],[101],[107]。ResNet的問題在於它透過附加資訊轉換顯式地保留資訊,因此許多層可能貢獻很少或根本沒有資訊。為了解決此問題,DenseNet使用了跨層連線,但是以一種修改的方式。DenseNet以前饋的方式將每一層連線到其他每一層,將所有先前層的特徵圖用作所有後續層的輸入。與傳統CNN中一層與其上一層之間的l個連線相比,這在DenseNet中建立了(l(l+1))/2個直接連線。它加強了跨層深度卷積的效果。由於DenseNet級聯了先前層特徵而不是新增它們,因此,網路可以具有顯式區分新增到網路的資訊和保留的資訊的能力。DenseNet具有窄層結構,但是,隨著特徵圖數量的增加,它在引數上變得昂貴。透過損失函式使每一層直接進入梯度,可以改善整個網路中的資訊流。這具有正則化效果,可減少使用較小訓練集任務的過擬合。

4。4 基於寬度的多連線CNNs

在2012年至2015年期間,研究重點主要是開發深度以及網路規範化中多通道監管連線的有效性上[31],[101]。然而,川口等報告說網路的寬度也很重要[149]。多層感知器透過在層中並行使用多個處理單元,獲得了比感知器映射覆雜功能的優勢。這表明,寬度是和深度同樣重要的定義學習原則的引數。Lu(2017年)以及Hanin和Sellke(2017年)等人最近表明,具有ReLU啟用功能的NN必須足夠寬,以隨著深度的增加保持通用逼近性質[150]。此外,如果網路的最大寬度不大於輸入維數,則緊湊集上的一類連續函式不能被任意深度的網路很好地近似[135],[151]。雖然,多層的堆疊(深度增加)可以學習各種特徵表示,但不一定可以提高NN的學習能力。與深層架構相關的一個主要問題是某些層或處理單元可能無法學習有用的功能。為了解決這個問題,研究的重點從深層和狹窄的體系結構轉向薄和寬的體系結構。

4.4.1 WideResNet

值得關注的是,深度殘差網路相關的主要缺點是特徵重用問題,其中某些特徵轉換或塊可能對學習的貢獻很小[152]。WideResNet解決了這個問題[34]。Zagoruyko和Komodakis提出,深層殘差網路的學習潛力主要是由於殘差單元,而深度具有補充作用。WideResNet透過使ResNet變寬而不是變深來利用殘差塊的功能[31]。WideResNet透過引入附加因子k,該因子控制網路的寬度。WideResNet表明,與使殘差網路更深相比,拓寬層可能會提供更有效的效能改善方法。儘管深度殘差網路提高了表示能力,但是它們具有一些缺點,例如時間密集型訓練,許多特徵圖的失活(特徵重用問題)以及梯度消失和爆炸問題。何等人透過將dropout引入殘差塊以有效地規範網路來解決特徵重用問題[31]。同樣,黃等人引入了隨機深度的概念來解決梯度消失和學習緩慢的問題[105]。目前,即使效能的部分改善也可能需要新增許多新層。一項經驗研究表明,WideResNet的引數數量是ResNet的兩倍,但可以比深度網路更好地進行訓練[34]。更寬的殘差網路是基於以下觀察結果:與ResNet相比,殘差網路之前的幾乎所有體系結構(包括最成功的Inception和VGG)都更寬。在WideResNet中,透過在卷積層之間而不是在殘差塊內部新增dropout來使學習有效。

4.4.2 Pyramidal Net

在早期的深度CNN架構中,例如AlexNet,VGG和ResNet,由於多個卷積層的堆疊,特徵圖的深度在後續層中增加。但是,空間維數會減小,因為每個卷積層後都有子取樣層[21],[29],[31]。因此,Han等人認為,在深層的CNN中,豐富的特徵表示可以透過減小特徵圖的大小來彌補[35]。特徵圖深度的急劇增加同時,空間資訊的丟失限制了CNN的學習能力。ResNet在影象分類問題上顯示出了非凡的成果。但是,在ResNet中,刪除殘差塊通常會降低效能,在殘差塊中,空間圖和特徵圖(通道)的尺寸都會發生變化(特徵圖深度增加,而空間尺寸減小)。在這方面,隨機ResNet透過隨機丟棄殘差單元減少資訊損失來提高效能[105]。為了提高ResNet的學習能力,Han等人提出了金字塔網路(Pyramidal Net)[35]。與ResNet隨深度的增加而導致的空間寬度的急劇減小相反,金字塔形網路逐漸增加了每個殘差單位的寬度。這種策略使金字塔網路能夠覆蓋所有可能的位置,而不是在每個殘差塊內保持相同的空間尺寸,直到下采樣為止。由於特徵圖的深度以自上而下的方式逐漸增加,因此被命名為金字塔網。在金字塔網路中,特徵圖的深度由因子l調節,並使用公式(9)計算。

其中,D_l表示第l個殘差單元的維數,n是殘差單元的總數,而γ是階躍因子,並且γ/n調節深度的增加。深度調節因子試圖分配特徵圖增加的負擔。透過使用零填充identity mapping將殘差連線插入到層之間。零填充identity mapping的優點是,與基於投影的shortcut連線相比,它需要較少的引數數量,因此可以得到更好正則化[153]。金字塔形網路使用兩種不同的方法來擴充套件網路,包括基於加法和乘法的擴寬。兩種型別的拓寬之間的區別在於,加法的的金字塔結構線性增加,乘法的金字塔結構在幾何上增加[50],[54]。然而,金字塔形網的主要問題在於,隨著寬度的增加,空間和時間都發生二次方的增加。

4.4.3 Xception

Xception可以被認為是一種極端的Inception架構,它利用了AlexNet [21],[114]引入的深度可分離卷積的思想。Xception修改了原始的inception塊,使其更寬,並用一個單一的維度(3x3)緊跟1x1替換了不同的空間維度(1x1、5x5、3x3),以調節計算複雜度。Xception塊的體系結構如圖9所示。Xception透過解耦空間和特徵圖(通道)相關性來提高網路的計算效率。它先使用1x1卷積將卷積輸出對映到低維嵌入,然後將其空間變換k次,其中k為cardinality的寬度,它確定變換的次數。Xception透過在空間軸上分別對每個特徵圖進行卷積,使計算變得容易,然後進行逐點卷積(1x1卷積)以執行跨通道關聯。在Xception中,使用1x1卷積來調節特徵圖深度。在傳統的CNN架構中,傳統的卷積運算僅使用一個變換段,Inception使用三個變換段,而在Xception中,變換段的數量等於特徵圖的數量。儘管Xception採用的轉換策略不會減少引數的數量,但是它使學習更加有效並提高了效能。

深度卷積神經網路架構:從基本元件到結構創新

圖9 Xception構建塊

4.4.4 Inception家族

CNN的Inception家族也屬於基於寬度的方法類別[33],[99],[100]。在Inception網路中,在一層內,使用了不同大小的濾波器,從而增加了中間層的輸出。使用不同大小的濾波器有助於捕獲多樣的高階特徵。在4。1。4和4。2。3節中討論了Inception系列的顯著特徵。

4。5 基於特徵圖(Channel FMap)利用的CNN

CNN因其分層學習和自動特徵提取能力而在MV任務中變得很流行[12]。特徵的選擇在分類、分割和檢測模組的效能中起著重要作用。傳統的特徵提取技術通常是靜態的,並且由於特徵型別的限制而限制了分類模組的效能[154]。在CNN中,特徵是透過調整與核心(掩碼)關聯的權重來動態設定的。此外,使用多層特徵提取,可以提取各種型別的特徵(在CNN中稱為特徵圖或通道)。但是,某些特徵圖在物件識別中幾乎沒有作用或沒有作用[116]。巨大的特徵集可能會產生噪聲影響,從而導致網路過擬合。這表明,除了網路工程之外,特徵圖的選擇在改善網路的泛化方面可以發揮重要作用。在本節中,特徵圖和通道將可互換使用,因為許多研究人員已將詞通道用於特徵圖。

圖10 Squeeze和Excitation塊

4.5.1 Squeeze和Excitation網路

Hu等人報道了Squeeze和Excitation網路(SE-Network)[116]。他們提出了一個新的塊,用於選擇與物體識別相關的特徵圖(通常稱為通道)。這個新塊被稱為SE塊(如圖10所示),它抑制了不太重要的特徵圖,但賦予了指定特徵圖類較高的權重。SE-Network報告了ImageNet資料集錯誤的減少記錄。SE塊是一種以通用方式設計的處理單元,因此可以在卷積層之前的任何CNN體系結構中新增。該塊的工作包括兩個操作:擠壓和激發。卷積核捕獲區域性資訊,但是它忽略了該感受野之外特徵的上下文關係(相關性)。為了獲得特徵圖的全域性檢視,壓縮塊透過抑制卷積輸入的空間資訊來生成特徵圖合理統計資訊。由於全域性平均池化具有有效學習目標物件範圍的潛力,因此,擠壓操作將其用於使用以下公式生成特徵圖合理統計資訊[57],[155]:

其中,D_M是特徵圖描述符, m*n是輸入的空間維度。擠壓操作輸出D_M分配給激勵操作,該激勵操作透過利用門控機制來建模基於主題的相互依賴性。激勵操作使用兩層前饋NN將權重分配給特徵圖,這在數學上用公式(11)表示。

在等式(11)中,V_m表示每個特徵圖的權重,其中δ和σ分別表示ReLU和S形函式。在激勵操作中,ω_1和ω_2用作調節因子,以限制模型的複雜性並有助於泛化[50],[51]。壓縮塊的輸出之前是ReLU啟用函式,該函式在特徵圖中增加了非線性。SE塊中使用S形啟用函式的門控機制,該函式可模擬特徵圖之間的相互依賴性並根據特徵圖的相關性分配權重[156]。SE塊很簡單,並且透過將卷積輸入與主題響應相乘來自適應地重新校準每個圖層特徵圖。

4.5.2 競爭Squeeze和Excitation網路

Hu等人提出了Competitive Inner-Imaging Squeeze and Excitation for Residual Network(也稱為CMPE-SE網路)。在2018年[118], Hu等人用SE塊的思想來改善深度殘差網路的學習[116]。SE-Network根據特徵圖在分類識別中的作用重新校準特徵圖。但是,SE-Net的主要問題在於,在ResNet中,它僅考慮殘差資訊來確定每個通道的權重[116]。這樣可以最小化SE塊的影響,使ResNet資訊變得多餘。Hu等人透過從基於殘差和基於identity mapping的特徵生成特徵圖合理統計資訊來解決此問題。在這方面,使用全域性平均池化操作來生成特徵圖的全域性表示,而透過基於殘差和identity mapping的描述符之間進行競爭來估計特徵圖的相關性。這種現象稱為inner imaging [118]。CMPE-SE塊不僅對殘差特徵圖之間的關係進行建模,而且還將其與inner imaging圖的關係進行對映,並在二者之間進行競爭。CMPE-SE塊的數學表示式使用以下公式表示:

其中x_id是輸入的identity mapping,F_se表示應用於殘差特徵圖μ_r和identity mapping特徵圖x_id的擠壓操作,F_res表示SE塊在殘差特徵圖上的實現。擠壓操作的輸出與SE塊輸出F_res相乘。反向傳播演算法因此嘗試最佳化identity mapping和殘差特徵圖之間的競爭以及殘差塊中所有特徵圖之間的關係。

4。6 基於通道(輸入)利用的CNNs

影象表示在確定影象處理演算法(包括傳統演算法和深度學習演算法)的效能方面起著重要作用。一種良好影象表示方法可以透過緊湊程式碼定義影象的顯著特徵。在文獻中,各種型別的常規濾波器被用於為單個型別的影象提取不同級別的資訊[157],[158]。然後將這些不同的表示形式用作模型的輸入,以提高效能[159],[160]。現在,CNN是一個有效的特徵學習器,可以根據問題自動提取區分特徵[161]。但是,CNN的學習依賴於輸入表示。輸入中缺乏多樣性和類別可辨別資訊可能會影響CNN作為判別器的效能。為此,在CNN中引入了使用輔助學習器的通道提升(輸入通道維度)的概念,以增強網路的表示[36]。

4.6.1 使用TL的通道提升CNN

在2018年,Khan等人基於增加輸入通道數以提高網路的表示能力的想法,提出了一種新的CNN體系結構,稱為通道提升CNN(CB-CNN)[36]。CB-CNN的框圖如圖11所示。透過在深層生成模型人為地建立額外的通道(稱為輔助通道),然後透過深層判別模型加以利用,從而進行通道提升。該文認為可以在生成和區分階段都使用TL的概念。資料表示在確定分類器的效能中起著重要作用,因為不同的表示可能表示資訊的不同方面[84]。為了提高資料的代表性,Khan等人利用了TL和深度生成學習器[24],[162],[163]。生成型學習器試圖在學習階段表徵資料生成分佈。在CB-CNN中,自動編碼器用作生成學習器,以學習解釋資料背後變化的因素。增強以原始通道空間(輸入通道)學習到的輸入資料分佈,歸納TL的概念以新穎的方式用於構建提升輸入表示。CB-CNN將通道提升階段編碼為一個通用塊,該塊插入到深層網路的開頭。對於訓練,Khan等人使用了預訓練的網路以減少計算成本。這項研究的意義在於,將生成學習模型用作輔助學習器的情況下,可以增強基於深度CNN的分類器表示能力。儘管僅評估了透過在開始時插入提升塊來提升通道的潛力,但是Khan等人(2003年)建議,這一想法可以拓展到在深度體系結構的任何層提供輔助通道。CB-CNN也已經在醫學影象資料集上進行了評估,與以前提出的方法相比,它改進了結果。CB-CNN在有絲分裂資料集上的收斂曲線如圖12所示。

圖11 CB-CNN基本結構

深度卷積神經網路架構:從基本元件到結構創新

圖12 CB-CNN在有絲分裂資料集上的收斂曲線。損失和精度顯示在y軸上,而x軸表示Epoch。CB-CNN的訓練圖表明,該模型在約14個Epoch後收斂。

4。7 基於注意力的CNNs

不同級別的抽象在定義NN的區分能力方面具有重要作用。除了學習不同的抽象級別外,關注與上下文相關的特徵在影象定位和識別中也起著重要作用。在人類視覺系統中,這種現象稱為注意力。人們瞥見一連串的場景,會注意與上下文相關的部分。此過程不僅用於聚焦選定區域,而且還可以推斷該位置處物件的不同解釋,從而有助於更好地捕獲視覺結構。RNN和LSTM [147],[148]或多或少都具有類似的解釋性。RNN和LSTM網路利用注意力模組生成順序資料,新取樣依據先前迭代中的出現分配權重。注意力的概念已被各種研究人員納入CNN中,以改進表示形式並克服計算限制。這種關注的想法還有助於使CNN足夠智慧,甚至可以從雜亂的背景和複雜的場景中識別出物體。

4.7.1 殘差注意力神經網路

Wang等人提出了一種殘差注意力網路(RAN)來改善網路的特徵表示[38]。在CNN中納入注意力的動機是使網路能夠學習物件感知特徵。RAN是前饋CNN,它是透過將殘差塊與注意力模組堆疊在一起而構建的。注意力模組採用自下而上、自頂向下學習策略,分為主幹和mask分支。將兩種不同的學習策略組合到注意力模組中,可以在單個前饋過程中進行快速前饋處理和自上而下的注意力反饋。自下而上的前饋結構產生具有強語義資訊的低解析度特徵圖。而自頂向下的體系結構會產生密集的特徵,以便對每個畫素進行推斷。在先前提到的研究中,限制波爾茲曼機使用了自上而下、自下而上的學習策略[164]。同樣,Goh等在訓練的重建階段,利用自頂向下的注意機制作為深度玻爾茲曼機(DBM)的正則化因子。自上而下的學習策略以在學習過程中逐漸將地輸出輸入資料特徵圖的方式全域性最佳化網路[82],[164],[165]。RAN中的注意力模組在每一層生成物件感知軟掩模S_(i,FM) (x_c)[166]。軟掩模S_(i,FM) (x_c)透過重新校準主幹T_(i,FM) (x_c)輸出,使用等式(13)將注意力分配給物件,因此,對於每個神經元輸出,其行為都像控制門。

在先前的一項研究中,轉換網路[167],[168]也透過將其與卷積塊合併來以一種簡單的方式利用注意力的概念,但是主要問題是,轉換網路中的注意力模組是固定的,無法適應變化的環境。透過堆疊多個注意模組,使RAN能夠有效識別混亂、複雜和嘈雜的影象。RAN的分層結構使其具有基於每個特徵圖在各層中的相關性,為每個特徵圖自適應分配權重的能力[38]。殘差單元支援了深層次結構的學習。而且,因此,藉助捕獲不同級別物件感知特徵的能力,引入了三種不同級別的注意力:混合注意力、通道注意力和空間注意力[38]。

4.7.2 卷積塊注意力模組

注意力機制和特徵圖利用的重要性已透過RAN和SE-Network驗證[38],[111]。在這方面,Woo等提出了基於注意力的新CNN:卷積塊注意模組(CBAM)[37]。CBAM設計簡單,類似於SE-Network。SE-Network僅考慮特徵圖在影象分類中的作用,但忽略了影象中物件的空間位置。物件的空間位置在物件檢測中具有重要作用。CBAM透過先應用特徵圖(通道)注意力,然後再應用空間注意力來依次查詢注意力圖,以找到經過改進的特徵圖。在文獻中,通常將1x1卷積和池化操作用於空間注意力。Woo等的結果表明,沿空間軸池化特徵會生成有效的特徵描述符。CBAM將平均池化與最大池化連線在一起,從而生成強大的空間注意力圖。同樣,使用最大池化和全域性平均池化操作的組合對特徵圖統計資料進行建模。Woo等表明最大池化可以提供有關獨特物件特徵的線索,而全域性平均池的使用返回特徵圖注意力的次優推斷。利用平均池化和最大池化可提高網路的表示能力。這些精緻的特徵圖不僅專注於重要部分,而且還提高了所選特徵圖的表示能力。Woo等的經驗表明,透過序列學習過程制定3D注意圖有助於減少引數和計算成本。由於CBAM的簡單性,它可以輕鬆地與任何CNN架構整合。

4.7.3 空間和通道併發激勵機制

在2018年,Roy等人透過將空間資訊的效果與特徵圖(通道)資訊結合起來,使其適用於分割任務[111],[112],擴充套件了胡等人的工作。他們介紹了三個不同的模組:(i)進行spatially和exciting特徵圖的wise壓縮(cSE),(ii)空間上壓縮特徵圖wise和exciting(sSE),以及(iii)同時進行空間和通道壓縮與激勵(scSE)。在這項工作中,基於自動編碼器的卷積神經網路用於分割,而在編碼器和解碼器層之後插入了建議的模組。在cSE模組中,採用了與SE-block相同的概念。在此模組中,比例因子是基於目標檢測中特徵圖的組合得出的。由於空間資訊在分割中起著重要作用,因此在sSE模組中,空間位置比特徵圖資訊更為重要。為此,選擇特徵圖的不同組合並在空間上加以利用以將其用於分割。在最後一個模組中;在SCSE中,透過從空間和通道資訊中得出比例因子來分配對每個通道的注意力,從而有選擇地突出顯示特定物件的特徵圖[112]。

5、CNN應用

CNN已成功應用於不同的ML相關任務,即物件檢測、識別、分類、迴歸、分割等[169]-[171]。但是,CNN通常需要大量的資料來學習。CNN取得了巨大成功的所有上述領域都具有相對豐富的標記資料,例如交通標誌識別,醫學影象分割以及自然影象中人臉,文字,行人和人的檢測。CNN的一些有趣應用將在下面討論。

5。1 自然語言處理

自然語言處理(NLP)將語言轉換為任何計算機都可以輕鬆利用的形式。CNN已被用於基於NLP的應用中,例如語音識別、語言建模和分析等。尤其是,在引入CNN作為一種新的表示學習演算法之後,語言建模或語句建模已經發生了變化。執行語句建模以瞭解語句的語義,從而根據客戶要求提供新穎且有吸引力的應用程式。傳統的資訊檢索方法基於單詞或特徵來分析資料,但忽略了句子的核心。在[172]中,作者在訓練過程中使用了動態CNN和動態k-max池化。這種方法無需考慮任何外部來源(如解析器或詞彙)就可以找到單詞之間的關係。以類似的方式,collobert等[173]提出了基於CNN的架構,該架構可以同時執行各種與MLP相關的任務,例如分塊、語言建模,識別名稱實體以及與語義相關的角色建模。在另一篇著作中,胡等人提出了一種基於通用CNN的體系結構,該體系結構執行兩個句子之間的匹配,因此可以應用於不同的語言[174]。

5。2 計算機視覺相關應用

計算機視覺(CV)致力於開發可以處理包括影象和影片在內的視覺資料並可以有效地理解和提取有用資訊的人工系統。CV包括面部識別、姿勢估計、活動識別等多個領域。面部識別是CV中的一項艱鉅任務。最近有關面部識別的研究正在努力使原始影象發生很大變化,即使原始影象不存在。這種變化是由照明、姿勢變化和不同的面部表情引起的。Farfade等[175]提出了深層CNN,用於檢測來自不同姿勢的面部並且還能夠識別被遮擋的面部。在另一項工作中,Zhang等人 [176]使用新型的多工級聯CNN進行人臉檢測。當與最新技術[177]-[179]進行比較時,張的技術顯示出良好的效果。由於人體姿勢的高度可變性,人體姿勢估計是與CV相關的挑戰性任務之一。Li等 [180]提出了一種基於異構深度CNN的姿態估計相關技術。根據李的技術,經驗結果表明,隱藏的神經元能夠學習身體的區域性部位。同樣,Bulat等人提出了另一種基於級聯的CNN技術[181]。在其級聯體系結構中,首先檢測熱力圖,而在第二階段,對檢測到的熱力圖執行迴歸。動作識別是活動識別的重要領域之一。開發動作識別系統的困難在於解決屬於同一動作類別的不同模式中特徵的平移和扭曲。早期的方法包括運動歷史影象的構造,隱馬爾可夫模型的使用,動作草圖的生成等。近來,王等人[182]提出了一種結合LSTM的三維CNN架構,用於識別影片幀中的不同動作。實驗結果表明,Wang的技術優於最新的基於動作識別的技術[183]–[187]。同樣,Ji等人提出了另一種基於三維CNN的動作識別系統 [188]。在Ji的工作中,三維CNN用於從多個輸入幀通道中提取特徵。最新動作識別模型是在提取的組合特徵空間上開發的。所提的三維CNN模型以有監督的方式進行訓練,並且能夠在現實世界的應用程式中執行活動識別。

5。3 物體檢測

物體檢測專注於識別影象中的不同物件。近來,基於區域的CNN(R-CNN)已被廣泛用於物體檢測。任等人(2015年)提出了一種改進的R-CNN,稱為快速R-CNN,用於物件檢測[189]。在他們的工作中,全卷積神經網路用於提取特徵空間,可以同時檢測位於不同位置物件的邊界和得分。同樣,戴等人(2016年)提出了使用全連線CNN的基於區域的物件檢測[190]。在Dai的工作中,結果透過PASCAL VOC影象資料集測試報告。Gidaris等人提出了另一種物體檢測技術 [191],它基於基於多區域的深度CNN,有助於學習語義感知功能。使用Gidaris的方法,可以在PASCAL VOC 2007和2012資料集上以高精度檢測物體。

5。4 影象分類

CNN已被廣泛用於影象分類[192]-[194]。CNN的主要應用之一是醫學影象,尤其是使用組織病理學影象診斷癌症的方法[195]。最近,Spanhol等(2016年)使用CNN診斷乳腺癌影象,並將結果與在包含手工描述符[196],[197]的資料集上訓練的網路進行比較。Wahab等人開發了另一種最近提出的基於CNN的乳腺癌診斷技術 [198]。在Wahab的工作中,涉及兩個階段。在第一階段,確定了硬非有絲分裂的例項。在第二階段,執行資料擴充以解決類偏度問題。同樣,Ciresan等 [96]使用了與交通標誌訊號相關的德國基準資料集。他們設計了基於CNN的體系結構,以較高的識別率執行了與交通標誌分類相關的任務。

5。5 語音識別

語音被認為是人類之間的交流紐帶。在機器學習領域,在硬體資源可用之前,語音識別模型並沒有顯示出令人滿意的結果。隨著硬體資源的發展,具有大量訓練資料的DNN訓練成為可能。深度CNN通常被認為是影象分類的最佳選擇,但是,最近的研究表明,它在語音識別任務上也表現良好。哈米德等報道了基於CNN的說話者獨立語音識別系統[199]。實驗結果表明,與早期報道的方法相比,錯誤率降低了10%[200],[201]。在另一項工作中,探索了基於卷積層中全部或有限數量權重共享的各種CNN架構[202]。此外,還評估了在使用預訓練階段對整個網路進行初始化之後CNN的效能[200]。實驗結果表明,幾乎所有探索的體系結構在電話和詞彙識別相關任務上均具有良好的效能。

6、CNN面臨的挑戰

深度CNN在具有時間序列性質或遵循諸如網格之類的資料上已取得了良好的效能。但是,還存在將深層CNN架構用於任務的其他挑戰。在與視覺相關的任務中,CNN的一個缺點是,當用於估計物體的姿勢、方向和位置時,它通常無法顯示出良好的效能。在2012年,AlexNet透過引入資料增強的概念在某種程度上解決了這個問題。資料擴充可以幫助CNN學習各種內部表示形式,從而最終提高效能。同樣,Hinton報告說,較低的層應僅將其知識移交給下一層的相關神經元。在這方面,Hinton提出了膠囊網路方法[203],[204]。

在另項工作中,塞格迪等人研究表明,在噪聲影象資料上訓練CNN體系結構會導致誤分類錯誤的增加[205]。在輸入影象中新增少量的隨機噪聲能夠以某種方式欺騙網路,從而使模型可以對原始影象及其受到輕微干擾的版本進行不同的分類。

關於CNN在不同ML任務上的效能,不同的研究人員進行了有趣的討論。深度CNN模型訓練期間面臨的一些挑戰如下:

1。 深度NN通常就像一個黑匣子,因此可能缺乏解釋性。因此,有時很難對其進行驗證,並且在與視覺有關的任務中,CNN可能對噪聲和影象的其他更改幾乎沒有魯棒性。

2。 CNN的每一層都會自動嘗試提取與任務相關的更好且特定於問題的功能。但是,對於某些任務,重要的是在分類之前瞭解深度CNN提取的特徵的性質。CNN中特徵視覺化的想法可以為這個方向提供幫助。

3。 深度CNN基於監督學習機制,因此,適當的學習需要大量帶標註的資料。相反,人類有能力從少量樣本中學習和泛化。

4。 超引數的選擇會極大地影響CNN的效能。超引數值的微小變化會影響CNN的整體效能。這就是為什麼仔細選擇引數是一個主要的設計問題,需要透過一些合適的最佳化策略來解決。

5。 CNN的有效訓練需要強大的硬體資源,例如GPU。但是,仍然需要探索如何在嵌入式和智慧裝置中有效地使用CNN。深度學習在嵌入式系統中的一些應用包括受傷度校正,智慧城市中的執法等[206]-[208]。

7、未來發現

CNN結構設計中不同創新思想的使用改變了研究方向,尤其是在MV中。CNN在網格(如拓撲資料)上的良好表現使其成為強大的影象資料表示模型。CNN架構設計是一個有前途的研究領域,在將來,它可能會成為使用最廣泛的AI技術之一。

1。 整合學習[209]是CNN研究的前瞻性領域之一。多種多樣的架構的組合可以透過提取不同級別的語義表示來幫助模型改進各種類別影象的泛化。同樣,批次歸一化、dropout和新的啟用函式等概念也值得一提。

2。 CNN作為生成學習器的潛力已在影象分割任務中得到了利用,並顯示出良好的效果[210]。在有監督的特徵提取階段(使用反向傳播學習過濾器)開發CNN的生成學習能力可以提高模型的表示能力。同樣,需要新的正規化,透過在CNN的中間階段結合使用輔助學習器學習資訊特徵圖來增強CNN的學習能力[36]。

3。 在人類視覺系統中,注意力是從影象捕獲資訊的重要機制之一。注意機制以這樣一種方式執行,它不僅從影象中提取基本資訊,而且還儲存了它與影象的其他組成部分的上下文關係[211],[212]。將來,將在保持物件與後期階段物件區分特徵的空間相關性方向上進行研究。

4。 透過利用網路的規模來增強CNN的學習能力,這隨著硬體處理單元和計算資源的發展而變得可能。但是,深和高容量結構的訓練是記憶體使用和計算資源的重要開銷。這需要對硬體進行大量改進,以加速CNN的研究。CNN的主要問題是執行時適用性。此外,由於CNN的計算成本較高,因此在小型硬體中(尤其是在移動裝置中)會阻礙CNN的使用。在這方面,需要不同的硬體加速器來減少執行時間和功耗[213]。目前已經提出了一些非常有趣的加速器,例如專用積體電路,Eyriss和Google張量處理單元[214]。此外,透過降低運算元和三值量化的精度,或者減少矩陣乘法運算的數量,已經執行了不同的操作以節省芯片面積和功率方面的硬體資源。現在也該將研究轉向面向硬體的近似模型[215]。

5。 深度CNN具有大量超引數,例如啟用函式、核心大小、每層神經元數量以及層排列等。在深度學習的背景下,超引數的選擇及其評估時間使引數調整變得非常困難。超引數調整是一項繁瑣且直觀的任務,無法透過明確的表述來定義。在這方面,遺傳演算法還可用於透過以隨機方式執行搜尋以及透過利用先前的結果指導搜尋來自動最佳化超引數[216]-[218]。

6。 深度CNN模型的學習能力與模型的大小有很強的相關性。但是,由於硬體資源的限制,深度CNN模型的容量受到限制[219]。為了克服硬體限制,可以利用管道並行概念來擴大深度CNN訓練。Google小組提出了一個分散式機器學習庫;GPipe[220]使用同步隨機梯度下降和管道並行性進行訓練。將來,管道的概念可用於加速大型模型的訓練並在不調整超引數的情況下擴充套件效能。

8、模型

CNN取得了顯著進步,尤其是在視覺相關任務方面,因此重新喚起了科學家對ANN的興趣。在這種情況下,已經進行了多項研究工作,以改善CNN在視覺相關任務上的表現。CNN的進步可以透過不同的方式進行分類,包括啟用函式、損失函式、最佳化、正則化、學習演算法以及處理單元的重組。本文特別根據處理單元的設計模式回顧了CNN體系結構的進步,從而提出了CNN體系結構的分類法。除了將CNN分為不同的類別外,本文還介紹了CNN的歷史,其應用,挑戰和未來方向。

多年來,透過深度和其他結構改進,CNN的學習能力得到了顯著提高。在最近的文獻中觀察到,主要透過用塊代替常規的層結構已經實現了CNN效能的提高。如今,CNN架構的研究正規化之一是開發新型有效的塊架構。這些塊在網路中起輔助學習作用,它可以透過利用空間或特徵圖資訊或提升輸入通道來改善整體效能。這些模組針對問題有意識的學習,在提高CNN效能方面起著重要作用。此外,CNN的基於塊的體系結構鼓勵以模組化的方式進行學習,從而使體系結構更簡單易懂。塊作為結構單元的概念將繼續存在並進一步提高CNN效能。另外,除了塊內的空間資訊以外,注意力和利用通道資訊的想法有望變得更加重要。

下載1:OpenCV-Contrib擴充套件模組中文版教程

下載2:Python視覺實戰專案52講

下載3:OpenCV實戰專案20講