大話CNN經典模型:VGGNet

AIBigbull2050發表於2019-10-11
2019-10-10 22:17:35
大話CNN經典模型:VGGNet

2014年,牛津大學計算機視覺組(Visual Geometry Group)和Google DeepMind公司的研究員一起研發出了新的深度卷積神經網路:VGGNet,並取得了ILSVRC2014比賽分類專案的第二名(第一名是GoogLeNet,也是同年提出的)和定位專案的第一名。

VGGNet探索了卷積神經網路的深度與其效能之間的關係,成功地構築了16~19層深的卷積神經網路,證明了增加網路的深度能夠在一定程度上影響網路最終的效能,使錯誤率大幅下降,同時擴充性又很強,遷移到其它圖片資料上的泛化性也非常好。到目前為止,VGG仍然被用來提取影像特徵。

VGGNet可以看成是加深版本的AlexNet,都是由卷積層、全連線層兩大部分構成。卷積神經網路技術原理、AlexNet在本部落格前面的文章已經有作了詳細的介紹,有興趣的同學可開啟連結看看(大話卷積神經網路,大話CNN經典模型:AlexNet)。

一、VGG的特點

先看一下VGG的結構圖

大話CNN經典模型:VGGNet

1、結構簡潔

VGG由5層卷積層、3層全連線層、softmax輸出層構成,層與層之間使用max-pooling(最大化池)分開,所有隱層的啟用單元都採用ReLU函式。

2、小卷積核和多卷積子層

VGG使用多個較小卷積核(3x3)的卷積層代替一個卷積核較大的卷積層,一方面可以減少引數,另一方面相當於進行了更多的非線性對映,可以增加網路的擬合/表達能力。

小卷積核是VGG的一個重要特點,雖然VGG是在模仿AlexNet的網路結構,但沒有采用AlexNet中比較大的卷積核尺寸(如7x7),而是透過降低卷積核的大小(3x3),增加摺積子層數來達到同樣的效能(VGG:從1到4卷積子層,AlexNet:1子層)。

VGG的作者認為兩個3x3的卷積堆疊獲得的感受野大小,相當一個5x5的卷積;而3個3x3卷積的堆疊獲取到的感受野相當於一個7x7的卷積。這樣可以增加非線性對映,也能很好地減少引數(例如7x7的引數為49個,而3個3x3的引數為27),如下圖所示:

大話CNN經典模型:VGGNet

3、小池化核

相比AlexNet的3x3的池化核,VGG全部採用2x2的池化核。

4、通道數多

VGG網路第一層的通道數為64,後面每層都進行了翻倍,最多到512個通道,通道數的增加,使得更多的資訊可以被提取出來。

5、層數更深、特徵圖更寬

由於卷積核專注於擴大通道數、池化專注於縮小寬和高,使得模型架構上更深更寬的同時,控制了計算量的增加規模。

6、全連線轉卷積(測試階段)

這也是VGG的一個特點,在網路測試階段將訓練階段的三個全連線替換為三個卷積,使得測試得到的全卷積網路因為沒有全連線的限制,因而可以接收任意寬或高為的輸入,這在測試階段很重要。

如本節第一個圖所示,輸入影像是224x224x3,如果後面三個層都是全連線,那麼在測試階段就只能將測試的影像全部都要縮放大小到224x224x3,才能符合後面全連線層的輸入數量要求,這樣就不便於測試工作的開展。

而“全連線轉卷積”,替換過程如下:

大話CNN經典模型:VGGNet

例如7x7x512的層要跟4096個神經元的層做全連線,則替換為對7x7x512的層作通道數為4096、卷積核為1x1的卷積。

這個“全連線轉卷積”的思路是VGG作者參考了OverFeat的工作思路,例如下圖是OverFeat將全連線換成卷積後,則可以來處理任意解析度(在整張圖)上計算卷積,這就是無需對原圖做重新縮放處理的優勢。

大話CNN經典模型:VGGNet

二、VGG的網路結構

下圖是來自論文《Very Deep Convolutional Networks for Large-Scale Image Recognition》(基於甚深層卷積網路的大規模影像識別)的VGG網路結構,正是在這篇論文中提出了VGG,如下圖:

大話CNN經典模型:VGGNet

