tft每日頭條

 > 生活

 > cnn卷積神經網絡簡要介紹

cnn卷積神經網絡簡要介紹

生活 更新时间:2024-12-27 21:44:27

卷積神經網絡簡介

傳統的BP神經網絡與DNN(深度神經網絡)不同層神經元的連接方式是“全連接”,也就是這一次層的一個神經元的輸入,會接受上一次每一個神經元的輸出,這種方式即為“全連接神經網絡”。這樣的連接方式有一個的缺點:因為權值與偏置等參數量大,導緻訓練收斂十分緩慢。特别是對于圖像這樣的訓練數據,動不動就是數以百萬的像素,理論上雖然可以收斂,但你可能得等上N年才有結果,而且它的泛化性也會變差。例如一張黑白的 28×28 的手寫數字圖片,輸入層的神經元就有784個,如下圖所示:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)1

若在中間隻使用一層隐藏層,我們設定hidden layer有15層,此時參數 w 就有 784×15=11760 多個;若輸入的是28×28 帶有顔色的RGB 格式的手寫數字圖片,輸入神經元就有28×28×3=2352 個。這很容易看出使用全連接神經網絡處理圖像中的需要訓練參數過多的問題。而在卷積神經網絡(Convolutional Neural Network,CNN)中,卷積層的神經元隻與前一層的部分神經元節點相連,即它的神經元間的連 接是非全連接的,且同一層中某些神經元之間的連接的權重 w 和偏移 b 是共享的(即相同的),這樣大量地減少了需要訓練參數的數量。

全卷積神經網絡輸出的特征圖如同昆蟲的複眼,每個grid為一隻眼睛,每隻眼睛所看到的東西不一樣,但是每隻眼睛的視野範圍相同(即,每隻眼睛的感受野大小相同), 每隻眼睛單獨工作,互不影響。然後每隻眼睛會判斷:1、它看到了什麼物體(類别);2、這個物體有什麼特點(屬性,可選項)。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)2

卷積神經網絡的特點

局部感知

一張圖像,我們實際上并不需要讓每個神經元都接受整個圖片的信息,而是讓不同區域的神經元對應一整張圖片的不同局部,最後隻要再把局部信息整合到一起就可以了。這樣就相當于在神經元最初的輸入層實現了一次降維。

局部感知即卷積核的局部感受野,指的是卷積核所覆蓋的像素面積,由于每個卷積核所覆蓋的面積僅是很少的一部分,是局部特征,即為局部感知。CNN是一個從局部到整體的過程(局部到整體的實現是在全連通層)。下圖是全連接層和卷積層的對比。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)3

權重共享

傳統的神經網絡的參數量巨大,例如對1000X1000像素的圖片做一次全連接操作,需要(1000X1000)10的6次方個參數。這可以說是卷積神經網絡的最重要也是它牛逼之處,剛剛我們說到全連接神經網絡最大的問題就是權值參數太多,而卷積神經網絡的卷積層,不同神經元的權值是共享的,這使得整個神經網絡的參數大大減小,提高了整個網絡的訓練性能。

降采樣

降采樣是卷積神經網絡的另一重要概念,通常也稱之為池化(Pooling)。簡單理解可以看作是對圖像的一次“有損壓縮”,因為在實際的訓練中,我們并不需要對圖像中的每一個細節都進行特征提取和訓練,所以池化的作用就是更進一步的信息抽象和特征提取,當然也會減小數據的處理量。最常見的方式有最大值(Max)池化、最小值(Min)池化、平均值(Average)池化。池化的好處是降低了圖像的分辨率,整個網絡也不容易過拟合。最大值池化如圖所示。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)4

卷積神經網絡的層次結構

CNN由輸入和輸出層以及多個隐藏層組成,隐藏層可分為卷積層,池化層、RELU層和全連通層,如下圖:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)5

  • 輸入層:CNN的輸入為原始圖像,三維(RGB)或二維的向量。
  • 卷積層:CNN的核心,卷積層由一組可學習的濾波器(filter)或内核(kernels)組成,它們具有小的感受野,每個卷積核具有kernel size,padding,stride等參數。從圖像的左上角依次做内積操作,提取出圖片的高層次特征。
  • 池化層:對conv後輸出的feature map進行下采樣操作,這樣的好處有降低參數的數量,防止過拟合等作用。
  • 激活層:在CNN中使用relu激活函數,在網絡中引入了非線性。通過relu激活函數傳遞卷積運算的結果。因此,最終特征映射中的值不是簡單的線性關系。
  • 全連接層:全連接層的輸入是一維向量,需要将pooling 層的輸出向量flatten成一個一維的向量,然後輸入到全連接層中,最後送到soft Max層進行類别的分類。
  • 輸出層:用于輸出結果

當然中間還可以使用一些其他的功能層:

  • 歸一化層(Batch Normalization):在CNN中對特征的歸一化
  • 切分層:對某些(圖片)數據的進行分區域的單獨學習
  • 融合層:對獨立進行特征學習的分支進行融合

輸入層

輸入層(Input Layer)是将原始數據或者其他算法預處理後的數據輸入到卷積神經網絡,數據沒有明确定義,可以是數字圖像,可以是音頻識别領域經過傅裡葉變換的二維波形數據,也可以是自然語言處理中一維表示的句子向量。輸入層的作用是将輸入數據送入卷積神經網絡進行特征提取,然後獲得我們想要的結果。同時根據計算能力差異,機器存儲能力差異和模型參數多少可以控制輸入不同數量的數據。

在CNN的輸入層中,(圖片)數據輸入的格式 與 全連接神經網絡的輸入格式(一維向量)不太一樣。CNN的輸入層的輸入格式保留了圖片 本身的結構。對于黑白的 28×28 的圖片,CNN的輸入是一個 28×28 的的二維神經元。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)6

而對于RGB格式的28×28圖片,CNN的輸入則是一個 3×28×28 的三維神經元(RGB中的每一個顔色通道都有一個 28×28 的矩陣)。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)7

卷積層

卷積層可以說是 CNN 架構中最重要的步驟之一。基本而言,卷積是一種線性的、平移不變性的運算,其由在輸入信号上執行局部加權的組合構成。根據所選擇的權重集合(即所選擇的點擴散函數(point spread function))的不同,也将揭示出輸入信号的不同性質。在頻率域中,與點擴散函數關聯的是調制函數——說明了輸入的頻率組分通過縮放和相移進行調制的方式。因此,選擇合适的核(kernel)對獲取輸入信号中所包含的最顯著和最重要的信息而言至關重要,這能讓模型對該信号的内容做出更好的推斷。

在卷積層中有幾個重要的概念:

  • local receptive fields(感受視野)
  • shared weights(共享權值)

假設輸入的是一個 28×28 的的二維神經元,我們定義5×5 的 一個 local receptive fields(感受視野),即 隐藏層的神經元與輸入 層的5×5個神經元相連,這個5*5的區域就稱之為Local Receptive Fields,如下圖所示:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)8

可類似看作:隐藏層中的神經元具有一個固定大小的感受視野去感受上一層的部分特征。在全連接神經網絡中,隐藏層中的神經元的感受 視野足夠大乃至可以看到上一層的所有特征。而在卷積神經網絡中,隐藏層中的神經元的感受視野比較小,隻能看到上一次的部分特征,上一層的其他特征可以通過平移感受視野來得到同一層的其他神經元,由同一層其他神經元來看:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)9

設移動的步長為1:從左到右掃描,每次移動 1 格,掃描完之後,再向下移動一格,再次從左到右掃描。具體過程請看:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)10

可看出 卷積層的神經元是隻與前一層的部分神經元節點相連,每一條相連的線對應一個權重w。一個感受視野帶有一個卷積核,我們将感受視野中的權重w矩陣稱為卷積核将感受視野對輸入的掃描間隔稱為步長(stride); 當步長比較大時(stride>1),為了掃描到邊緣的一些特征,感受視野可能會“出界”,這時需要對邊界擴充(pad),邊界擴充可以設為0 或其他值。卷積核的大小由用戶來定義,即定義的感受視野的大小;卷積核的權重矩陣的值,便是卷積神經網絡的參數,為了有一個偏移項,卷積核可附帶一個偏移項b ,它們的初值可以随機來生成,可通過訓練進行變化。因此感受視野(5X5)掃描時可以計算出下一層神經元的值為:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)11

對下一層的所有神經元來說,它們從不同的位置去探測了上一層神經元的特征。我們将通過一個帶有卷積核的感受視野掃描生成的下一層神經元矩陣稱為一個feature map (特征映射圖),如下圖的右邊便是一個 feature map:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)12

在同一個feature map上的神經元使用的卷積核是相同的,因此這些神經元 shared weights,共享卷積核中的權值和附帶的偏移。一個 feature map對應一個卷積核,若我們使用 3 個不同的卷積核,可以輸出3個feature map:(感受視野:5×5,布長stride:1)

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)13

因此在CNN的卷積層,我們需要訓練的參數大大地減少到了 (5×5 1)×3=78個。假設輸入的是 28×28 的RGB圖片,即輸入的是一個 3×28×28 的二維神經元,這時卷積核的大小不隻用長和寬來表示,還有深度, 感受視野也對應的有了深度,如下圖所示:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)14

由圖可知:感受視野:3×2×2 ; 卷積核:3×2×2 ,深度為3;下一層的神經元的值為:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)15

。卷積核的深度和感受視野的深度相同,都由輸入數據來決定,長寬可由自己來設定,數目也可以由自己來設定,一個卷積核依然對應一個 feature map。

總結一下,卷積層的優點在于局部連接(有助于減少參數量)和權值共享。我們分别來舉例說明一下:

  • 局部連接 :假設現在輸入圖片分辨率是100*100,然後隐藏層神經元有10^5個,如果全連接的話,那麼每個隐藏層神經元都連接圖像的一個像素點,就有個連接,這個參數量是很大的。對于卷積層來講,如果卷積核大小為那麼每個神經元隻需要和原始圖像中的一個的局部區域連接,所以一共隻有個連接。可以看到通過局部連接,卷積層的參數量減少了很多。
  • 權值共享:在上面的局部連接中,一個有個參數。如果每個神經元對應的參數都相同的話,那麼需要訓練的參數實際上就隻有個了。這個就是的卷積核。而權值共享的意思就是訓練好的一個卷積核表示了在圖像中提取某種特征的能力,例如提取人臉上的眼睛,也就是說卷積核具有了這種能力,無論在圖像的哪個地方都可以起作用。這隻是一個卷積核的作用,作用肯定是有限的,那麼如果我們用100個卷積核來提取特征,那麼特征提取能力就會大大增強。同時參數兩也不過才。所以是非常cheap并且effective的。

激活層

激活層(Activation Layer)負責對卷積層抽取的特診進行激活,由于卷積操作是把輸入圖像和卷積核進行相應的線性變換,需要引入激活層(非線性函數)對其進行非線性映射。激活層由非線性函數組成,常見的如sigmoid、tanh、relu。最常用的激活函數是Relu,又叫線性整流器。公式表達為:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)16

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)17

池化層

當輸入經過卷積層時,若感受視野比較小,步長stride比較小,得到的feature map (特征圖)還是比較大,可以通過池化層來對每一個 feature map進行降維操作,輸出的深度還是不變的,依然為 feature map 的個數。

池化層也有一個“池化視野(filter)”來對feature map矩陣進行掃描,對“池化視野”中的矩陣值進行計算,一般有兩種計算方式:

  • Max pooling:取“池化視野”矩陣中的最大值
  • Average pooling:取“池化視野”矩陣中的平均值 掃描的過程中同樣地會涉及的掃描步長stride,掃描方式同卷積層一樣,先從左到右掃描,結束則向下移動布長大小,再從左到右。如下圖示例所示:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)18

其中“池化視野”filter: 2×2;步長stride:2。最後可将 3 個 24×24 的 feature map 下采樣得到 3 個 24×24 的特征矩陣:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)19

結一下,池化層優點有:

  • 不變性,更關注是否存在某些特征而不是特征具體的位置。可以看作加了一個很強的先驗,讓學到的特征要能容忍一些的變化。(實際上這個容忍能力是非常有限的)
  • 減少下一層輸入大小,減少計算量和參數量。
  • 獲得定長輸出。(文本分類的時候輸入是不定長的,可以通過池化獲得定長輸出)
  • 防止過拟合或有可能會帶來欠拟合。

全連接層與輸出層

全連接層(Full Connected Layer)就是一個線性特征映射的過程,将多維的特征輸入映射為二維的特征輸出,高維表示樣本批次,低位常常對應任務目标(例如分類就對應每一個類别的概率)。全連接層主要對特征進行重新拟合,減少特征信息的丢失;輸出層主要準備做好最後目标結果的輸出。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)20

歸一化層

由于網絡中存在級聯的非線性運算,所以多層架構是高度非線性的。除了整流非線性,歸一化(normalization)是 CNN 架構中有重要作用的又一種非線性處理模塊。

Batch Normalization

Batch Normalization(批量歸一化)實現了在神經網絡層的中間進行預處理的操作,即在上一層的輸入歸一化處理後再進入網絡的下一層,這樣可有效地防止“梯度彌散”,加速網絡訓練。

Batch Normalization具體的算法如下圖所示:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)21

每次訓練時,取batch_size大小的樣本進行訓練,在BN層中,将一個神經元看作一個特征,batch_size個樣本在某個特征維度會有batch_size個值,然後在每個神經元維度上的進行這些樣本的均值和方差,通過公式得到,再通過參數和進行線性映射得到每個神經元對應的輸出。在BN層中,可以看出每一個神經元維度上,都會有一個參數和,它們同權重一樣可以通過訓練進行優化。

在卷積神經網絡中進行批量歸一化時,一般對未進行ReLu激活的 feature map進行批量歸一化,輸出後再作為激勵層的輸入,可達到調整激勵函數偏導的作用。一種做法是将feature map中的神經元作為特征維度,參數和的數量和則等于 2×fmapwidth×fmaplength×fmapnum2×fmapwidth×fmaplength×fmapnum,這樣做的話參數的數量會變得很多;另一種做法是把一個feature map看做一個特征維度,一個feature map上的神經元共享這個feature map的參數和,參數和的數量和則等于 2×fmapnum2×fmapnum,計算均值和方差則在batch_size個訓練樣本在每一個feature map維度上的均值和方差。注:fmapnumfmapnum指的是一個樣本的feature map數量,feature map 跟神經元一樣也有一定的排列順序。

Batch Normalization 算法的訓練過程和測試過程的區别:在訓練過程中,我們每次都會将 batch_size 數目大小的訓練樣本放入到CNN網絡中進行訓練,在BN層中自然可以得到計算輸出所需要的均值和方差。而在測試過程中,我們往往隻會向CNN網絡中輸入一個測試樣本,這是在BN層計算的均值和方差會均為 0,因為隻有一個樣本輸入,因此BN層的輸入也會出現很大的問題,從而導緻CNN網絡輸出的錯誤。所以在測試過程中,我們需要借助訓練集中所有樣本在BN層歸一化時每個維度上的均值和方差,當然為了計算方便,我們可以在 batch_num 次訓練過程中,将每一次在BN層歸一化時每個維度上的均值和方差進行相加,最後再進行求一次均值即可。

Local Response Normalization

近鄰歸一化(Local Response Normalization)的歸一化方法主要發生在不同的相鄰的卷積核(經過ReLu之後)的輸出之間,即輸入是發生在不同的經過ReLu之後的 feature map 中。

LRN的公式如下:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)22

其中:

  • 表示第i個卷積核的輸出(經過ReLu層)的feature map上的 (x,y) 位置上的值。
  • 表示 經LRN後的輸出。
  • N 表示卷積核的數量,即輸入的 feature map的個數。
  • n 表示近鄰的卷積核(或feature map)個數,由自己來決定。
  • 是超參數,由用戶自己調整或決定。

與BN的區别:BN依據mini batch的數據,近鄰歸一僅需要自己來決定,BN訓練中有學習參數;BN歸一化主要發生在不同的樣本之間,LRN歸 一化主要發生在不同的卷積核的輸出之間。

切分層

在一些應用中,需要對圖片進行切割,獨立地對某一部分區域進行單獨學習。這樣可以對特定部分進行通過調整 感受視野進行力度更大的學習。

融合層

融合層可以對切分層進行融合,也可以對不同大小的卷積核學習到的特征進行融合。例如在GoogleLeNet中,使用多種分辨率的卷積核對目标特征進行學習,通過 padding 使得每一個 feature map 的長寬都一緻,之後再 将多個 feature map 在深度上拼接在一起:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)23

