Lenet5和VGG16介紹

Lenet5和VGG16
Lenet5

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

1、INPUT層-輸入層
首先是數據 INPUT 層,輸入圖像的尺寸統一歸一化爲3232。
注意:本層不算LeNet-5的網絡結構,傳統上,不將輸入層視爲網絡層次結構之一。
2、C1層-卷積層
輸入圖片:32
32
卷積核大小:55
卷積核種類:6
輸出featuremap大小:28
28 (32-5+1)=28
神經元數量:28286
可訓練參數:(55+1) * 6(每個濾波器55=25個unit參數和一個bias參數,一共6個濾波器)
連接數:(55+1)62828=122304
詳細說明:對輸入圖像進行第一次卷積運算(使用 6 個大小爲 55 的卷積核),得到6個C1特徵圖(6個大小爲2828的 feature maps, 32-5+1=28)。我們再來看看需要多少個參數,卷積核的大小爲55,總共就有6(55+1)=156個參數,其中+1是表示一個核有一個bias。對於卷積層C1,C1內的每個像素都與輸入圖像中的55個像素和1個bias有連接,所以總共有1562828=122304個連接(connection)。有122304個連接,但是我們只需要學習156個參數,主要是通過權值共享實現的。
3、S2層-池化層(下采樣層)
輸入:2828
採樣區域:2
2
採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果通過sigmoid
採樣種類:6
輸出featureMap大小:1414(28/2)
神經元數量:14
146
連接數:(2
2+1)61414
S2中每個特徵圖的大小是C1中特徵圖大小的1/4。
詳細說明:第一次卷積之後緊接着就是池化運算,使用 2
2核 進行池化,於是得到了S2,6個1414的 特徵圖(28/2=14)。S2這個pooling層是對C1中的22區域內的像素求和乘以一個權值係數再加上一個偏置,然後將這個結果再做一次映射。同時有5x14x14x6=5880個連接。
4、C3層-卷積層
輸入:S2中所有6個或者幾個特徵map組合
卷積核大小:55
卷積核種類: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*(355+1)+6*(455+1)+3*(455+1)+1*(655+1)=1516
連接數:10101516=151600
詳細說明:第一次池化之後是第二次卷積,第二次卷積的輸出是C3,16個10x10的特徵圖,卷積核大小是 55. 我們知道S2 有6個 1414 的特徵圖,怎麼從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相連。卷積核大小依然爲55,所以總共有6(355+1)+6*(455+1)+3*(455+1)+1*(655+1)=1516個參數。而圖像大小爲10*10,所以共有151600個連接。

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

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

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

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