在這篇論文中分別使用了A、A-LRN、B、C、D、E這6種網路結構進行測試,這6種網路結構相似,都是由5層卷積層、3層全連線層組成,其中區別在於每個卷積層的子層數量不同,從A至E依次增加(子層數量從1到4),總的網路深度從11層到19層(新增的層以粗體顯示),表格中的卷積層參數列示為“conv⟨感受野大小⟩-通道數⟩”,例如con3-128,表示使用3x3的卷積核,通道數為128。為了簡潔起見,在表格中不顯示ReLU啟用功能。

其中,網路結構D就是著名的VGG16,網路結構E就是著名的VGG19。

以網路結構D(VGG16)為例,介紹其處理過程如下,請對比上面的表格和下方這張圖,留意圖中的數字變化,有助於理解VGG16的處理過程:

大話CNN經典模型:VGGNet

1、輸入224x224x3的圖片,經64個3x3的卷積核作兩次卷積+ReLU,卷積後的尺寸變為224x224x64

2、作max pooling(最大化池化),池化單元尺寸為2x2(效果為影像尺寸減半),池化後的尺寸變為112x112x64

3、經128個3x3的卷積核作兩次卷積+ReLU,尺寸變為112x112x128

4、作2x2的max pooling池化,尺寸變為56x56x128

5、經256個3x3的卷積核作三次卷積+ReLU,尺寸變為56x56x256

6、作2x2的max pooling池化,尺寸變為28x28x256

7、經512個3x3的卷積核作三次卷積+ReLU,尺寸變為28x28x512

8、作2x2的max pooling池化,尺寸變為14x14x512

9、經512個3x3的卷積核作三次卷積+ReLU,尺寸變為14x14x512

10、作2x2的max pooling池化,尺寸變為7x7x512

11、與兩層1x1x4096,一層1x1x1000進行全連線+ReLU(共三層)

12、透過softmax輸出1000個預測結果

以上就是VGG16(網路結構D)各層的處理過程,A、A-LRN、B、C、E其它網路結構的處理過程也是類似,執行過程如下(以VGG16為例):

大話CNN經典模型:VGGNet

從上面的過程可以看出VGG網路結構還是挺簡潔的,都是由小卷積核、小池化核、ReLU組合而成。其簡化圖如下(以VGG16為例):

大話CNN經典模型:VGGNet

A、A-LRN、B、C、D、E這6種網路結構的深度雖然從11層增加至19層,但引數量變化不大,這是由於基本上都是採用了小卷積核(3x3,只有9個引數),這6種結構的引數數量(百萬級)並未發生太大變化,這是因為在網路中,引數主要集中在全連線層。

大話CNN經典模型:VGGNet

經作者對A、A-LRN、B、C、D、E這6種網路結構進行單尺度的評估,錯誤率結果如下:

大話CNN經典模型:VGGNet

從上表可以看出:

1、LRN層無效能增益(A-LRN)

VGG作者透過網路A-LRN發現,AlexNet曾經用到的LRN層(local response normalization,區域性響應歸一化)並沒有帶來效能的提升,因此在其它組的網路中均沒再出現LRN層。

2、隨著深度增加,分類效能逐漸提高(A、B、C、D、E)

從11層的A到19層的E,網路深度增加對top1和top5的錯誤率下降很明顯。

3、多個小卷積核比單個大卷積核效能好(B)

VGG作者做了實驗用B和自己一個不在實驗組裡的較淺網路比較,較淺網路用conv5x5來代替B的兩個conv3x3,結果顯示多個小卷積核比單個大卷積核效果要好。

最後進行個小結:

1、透過增加深度能有效地提升效能;

2、最佳模型:VGG16,從頭到尾只有3x3卷積與2x2池化,簡潔優美;

3、卷積可代替全連線,可適應各種尺寸的圖片

牆裂建議

2014年,K. Simonyan等人發表了關於VGGNet的經典論文《Very Deep Convolutional Networks for Large-Scale Image Recognition》(基於甚深層卷積網路的大規模影像識別),在該論文中對VGG的思想、測試情況進行了詳細介紹,建議閱讀這篇論文加深瞭解。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2659492/,如需轉載,請註明出處,否則將追究法律責任。

相關文章