【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构
文章首發于微信公眾號《與有三學AI》
【模型解讀】從LeNet到VGG,看卷積+池化串聯的網絡結構
從本篇開始,我們將帶領大家解讀深度學習中的網絡的發展
這是深度學習模型解讀第一篇,本篇我們將介紹LeNet,AlexNet,VGGNet,它們都是卷積+池化串聯的基本網絡結構。
作者&編輯 | 言有三
?
01 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就是分類的類別數。
?
02 ?AlexNet
2012年,Imagenet比賽冠軍—Alexnet?(以第一作者Alex命名)【2】直接刷新了ImageNet的識別率,奠定了深度學習在圖像識別領域的優勢地位。網絡結構如下圖:
1.Input
???輸入圖像為227*227*3。
2.Conv1
???經過(11*11*3)*96卷積核,stride=4,?(227-11)/4+1=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。
?
03 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.
同時,在我的知乎專欄也會開始同步更新這個模塊,歡迎來交流
https://zhuanlan.zhihu.com/c_151876233
注:部分圖片來自網絡
—END—
轉載請留言,侵權必究
本系列的完整目錄:
【模型解讀】從LeNet到VGG,看卷積+池化串聯的網絡結構
【模型解讀】network in network中的1*1卷積,你懂了嗎
【模型解讀】GoogLeNet中的inception結構,你看懂了嗎
【模型解讀】說說移動端基準模型MobileNets
【模型解讀】pooling去哪兒了?
【模型解讀】resnet中的殘差連接,你確定真的看懂了?
【模型解讀】“不正經”的卷積神經網絡
【模型解讀】“全連接”的卷積網絡,有什么好?
【模型解讀】從“局部連接”回到“全連接”的神經網絡
【模型解讀】深度學習網絡只能有一個輸入嗎
【模型解讀】從2D卷積到3D卷積,都有什么不一樣
【模型解讀】淺析RNN到LSTM
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續內容將會不定期奉上,歡迎大家關注有三公眾號 有三AI!
?
?
總結
以上是生活随笔為你收集整理的【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据】深度学习从“数据集”开始
- 下一篇: 【模型解读】network in net