5、S4層-池化層(下采樣層)
輸入:1010
採樣區域:2
2
採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果通過sigmoid
採樣種類:16
輸出featureMap大小:55(10/2)
神經元數量:5
516=400
連接數:16
(22+1)55=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全相連)
卷積核大小:55
卷積核種類:120
輸出featureMap大小:1
1(5-5+1)
可訓練參數/連接:120*(1655+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輸出的計算方式是:
yi=j(xjwij)2y_{i}=\sum_{j}\left(x_{j}-w_{i j}\right)^{2}
上式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是一種用於手寫體字符識別的非常高效的卷積神經網絡。
  • 卷積神經網絡能夠很好的利用圖像的結構信息。
  • 卷積層的參數較少,這也是由卷積層的主要特性即局部連接和共享權重所決定。

vgg16
在這裏插入圖片描述

  1. 網絡開始輸入(3,224,224)的圖像數據,即一張寬224,高244的彩色RGB圖片,同時補了一圈0
  2. ZeroPadding2D((1,1) 這個函數是指在橫向和縱向,即四周都補0
  3. 接着是卷積層。有64個(3,3)的卷積核,激活函數是relu , model.add(Convolution2D(64, 3, 3,activation=‘relu’)) 一個卷積核掃完圖片,生成一個新的矩陣,64個就生成64 層。
  4. 接着是補0,接着再來一次卷積。此時圖像數據是64224224, model.add(ZeroPadding2D((1,1)))
    model.add(Convolution2D(64, 3, 3, activation=‘relu’))
  5. 接着是池化,小矩陣是(2,2) ,步長(2,2),指的是橫向每次移動2格,縱向每次移動2格.
    model.add(MaxPooling2D((2,2), strides=(2,2)))
    按照這樣池化之後,數據變成了64112112,矩陣的寬高由原來的224減半,變成了112
  6. 再往下,同理,只不過是卷積核個數依次變成128,256,512,而每次按照這樣池化之後,矩陣都要縮小一半。
  7. 13層卷積和池化之後,數據變成了 51277 然後Flatten(),將數據拉平成向量,變成一維51277=25088
  8. 接着是3個全連接層

卷積
卷積操作相當於特徵提取,卷積核相當於一個過濾器,提取我們需要的特徵。
Padding
卷積操作之後維度變少,得到的矩陣比原來矩陣小,這樣不好計算,而我們只是希望作卷積,所以我們需要Padding,在每次卷積操作之前,在原矩陣外邊補包一層0,可以只在橫向補,或只在縱向補,或者四周都補0,從而使得卷積後輸出的圖像跟輸入圖像在尺寸上一致。
pooling
卷積操作後我們提取了很多特徵信息,相鄰區域有相似特徵信息,可以相互替代的,如果全部保留這些特徵信息就會有信息冗餘,增加了計算難度,這時候池化就相當於降維操作。池化是在一個小矩陣區域內,取該區域的最大值或平均值來代替該區域,該小矩陣的大小可以在搭建網絡的時候自己設置。
Flatten
Flatten 是指將多維的矩陣拉開,變成一維向量來表示。
全連接層
對n-1層和n層而言,n-1層的任意一個節點,都和第n層所有節點有連接。即第n層的每個節點在進行計算的時候,激活函數的輸入是n-1層所有節點的加權。像下面的中間層就是全連接方式。
學習速率
學習速率是指導我們該如何通過損失函數的梯度調整網絡權重的超參數。學習率越低,損失函數的變化速度就越慢。雖然使用低學習率可以確保我們不會錯過任何局部極小值,但也意味着我們將花費更長的時間來進行收斂,特別是在被困在高原區域的情況下。
學習速率對模型收斂到局部極小值(也就是達到最好的精度)的速度也是有影響的。因此,從正確的方向做出正確的選擇意味着我們可以用更短的時間來訓練模型。
優化函數
每個最優化問題都包含一組限定條件(constraint)和一個優化函數 (optimization function),符合限制條件的問題求解方案成爲可行解(feasible solution),使優化函數取得最佳值的可行解稱爲最優解(optimal solution)
epoch
簡單說,epochs指的就是訓練過程中數據將被“輪詢”多少次。
Dropout
爲輸入數據施加Dropout。Dropout將在訓練過程中每次更新參數時隨機斷開一定百分比(rate)的輸入神經元,Dropout層用於防止過擬合。
激活函數
激活函數(Activation Function),就是在人工神經網絡的神經元上運行的函數,負責將神經元的輸入映射到輸出端。引入激活函數是爲了增加神經網絡模型的非線性。沒有激活函數的每層都相當於矩陣相乘。
imagenet的發展歷程
Mnist數據集將初學者領進了深度學習領域,Imagenet數據集在深度學習中尤其是計算機視覺領域掀起了巨大的浪潮。ImageNet項目於2007年由斯坦福大學華人教授李飛飛創辦,目標是收集大量帶有標註信息的圖片數據供計算機視覺模型訓練。ImageNet擁有1500萬張標註過的高清圖片,總共擁有22000類,其中約有100萬張標註了圖片中主要物體的定位邊框。Imagenet數據集是目前深度學習圖像領域應用得非常多的一個數據,關於圖像分類、定位、檢測等研究工作大多基於此數據集展開。ImageNet國際計算機視覺挑戰賽(ILSVRC)就是基於該數據集子集(120萬張圖片,以及1000類的標註),吸引了中美英等7個國家的25支頂尖人工智能團隊參賽,該比賽每年舉辦一次。比賽採用top-5和top-1分類錯誤率作爲模型性能的評測指標。
1、AlexNet(2012年冠軍)
在這裏插入圖片描述
AlexNet特點:

  • 卷積層:5層 ,當時用的還是55,33的大卷積層。
  • 全連接層:3層
  • 深度:8層
    AlexNet將LeNet的思想發揚光大,把CNN的基本原理應用到了很深很寬的網絡中。奠定了深度卷積神經網絡在機器視覺領域的地位。
    2、InceptionNet(2014年冠軍)
    在這裏插入圖片描述
    Inception V1的特點:
  • 22層,比AlexNet 的 8 層或者 VGGNet 的 19 層還要更深;
  • 全局平均池化層(將圖片尺寸變爲1×11×1)取代全連接層;
  • 小卷積核(11,33,55),最大池化層(33)

3、VGGnet(2014年亞軍)
在這裏插入圖片描述
VGG19網絡結構:

  • 卷積層:16層
  • 全連接層:3層
  • 連續使用多層小卷積核(33M)

4、ResNet(2015年冠軍)
在這裏插入圖片描述
ResNet的結構特點:

  • 152層
  • 層之間用到了ShortCutting,減少了訓練的難度。

在ImageNet圖像識別項目中,幾乎所有網絡結構都是基於卷積神經網絡的改進,改進方向一般是網絡的深度(也就是卷積層的個數)、卷積核的個數,卷積核的大小,激活函數以及各層之間的連接方式(跳層連接)等等。在機器視覺的領域基本離不開卷積神經網絡,並且隨着語音識別的,自然語言的發展,卷積神經網絡也在序列處理當中發揮了很強的特徵提取的功能。
參考卷積神經網絡在ImageNet項目中的演進過程

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