深度學習caffe--手寫字體識別例程(七)—— LeNet-5網絡模型配圖詳解

理解卷積和子採樣 轉載自:https://blog.csdn.net/ljfwz153076024/article/details/94356572

在這裏插入圖片描述
卷積過程:用一個可訓練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,後面的階段就是卷積特徵map),然後加一個偏置bx,得到卷積層Cx;
子採樣過程:鄰域四個像素求和變爲一個像素,然後通過標量W加權,再增加偏置b,然後通過一個sigmoid激活函數,產生一個縮小四倍的特徵映射圖Sx+1

理解用卷積代替全連接

在這裏插入圖片描述

Lenet-5

LeNet-5出自論文Gradient-Based Learning Applied to Document Recognition,是一種用於手寫體字符識別的非常高效的卷積神經網絡。Lenet-5是Yann LeCun提出的,對MNIST數據集的分識別準確度可達99.2%。下面簡要介紹下每層的結構:

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

神經元數量:28286

可訓練參數:(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 * 2+1)* 6 * 14 * 14

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

詳細說明:第一次卷積之後緊接着就是池化運算,使用 2 * 2核 進行池化,於是得到了S2,6個14 * 14的 特徵圖(28/2=14)。S2這個pooling層是對C1中的2 * 2區域內的像素求和乘以一個權值係數再加上一個偏置,然後將這個結果再做一次映射。同時有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個特徵圖。具體如下:
在這裏插入圖片描述
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個連接。
在這裏插入圖片描述
C3與S2中前3個圖相連的卷積結構如下圖所示:
在這裏插入圖片描述
上圖對應的參數爲 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

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

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

詳細說明:S4是pooling層,窗口大小仍然是2*2,共計16個feature map,C3層的16個10x10的圖分別進行以2x2爲單位的池化得到16個5x5的特徵圖。有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層的網絡結構如下:

在這裏插入圖片描述
7、F6層-全連接層
輸入:c5 120維向量

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

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

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

8、Output層-全連接層
Output層也是全連接層,共有10個節點,分別代表數字0到9,且如果節點i的值爲0,則網絡識別的結果是數字i。採用的是徑向基函數(RBF)的網絡連接方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:
在這裏插入圖片描述
上式w_ij 的值由i的比特圖編碼確定,i從0到9,j取值從0到7*12-1。RBF輸出的值越接近於0,則越接近於i,即越接近於i的ASCII編碼圖,表示當前網絡輸入的識別結果是字符i。該層有84x10=840個參數和連接。
在這裏插入圖片描述
上圖是LeNet-5識別數字3的過程。

本來已經打印完論文準備看一下的,結果這週考試加一大堆事情耽誤了,而且論文也比較厚,四十多頁,看的有點慢。過段時間再完善一下。

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