【模型解讀】從LeNet到VGG,看卷積+池化串聯的網路結構
從本篇開始,我們將帶領大家解讀深度學習中的網路的發展。這是深度學習模型解讀第一篇,本篇我們將介紹LeNet,AlexNet,VGGNet,它們都是卷積+池化串聯的基本網路結構。
1 LeNet5
LeNet5【1】有3個卷積層,2個池化層,2個全連線層。卷積層的卷積核都為5*5,stride=1,池化層都為Max pooling,啟用函式為Sigmoid,具體網路結構如下圖:
下面我們詳細解讀一下網路結構,先約定一些稱呼。
我們先約定一些叫法,比如featuremap為28*28*6,卷積引數大小為(5*5*1)*6。其中28*28是featuremap的高度,寬度,6是featuremap的通道數。(5*5*1)*6卷積核表示5*5的高度,寬度,通道數為1的卷積核有6個。你可以把(5*5*1)想象成一個厚度為1,長度,寬度各為5的卷積塊,以下依此類推。
1。Input
輸入影象統一歸一化為32*32。
2。C1卷積層
經過(5*5*1)*6卷積核,stride=1, 生成featuremap為28*28*6。
3。S2池化層
經過(2*2)取樣核,stride=2,生成featuremap為14*14*6。
4。C3卷積層
經過(5*5*6)*16卷積核,stride=1,生成featuremap為10*10*16。
5。S4池化層
經過(2*2)取樣核,stride=2,生成featuremap為5*5*16。
6。C5卷積層
經過(5*5*16)*120卷積核,stride=1, 生成featuremap為1*1*120。
7。F6全連線層
輸入為1*1*120,輸出為1*1*84,總引數量為120*84。
8。Output全連線層 。
輸入為1*1*84,輸出為1*1*10,總引數量為84*10。10就是分類的類別數。
2 AlexNet
2012年,Imagenet比賽冠軍—Alexnet (以第一作者Alex命名)【2】直接重新整理了ImageNet的識別率,奠定了深度學習在影象識別領域的優勢地位。網路結構如下圖:
1。Input
輸入影象為224*224*3。
2。Conv1
經過(11*11*3)*96卷積核,stride=4, (227-11)/4+2=55,生成featuremap為55*55*96。
3。Pool1
經過3*3的池化核,stride=2,(55-3)/2+1=27,生成featuremap為27*27*96。
4。Norm1
local_size=5,生成featuremap為27*27*96。
5。Conv2
經過(5*5*96)*256的卷積核,pad=2,group=2,(27+2*2-5)/1+1=27,生成featuremap為27*27*256。
6。Pool2
經過3*3的池化核,stride=2,(27-3)/2+1=13,生成featuremap為13*13*256。
7。Norm2
local_size=5, 生成featuremap為13*13*256。
8。Conv3
經過(3*3*256)*384卷積核,pad=1, (13+1*2-3)/1+1=13,生成featuremap為13*13*384。
9。Conv4
經過(3*3*384)*384卷積核,pad=1,(13+1*2-3)/1+1=13,生成featuremap為13*13*384。
10。Conv5
經過(3*3*384)*256卷積核,pad=1,(13+1*2-3)/1+1=13,生成featuremap為13*13*256。
11。Pool5
經過(3*3)的池化核,stride=2,(13-3)/2+1=6,生成featuremap為6*6*256。
12。Fc6
輸入為(6*6*256)*4096全連線,生成featuremap為1*1*4096。
13。Dropout6
在訓練的時候以1/2機率使得隱藏層的某些神經元的輸出為0,這樣就丟掉了一半節點的輸出,BP的時候也不更新這些節點,以下Droupout同理。
14。Fc7
輸入為1*1*4096,輸出為1*1*4096,總引數量為4096*4096。
15。Dropout7
生成featuremap為1*1*4096。
16。Fc8
輸入為1*1*4096,輸出為1000,總引數量為4096*1000。
總結:
1。網路比LeNet更深,包括5個卷積層和3個全連線層。
2。使用relu啟用函式,收斂很快,解決了Sigmoid在網路較深時出現的梯度彌散問題。
3。加入了dropout層,防止過擬合。
4。使用了LRN歸一化層,對區域性神經元的活動建立競爭機制,抑制反饋較小的神經元放大反應大的神經元,增強了模型的泛化能力。
5。使用裁剪翻轉等操作做資料增強,增強了模型的泛化能力。預測時使用提取圖片四個角加中間五個位置並進行左右翻轉一共十幅圖片的方法求取平均值,這也是後面刷比賽的基本使用技巧。
6。分塊訓練,當年的GPU沒有這麼強大,Alexnet創新地將影象分為上下兩塊分別訓練,然後在全連線層合併在一起。
7。總體的資料引數大概為240M。
3 VGG
VGGNet【3】主要的貢獻是利用帶有很小卷積核(3*3)的網路結構對逐漸加深的網路進行評估,結果表明透過加深網路深度至16-19層可以極大地改進前人的網路結構。這些發現也是參加2014年ImageNet比賽的基礎,並且在這次比賽中,分別在定位和分類跟蹤任務中取得第一名和第二名。VGGNet的網路結構如下圖:
型別從A到E。此處重點講解VGG16。也就是圖中的型別D。如圖中所示,共有13個卷積層,3個全連線層。其全部採用3*3卷積核,步長為1,和2*2最大池化核,步長為2。
1。Input層
輸入圖片為224*224*3。
2。CONV3-64
經過(3*3*3)*64卷積核,生成featuremap為224*224*64。
3。CONV3-64
經過(3*3*64)*64卷積核,生成featuremap為224*224*64。
4。Max pool
經過(2*2)max pool核,生成featuremap為112*112*64。
5。CONV3-128。
經過(3*3*64)*128卷積核,生成featuremap為112*112*128。
6。 CONV3-128
經過(3*3*128)*128卷積,生成featuremap為112*112*128。
7。Max pool
經過(2*2)maxpool,生成featuremap為56*56*128。
8。CONV3-256
經過(3*3*128)*256卷積核,生成featuremap為56*56*256。
9。CONV3-256
經過(3*3*256)*256卷積核,生成featuremap為56*56*256。
10。CONV3-256
經過(3*3*256)*256卷積核,生成featuremap為56*56*256。
11。Max pool
經過(2*2)maxpool,生成featuremap為28*28*256
12。CONV3-512
經過(3*3*256)*512卷積核,生成featuremap為28*28*512
13。CONV3-512
經過(3*3*512)*512卷積核,生成featuremap為28*28*512。
14。CONV3-512
經過(3*3*512)*512卷積核,生成featuremap為28*28*512。
15。Max pool
經過(2*2)maxpool,生成featuremap為14*14*512。
16。CONV3-512
經過(3*3*512)*512卷積核,生成featuremap為14*14*512。
17。CONV3-512
經過(3*3*512)*512卷積核,生成featuremap為14*14*512。
18。CONV3-512
經過(3*3*512)*512卷積核,生成featuremap為14*14*512。
19。Max pool
經過2*2卷積,生成featuremap為7*7*512。
20。FC-4096
輸入為7*7*512,輸出為1*1*4096,總引數量為7*7*512*4096。
21。FC-4096
輸入為1*1*4096,輸出為1*1*4096,總引數量為4096*4096。
22。FC-1000
輸入為1*1*4096,輸出為1000,總引數量為4096*1000。
總結:
1。 共包含引數約為550M。
2。 全部使用3*3的卷積核和2*2的最大池化核。
3。 簡化了卷積神經網路的結構。04總結LeNet5是早期用於工程應用的網路結構,發展到AlexNet,啟用函式從sigmoid變為relu,加入了Dropout層等操作,引起了新一輪的深度學習熱潮。VGG基本是AlexNet的加強版,深度上是其2倍,引數量大小也是兩倍多。
這三個網路結構本質上都是(卷積+池化)堆疊的網路結構,是深度學習復興以來的第一個有重大工程意義的網路設計系列。
參考文獻
[1] Lécun Y, Bottou L, Bengio Y, et al。 Gradient-based learning applied to document recognition[J]。 Proceedings of the IEEE, 1998, 86(11):2278-2324。
[2] Krizhevsky A, Sutskever I, Hinton G E。 ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems。 Curran Associates Inc。 2012:1097-1105。
[3] Simonyan K, Zisserman A。 Very Deep Convolutional Networks for Large-Scale Image Recognition[J]。 Computer Science, 2014。
——————————————更多相關內容,請閱讀以下資料——————————————
模型解讀系列目錄:
【模型解讀】從LeNet到VGG,看卷積+池化串聯的網路結構
【模型解讀】network in network中的1*1卷積,你懂了嗎
【模型解讀】GoogLeNet中的inception結構,你看懂了嗎
【模型解讀】說說移動端基準模型MobileNets
【模型解讀】pooling去哪兒了?
【模型解讀】resnet中的殘差連線,你確定真的看懂了?
【模型解讀】“不正經”的卷積神經網路
【模型解讀】“全連線”的卷積網路,有什麼好?
【模型解讀】從“區域性連線”回到“全連線”的神經網路
【模型解讀】深度學習網路只能有一個輸入嗎
【模型解讀】從2D卷積到3D卷積,都有什麼不一樣
【模型解讀】淺析RNN到LSTM
【模型解讀】歷數GAN的5大基本結構
阿里天池模型結構設計與最佳化直播:
有三AI知識星球中網路結構1000變,每日更新
有三AI秋季劃模型最佳化組