VGG-16网络结构详解
VGG,又叫VGG-16,顧名思義就是有16層,包括13個卷積層和3個全連接層,是由Visual Geometry Group組的Simonyan和Zisserman在文獻《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷積神經網絡模型,該模型主要工作是證明了增加網絡的深度能夠在一定程度上影響網絡最終的性能。其年參加了ImageNet圖像分類與定位挑戰賽,取得了在分類任務上排名第二,在定位任務上排名第一的優異成績。
結構
根據卷積核大小與卷積層數目不同,VGG可以分為6種子模型,分別是A、A-LRN、B、C、D、E,我們常看到的基本是D、E這兩種模型,讓我們看下面官方給出的6種結構圖:
以配置D為例,在卷積層1(conv3-64),卷積層2(conv3-128),卷積層3(conv3-256),卷積層4(conv3-512)分別有64個,128個,256個,512個3X3卷積核,在每兩層之間有池化層為移動步長為2的2X2池化矩陣(maxpool)。在卷積層5(conv3-512)后有全連接層,再之后是soft-max預測層。
這張圖可能會更好地理解:
圖像張量尺寸變化:224->112->56->28->14->7
數據與訓練
1、輸入處理
如果要使用224x224的圖作為訓練的輸入,用S表示圖片最小邊的值,當S=224時這個圖就直接使用,直接將多余的部分減掉;對于S遠大于224的,模型將對圖像進行單尺度和多尺度的剪裁,通過剪切這個圖片中包含object的子圖作為訓練數據。
2、訓練方式
采用帶動量的小批量梯度下降法,來優化目標函數,并且當學習效果較為滿意時,最初加入的學習率權重衰減系數會起作用,會減小學習率,緩慢達到最優解。
3、初始化
若為淺層,則先隨機初始化后訓練,深層采用淺層訓練后的數據作為初始化數據,中間層則隨機初始化。
特色
1、卷積層均采用相同的卷積核參數,這樣就能夠使得每一個卷積層(張量)與前一層(張量)保持相同的寬和高;
2、池化層均采用相同的池化核參數,池化層采用尺寸為2X2,stride=2,max的池化方式,使得池化后的層尺寸長寬為未池化前的1/2;
3、利用小尺寸卷積核等效大尺寸卷積核,2個3X3卷積核的感受野與1個5X5卷積核相當,3個3X3卷積核與1個7X7卷積核相當,故在特征提取效果相當時,多個小卷核與大卷積核相比,學習參數更少,計算量較小,訓練更加快速,還能增加網絡的深度,提升模型性能。
下面用計算說明為什么2個3X3卷積核能代替1個5X5卷積核:
假設feature map是28×28的,假設卷記的步長step=1,padding=0:
使用一層5X5卷積核
由(28?5)/1+1=24可得,輸出的feature map為24X24
使用兩層3X3卷積核
第一層,由(28?3)/1+1=26可得,輸出的feature map為26X26
第二層,由(26?3)/1+1=24可得,輸出的feature map為24X24
故最終尺寸結果相等,用3X3卷積核代替7X7卷積核同理。
實驗結果
單尺度評估
可以看出:
1、增加了LRN層并沒有達到預想的提升效果,反而逆向發展;
2、當網絡深度逐漸增加時,模型準確率逐漸提升;
3、采用多種尺寸圖像訓練效果要比單一尺寸圖像訓練要好。
多尺度評估
可以看出,如果取同一圖像的不同尺寸(產生尺寸抖動)進行訓練,效果比使用單一尺寸圖像要好,并使模型能適應更大范圍的尺寸。
總結
VGG-16網絡憑著16層的深度(在2014年算是很深的網絡),以及巨大的參數量,足以可見VGG有多么強大的擬合能力在當時取得了非常的效果,但同時VGG也有部分不足:
1、巨大參數量導致訓練時間過長,調參難度較大;
2、模型所需內存容量大,VGG的權值文件有500多MB,若想將其應用于移動端或嵌入式系統,較為困難。
初涉深度學習小白一枚,這篇博客參考一些其他博主的文章,若有不足,請指出,望諒解~~
參考文章
[1]:VGG16學習筆記
[2]:【深度學習】全面理解VGG16模型
總結
以上是生活随笔為你收集整理的VGG-16网络结构详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 趣味概率问题:脑洞蒙特卡洛模型,来招聘!
- 下一篇: FlashCS6安装步骤