融合的方法有幾種,一種是特征矩陣之間的拼接級聯,另一種是在特征矩陣進行運算 ( ,−,x,max,conv)。

卷積神經網絡應用場景

卷積神經網絡很擅長處理圖像。而視頻是圖像的疊加,所以同樣擅長處理視頻内容。下面給大家列一些比較成熟的應用:

圖像分類、檢索

圖像分類是比較基礎的應用,他可以節省大量的人工成本,将圖像進行有效的分類。對于一些特定領域的圖片,分類的準确率可以達到 95% ,已經算是一個可用性很高的應用了。

典型場景:圖像搜索…

目标定位檢測

可以在圖像中定位目标,并确定目标的位置及大小。

典型場景:自動駕駛、安防、醫療…

目标分割

簡單理解就是一個像素級的分類。

他可以對前景和背景進行像素級的區分、再高級一點還可以識别出目标并且對目标進行分類。

典型場景:美圖秀秀、視頻後期加工、圖像生成…

人臉識别

人臉識别已經是一個非常普及的應用了,在很多領域都有廣泛的應用。

典型場景:安防、金融、生活…

骨骼識别

骨骼識别是可以識别身體的關鍵骨骼,以及追蹤骨骼的動作。

典型場景:安防、電影、圖像視頻生成、遊戲…

卷積神經網絡經典框架

CNN最早由LeCun 在1998年《Gradient-based learning applied to document recognition》中提出,并提出了一個目标檢測的模型:LeNet-5,随後在2012年ImageNet競賽上,基于CNN網絡的AlexNet取得了第一,且正确率超出第二近10%,取得了曆史性的突破。CNN開始大放異彩,VGG Net,Google Net,ResNet等,都是基于CNN網絡的一些傑出的工作。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)24

LeNet

非常經典的網絡結構,具體不介紹了,直接貼個結構圖:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)25

  • 輸入層,尺寸大于任何一個字母,以保證每個字母都會出現在第七層單元的感受野的中心。
  • 中間五層分别是:卷積層→降采樣層→卷積層→降采樣層→卷積層。
  • 第一個卷積層使用了六種濾波器,因此具有六個通道的 feature maps 。
  • 第二個卷積層上升到16個通道。每一個通道與前6個通道的關系都不一樣,見上圖,目的是破壞對稱性,迫使每個通道學習不同的特征(理想情況是互補特征)。
  • 在全連接層,特征進行内積和非線性激活。
  • 最後是輸出層,10種數字對應10個輸出單元,分别計算輸出向量和該分類參考向量的歐式距離。
  • loss 為 MSE loss,輸出向量和分類參考向量最近則将其判為這一類。

可以看出來,這是一個識别字母的神經網絡。首先經過一次卷積濾波處理,得到了C1(卷積層 Feature map),然後又經過了一次下采樣(池化)處理得到了S2(下采樣層),之後又是一次卷積濾波得到C3卷積層,依次處理至途中的C5位全連接層,至此卷積的過程結束,被抽象的特征輸入至傳統的全連接神經網絡,之後就又是熟悉的節奏了。

AlexNet

2012 年 AlexNet 在 ImageNet 2012 圖像識别挑戰賽上一鳴驚人,證明了學習到的特征可以超越手工特征,結構如下:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)26

該網絡有以下的創新:

ReLU

之前使用的 tanh 和 sigmoid 激活函數都存在飽和區。改用無飽和的 ReLU ,收斂速度可以達到數倍于 tanh !

BTraining on Multiple GPUs

2個 GPU 協同,最直接的作用是加快了訓練速度。作者嘗試将網絡改為單GPU,同時保證參數數量不變,速度略遜于雙 GPUs 。

Overlapping Pooling

實驗證明,重疊池化可以更好地抑制過拟合,使準确率提高約0.4%和0.3%。

Data Augmentation

最簡單的抑制過拟合技術,就是 label-preserving transformations 。簡單來說,就是讓圖像進行各種不影響目标本質的變換,擴大數據量。

  • 鏡像對稱變換
  • 圖像光照強度和色彩變換先提取 RGB 三通道分量;對每一個通道分别進行主成分分析,提取出主成分;然後再進行三通道的随機系數線性組合。

Dropout

