VGG16學習筆記


摘要

本文對圖片分類任務中經典的深度學習模型VGG16進行了簡要介紹,分析了其結構,並討論了其優缺點。調用Keras中已有的VGG16模型測試其分類性能,結果表明VGG16對三幅測試圖片均能正確分類。

前言

VGG是由Simonyan 和Zisserman在文獻《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷積神經網絡模型,其名稱來源於作者所在的牛津大學視覺幾何組(Visual Geometry Group)的縮寫。

該模型參加2014年的 ImageNet圖像分類與定位挑戰賽,取得了優異成績:在分類任務上排名第二,在定位任務上排名第一。

結構

VGG中根據卷積核大小卷積層數目的不同,可分為AA-LRN,B,C,D,E共6個配置(ConvNet Configuration),其中以D,E兩種配置較為常用,分別稱為VGG16VGG19

下圖給出了VGG的六種結構配置:

 

上圖中,每一列對應一種結構配置。例如,圖中綠色部分即指明了VGG16所采用的結構。

我們針對VGG16進行具體分析發現,VGG16共包含:

  • 13個卷積層(Convolutional Layer),分別用conv3-XXX表示
  • 3個全連接層(Fully connected Layer),分別用FC-XXXX表示
  • 5個池化層(Pool layer),分別用maxpool表示

其中,卷積層和全連接層具有權重系數,因此也被稱為權重層,總數目為13+3=16,這即是

VGG16中16的來源。(池化層不涉及權重,因此不屬於權重層,不被計數)。

特點

VGG16的突出特點是簡單,體現在:

  1. 卷積層均采用相同的卷積核參數

    卷積層均表示為conv3-XXX,其中conv3說明該卷積層采用的卷積核的尺寸(kernel size)是3,即寬(width)和高(height)均為3,3*3很小的卷積核尺寸,結合其它參數(步幅stride=1,填充方式padding=same),這樣就能夠使得每一個卷積層(張量)與前一層(張量)保持相同的寬和高。XXX代表卷積層的通道數。

  2. 池化層均采用相同的池化核參數

    池化層的參數均為2××2,步幅stride=2,max的池化方式,這樣就能夠使得每一個池化層(張量)的寬和高是前一層(張量)的1212。

  3. 模型是由若干卷積層和池化層堆疊(stack)的方式構成,比較容易形成較深的網絡結構(在2014年,16層已經被認為很深了)。

綜合上述分析,可以概括VGG的優點為: Small filters, Deeper networks.

 

塊結構

我們注意圖1右側,VGG16的卷積層和池化層可以划分為不同的塊(Block),從前到后依次編號為Block1~block5。每一個塊內包含若干卷積層一個池化層。例如:Block4包含:

  • 3個卷積層,conv3-512
  • 1個池化層,maxpool

並且同一塊內,卷積層的通道(channel)數是相同的,例如:

  • block2中包含2個卷積層,每個卷積層用conv3-128表示,即卷積核為:3x3x3,通道數都是128
  • block3中包含3個卷積層,每個卷積層用conv3-256表示,即卷積核為:3x3x3,通道數都是256

下面給出按照塊划分的VGG16的結構圖,可以結合圖2進行理解:

 

VGG的輸入圖像是 224x224x3 的圖像張量(tensor),隨着層數的增加,后一個塊內的張量相比於前一個塊內的張量:

  • 通道數翻倍,由64依次增加到128,再到256,直至512保持不變,不再翻倍
  • 高和寬變減半,由 2241125628147

權重參數

盡管VGG的結構簡單,但是所包含的權重數目卻很大,達到了驚人的139,357,544個參數。這些參數包括卷積核權重全連接層權重

  • 例如,對於第一層卷積,由於輸入圖的通道數是3,網絡必須學習大小為3x3,通道數為3的的卷積核,這樣的卷積核有64個,因此總共有(3x3x3)x64 = 1728個參數
  • 計算全連接層的權重參數數目的方法為:前一層節點數×本層的節點數前一層節點數×本層的節點數。因此,全連接層的參數分別為:
    • 7x7x512x4096 = 1027,645,444
    • 4096x4096 = 16,781,321
    • 4096x1000 = 4096000

FeiFei Li在CS231的課件中給出了整個網絡的全部參數的計算過程(不考慮偏置),如下圖所示:

圖中藍色是計算權重參數數量的部分;紅色是計算所需存儲容量的部分。

VGG16具有如此之大的參數數目,可以預期它具有很高的擬合能力;但同時缺點也很明顯:

    • 即訓練時間過長,調參難度大。
    • 需要的存儲容量大,不利於部署。例如存儲VGG16權重值文件的大小為500多MB,不利於安裝到嵌入式系統中。

實踐

詳見引用博客

原文鏈接:http://deanhan.com/2018/07/26/vgg16/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM