1. 程式人生 > >經典神經網路學習(三)——VGG net

經典神經網路學習(三)——VGG net

1.簡介

VGGNet由牛津大學的視覺幾何組(Visual Geometry Group)和Google DeepMind公司的研究員共同提出,是ILSVRC-2014中定位任務第一名和分類任務第二名。其突出貢獻在於證明使用很小的卷積(3*3),增加網路深度可以有效提升模型的效果,而且VGGNet對其他資料集具有很好的泛化能力。到目前為止,VGGNet依然經常被用來提取影象特徵。

VGGNet探索了CNN的深度及其效能之間的關係,通過反覆堆疊3*3的小型卷積核和2*2的最大池化層,VGGNet成功的構築了16-19層深的CNN。
VGG模型的簡圖:

VGG net網路配置情況:

訓練時,輸入是大小為224*224的RGB影象,預處理只有在訓練集中的每個畫素上減去RGB的均值。

為了在公平的原則下探究網路深度對模型精確度的影響,所有卷積層有相同的配置,即卷積核大小為3x3,步長為1,填充為1共有5個最大池化層,大小都為2x2,步長為2共有三個全連線層,前兩層都有4096通道,第三層共1000路及代表1000個標籤類別最後一層為softmax層所有隱藏層後都帶有ReLU非線性啟用函式;經過實驗證明,AlexNet中提出的區域性響應歸一化(LRN)對效能提升並沒有什麼幫助,而且還浪費了記憶體的計算的損耗。

VGGNet有A-E七種結構,從A-E網路逐步變深,但是引數量並沒有增長很多,原因為:引數量主要消耗在最後3個全連線層,而前面的卷積層雖然層數多,但消耗的引數量不大

。不過,卷積層的訓練比較耗時,因為其計算量大。

其中,D和E是常說的VGGNet-16和VGGNet-19。C很有意思,相比於B多了幾個1*1的卷積層,1*1卷積的意義在於線性變換,而輸入的通道數和輸出的通道數不變,沒有發生降維。

下表展示了所有的網路配置,這些網路遵循相同設計原則,只是深度不同。

關於VGG的一些討論:

兩個 3*3 的卷積層串聯相當於 1 個 5*5 的卷積層,即一個畫素會跟周圍 5*5 的畫素產生關聯,可以說感受野大小為 5*5。而 3 個 3*3 的卷積層串聯的效果則相當於 1 個 7*7 的卷積層。除此之外,3 個串聯的 3*3 的卷積層,擁有比 1 個 7*7 的卷積層更少的引數量,只有後者的(3*3*3)/(7*7)=55%。最重要的是,3 個 3*3 的卷積層擁有比 1 個 7*7 的卷積層更多的非線性變換(前者可以使用三次 ReLU 啟用函式,而後者只有一次),使得 CNN 對特徵的學習能力更強

VGGNet 在訓練時有一個小技巧,先訓練級別 A 的簡單網路,再複用 A 網路的權重來初始化後面的幾個複雜模型,這樣訓練收斂的速度更快。在預測時,VGG 採用 Multi-Scale 的方法,將影象 scale 到一個尺寸 Q,並將圖片輸入卷積網路計算。然後在最後一個卷積層使用滑窗的方式進行分類預測,將不同視窗的分類結果平均,再將不同尺寸 Q 的結果平均得到最後結果,這樣可提高圖片資料的利用率並提升預測準確率。在訓練中,VGGNet 還使用了Multi-Scale 的方法做資料增強,將原始影象縮放到不同尺寸 S,然後再隨機裁切 224*224 的圖片,這樣能增加很多資料量,對於防止模型過擬合有很不錯的效果