dropout是一種防止過拟合的正則化技術,具體做法是,對每個隐藏層的輸入進行一個概率判決,比如我們設置概率為0.5(通常命名為keep_prob),根據0.5,随機生成一個跟隐藏層神經元個數相同的向量,true:false的比例是1:1(因為keep_prob=0.5),與隐藏層的神經元進行相乘,那麼會有一半隐藏層的神經元被舍棄,不參與訓練。重複叠代上訴操作。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)27

如果我們有多個不同的模型合作進行預測,那麼泛化誤差将會有效降低。問題是,訓練多個模型的計算成本很高昂。Dropout 為我們提供了新思路:讓這些模型分享相同的權重系數,但神經元的輸出結果不盡相同。具體而言,是讓 hidden neuron 的輸出有50%的概率被置零。這樣,每次反向傳播時,參考的 loss 都是由不同模型計算得到的。總的來說,Dropout 技術打破了神經元之間的依賴性,強迫網絡學習更魯棒的神經元連接。我們隻在全連接層使用,因為全連接層的連接非常多。在測試階段不采用 Dropout 。Dropout 會延長收斂時間,但能有效抑制過拟合。

VGGNet

AlexNet 取得了很不錯的成績,但問題在于這個過程太過于經驗化,我們沒辦法借鑒太多經驗設計其他網絡(這并不代表 AlexNet 不行,相反,更是很偉大的突破)。而 VGG 就提出可以通過重複使用簡單的基礎塊來構建深度模型。

VGG 塊的組成規律是:連續使用多個相同的 padding 為 1,kernel size 為 3×3 的卷積層後,接上一個 stride 為 2,kernel 為 2×2 的最大池化層。卷積層保持輸入的尺寸不變,而池化層則對其減半。

AlexNet和 VGGNet的對比如下圖所示:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)28

NiN

NiN 是網絡中的網絡,使用的窗口形狀為 11×11, 5×5, 3×3,每個 NiN 塊後接一個 stride 2,窗口 3×3 的最大池化層。最大的不同時 NiN 去掉了 AlexNet 的最後 3 個全連接層,用輸出通道數等于标簽類别數的 NiN 塊,然後用全局平均池化并直接用于分類,可以顯著減小模型參數尺寸,緩解過拟合,但是訓練時間一般要增加。

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)29

GoogLeNet

GoogLeNet 在 2014 年的 ImageNet 圖像識别挑戰賽中大放異彩,吸收了 NiN 中網絡串聯網絡的思想,并做了很大改進。這個model證明了一件事:用更多的卷積,更深的層次可以得到更好的結構。(當然,它并沒有證明淺的層次不能達到這樣的效果)

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)30

GoogLeNet 中的基礎卷積塊叫做 Inception,結構如下圖所示:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)31

可以看到一個 Inception 塊中有 4 條并行的線路,我們可以自定義每層輸出的通道數,借此來控制模型複雜度。注:卷積部分使用了 5 個 block,每個 block 之間使用 stride 2 的 3×3 最大池化層來減小輸出寬度

ResNet

理論上來說,我們不斷添加層,模型精度應該越來越高,但是實際情況并非如此,甚至可能變得更差了。為了解決這個問題,何恺明等人提出了殘差網絡 ResNet,奪得了 2015 年 ImageNet 冠軍。

我們先來看看殘差塊的設計:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)32

  • 左圖:輸入 x,希望虛線部分能夠學習出 f(x)
  • 右圖:輸入 x,希望虛線部分能夠學習出 f(x) – x,更容易學習,x 也可以通過跨層的數據線路更快向前傳播

這個思路非常深刻影響了未來的神經網絡設計,為了能夠讓 f(x)-x 和 x 相加,可能需要引入 1×1 的卷積層來變化尺寸。

DenseNet

DenseNet 可以看作是 ResNet 的發展創新,對比如下:

cnn卷積神經網絡簡要介紹(深入理解卷積神經網絡)33

  • 左邊:ResNet,A 的輸出和 B 的輸出相加(這就需要維度一緻)
  • 右邊:DenseNet,A 的輸出和 B 的輸出拼起來

DenseNet 主要通過 dense block(确定輸入和輸入如何連接)和 transititon layer(控制通道數量)構成。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved