LeNet詳解 LeNet詳解

 LeNet-5是一個較簡單的卷積神經網絡。下圖顯示了其結構:輸入的二維圖像,先經過兩次卷積層到池化層,再經過全連接層,最後使用softmax分類作爲輸出層。關於CNN參見:https://blog.csdn.net/qq_42570457/article/details/81458077

網絡解析(一):LeNet-5詳解

       LeNet-5 這個網絡雖然很小,但是它包含了深度學習的基本模塊:卷積層,池化層,全連接層。是其他深度學習模型的基礎, 這裏我們對LeNet-5進行深入分析。同時,通過實例分析,加深對與卷積層和池化層的理解。

網絡解析(一):LeNet-5詳解

       LeNet-5共有7層,不包含輸入,每層都包含可訓練參數;每個層有多個Feature Map,每個FeatureMap通過一種卷積濾波器提取輸入的一種特徵,然後每個FeatureMap有多個神經元。

各層參數詳解:

1、INPUT層-輸入層

       首先是數據 INPUT 層,輸入圖像的尺寸統一歸一化爲32*32。

       注意:本層不算LeNet-5的網絡結構,傳統上,不將輸入層視爲網絡層次結構之一。

2、C1層-卷積層

      輸入圖片:32*32

      卷積核大小:5*5

      卷積核種類:6

      輸出featuremap大小:28*28 (32-5+1)=28

      神經元數量:28*28*6

      可訓練參數:(5*5+1) * 6(每個濾波器5*5=25個unit參數和一個bias參數,一共6個濾波器)

      連接數:(5*5+1)*6*28*28=122304

     詳細說明:對輸入圖像進行第一次卷積運算(使用 6 個大小爲 5*5 的卷積核),得到6個C1特徵圖(6個大小爲28*28的 feature maps, 32-5+1=28)。我們再來看看需要多少個參數,卷積核的大小爲5*5,總共就有6*(5*5+1)=156個參數,其中+1是表示一個核有一個bias。對於卷積層C1,C1內的每個像素都與輸入圖像中的5*5個像素和1個bias有連接,所以總共有156*28*28=122304個連接(connection)。有122304個連接,但是我們只需要學習156個參數,主要是通過權值共享實現的。

3、S2層-池化層(下采樣層)

      輸入:28*28

      採樣區域:2*2

      採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果通過sigmoid

      採樣種類:6

      輸出featureMap大小:14*14(28/2)

      神經元數量:14*14*6

      可訓練參數:2*6(和的權+偏置)

      連接數:(2*2+1)*6*14*14

      S2中每個特徵圖的大小是C1中特徵圖大小的1/4。

       詳細說明:第一次卷積之後緊接着就是池化運算,使用 2*2核 進行池化,於是得到了S2,6個14*14的 特徵圖(28/2=14)。S2這個pooling層是對C1中的2*2區域內的像素求和乘以一個權值係數再加上一個偏置,然後將這個結果再做一次映射。於是每個池化核有兩個訓練參數,所以共有2x6=12個訓練參數,但是有5x14x14x6=5880個連接。

4、C3層-卷積層

       輸入:S2中所有6個或者幾個特徵map組合

      卷積核大小:5*5

      卷積核種類:16

      輸出featureMap大小:10*10 (14-5+1)=10

      C3中的每個特徵map是連接到S2中的所有6個或者幾個特徵map的,表示本層的特徵map是上一層提取到的特徵map的不同組合。

       存在的一個方式是:C3的前6個特徵圖以S2中3個相鄰的特徵圖子集爲輸入。接下來6個特徵圖以S2中4個相鄰特徵圖子集爲輸入。然後的3個以不相鄰的4個特徵圖子集爲輸入。最後一個將S2中所有特徵圖爲輸入。則:可訓練參數:6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516

       連接數:10*10*1516=151600

       詳細說明:第一次池化之後是第二次卷積,第二次卷積的輸出是C3,16個10x10的特徵圖,卷積核大小是 5*5. 我們知道S2 有6個 14*14 的特徵圖,怎麼從6 個特徵圖得到 16個特徵圖了? 這裏是通過對S2 的特徵圖特殊組合計算得到的16個特徵圖。具體如下:

網絡解析(一):LeNet-5詳解

       C3的前6個feature map(對應上圖第一個紅框的6列)與S2層相連的3個feature map相連接(上圖第一個紅框),後面6個feature map與S2層相連的4個feature map相連接(上圖第二個紅框),後面3個feature map與S2層部分不相連的4個feature map相連接,最後一個與S2層的所有feature map相連。卷積核大小依然爲5*5,所以總共有6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516個參數。而圖像大小爲10*10,所以共有151600個連接。

網絡解析(一):LeNet-5詳解

        C3與S2中前3個圖相連的卷積結構如下圖所示:

網絡解析(一):LeNet-5詳解

       上圖對應的參數爲 3*5*5+1,一共進行6次卷積得到6個特徵圖,所以有6*(3*5*5+1)參數。 爲什麼採用上述這樣的組合了?論文中說有兩個原因:1)減少參數,2)這種不對稱的組合連接的方式有利於提取多種組合特徵。

5、S4層-池化層(下采樣層)

       輸入:10*10

       採樣區域:2*2

      採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果通過sigmoid

      採樣種類:16

      輸出featureMap大小:5*5(10/2)

      神經元數量:5*5*16=400

      可訓練參數:2*16=32(和的權+偏置)

      連接數:16*(2*2+1)*5*5=2000

      S4中每個特徵圖的大小是C3中特徵圖大小的1/4

      詳細說明:S4是pooling層,窗口大小仍然是2*2,共計16個feature map,C3層的16個10x10的圖分別進行以2x2爲單位的池化得到16個5x5的特徵圖。這一層有2x16共32個訓練參數,5x5x5x16=2000個連接。連接的方式與S2層類似。

6、C5層-卷積層

     輸入:S4層的全部16個單元特徵map(與s4全相連)

     卷積核大小:5*5

     卷積核種類:120

     輸出featureMap大小:1*1(5-5+1)

     可訓練參數/連接:120*(16*5*5+1)=48120

     詳細說明:C5層是一個卷積層。由於S4層的16個圖的大小爲5x5,與卷積核的大小相同,所以卷積後形成的圖的大小爲1x1。這裏形成120個卷積結果。每個都與上一層的16個圖相連。所以共有(5x5x16+1)x120 = 48120個參數,同樣有48120個連接。C5層的網絡結構如下:

網絡解析(一):LeNet-5詳解

7、F6層-全連接層

      輸入:c5 120維向量

      計算方式:計算輸入向量和權重向量之間的點積,再加上一個偏置,結果通過sigmoid函數輸出。

      可訓練參數:84*(120+1)=10164

      詳細說明:6層是全連接層。F6層有84個節點,對應於一個7x12的比特圖,-1表示白色,1表示黑色,這樣每個符號的比特圖的黑白色就對應於一個編碼。該層的訓練參數和連接數是(120 + 1)x84=10164。ASCII編碼圖如下:

網絡解析(一):LeNet-5詳解

     F6層的連接方式如下:

網絡解析(一):LeNet-5詳解

8、Output層-全連接層

       Output層也是全連接層,共有10個節點,分別代表數字0到9,且如果節點i的值爲0,則網絡識別的結果是數字i。採用的是徑向基函數(RBF)的網絡連接方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:

網絡解析(一):LeNet-5詳解

     上式w_ij 的值由i的比特圖編碼確定,i從0到9,j取值從0到7*12-1。RBF輸出的值越接近於0,則越接近於i,即越接近於i的ASCII編碼圖,表示當前網絡輸入的識別結果是字符i。該層有84x10=840個參數和連接。

網絡解析(一):LeNet-5詳解

上圖是LeNet-5識別數字3的過程。

總結

  • LeNet-5是一種用於手寫體字符識別的非常高效的卷積神經網絡。
  • 卷積神經網絡能夠很好的利用圖像的結構信息。
  • 卷積層的參數較少,這也是由卷積層的主要特性即局部連接和共享權重所決定。

 參考:http://cuijiahua.com/blog/2018/01/dl_3.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章