author:karen simonyan & andrew zisserman
years:2014,published as a conference ***** at iclr 2015
vggnet是2023年 imagenet large-scalevisual recognition challenge(ilsvrc)競賽的第二名實現的卷積神經網路,第一名是googlenet(谷歌為了紀念lenet)。它的主要貢獻是解決了網路結構設計的乙個重要方面——深度。
至於為什麼這個網路叫vgg,是因為andrew zisserman是牛津大學visual geometry group(視覺幾何組)的,所以叫vgg。
網路的輸入影象時224*224rgb的影象,預處理是對於每乙個畫素減去它們的均值。整體使用的卷積核大小均為3*3,這是表示左/右/上/下/中心這些模式的最小單元。在其中的一層結構使用1*1的卷積核,相當於輸入通道的線性變換。空間池化採用5個池化層max-pooling,大小為2*2。
前面幾層是卷積層的堆疊,卷積層的後面加了3個全連線層,前兩個大小為4096,最後乙個為1000,即1000種類別,最後一層是soft-max。所有隱藏層的啟用函式都是relu,**中會介紹好幾種網路結構,只有其中一種使用了區域性響應歸一化local response normalisation (lrn)。這種歸一化並沒有提高網路的效能,反而增加了記憶體的消耗和計算時間。
表1中主要介紹了從11層的網路a到19層的網路e6中不同的網路結構。
a:和alexnet類似,使用了8個卷積層和3個全連線層,其中卷積層用的都是3*3的卷積核。
a-lrn:在第1層卷積的時候使用了區域性響應歸一化(lrn),實際並沒有提高網路的效能。
b:在結構a的基礎上,stage1和stage2中分別增加乙個3*3的卷積層,一共是10個卷積層和3個全連線層。
c:在結構b的基礎上,stage3,stage4,stage5分別增加乙個1*1的卷積層,一共是13個卷積層和3個全連線層。
d:在結構c的基礎上,stage3,stage4,stage5分別增加乙個3*3的卷積層,一共是13個卷積層和3個全連線層。
e:在結構d的基礎上,stage3,stage4,stage5分別增加乙個3*3的卷積層,一共是16個卷積層和3個全連線層。
各個網路所需的引數所佔的記憶體大小,單位(m),如下:
單尺度評估的實驗結果
第一,我們發現使用區域性響應歸一化的a-lrn在a的基礎上效能並沒有很大提公升,所以在b-e的網路結構中不再使用;
第二,我們發現top-1和top-5的錯誤率隨著神經網路的深度增加而下降。c中使用1 *1的卷積核,增加了額外的非線性,效能比b有所提高;d中3*3的卷積核比c中1*1的效果好。
最後,在訓練時使用scale jittering進行資料增強能有效降低錯誤率。關於scale jittering的介紹,參考了大牛的講解,簡單來說,就是crop size是固定的,而image size是隨機可變的。舉例來說,比如把crop size固定在224×224,而image的短邊可以按比例縮放到[256, 512]區間的某個隨機數值,然後隨機偏移裁剪個224×224的影象區域。
資料增強比較常用的有2種方法:一是使用scale jittering,vgg和resnet模型的訓練都用了這種方法。二是尺度和長寬比增強變換,最早是google提出來訓練他們的inception網路的。我們對其進行了改進,提出supervised data augmentation方法。具體可以參考
多尺度評估的實驗結果
測試集同樣使用scale jittering,若s為單一值,則 q = .若 s ∈ [smin;smax] ,則q = .
本文主要展示了深度對於分類網路的重要性。
簡單地對vgg和alexnet做乙個比較:
相同點:
最後3個全連線層的結構相同;都有5個stage,每個stage之間都使用maxpooling
不同點:
alexnet每個stage只含有乙個卷積層,且卷積核大小為7*7;vgg每個stage含有2-4個卷積層,卷積核大小為3*3。兩個3*3的卷積層連在一起可視為5*5的filter,三個連在一起可視為7*7的filter,假設有c個通道,那麼7*7的卷積需要7*7*c*c=49c2個引數,而3個3*3的只需要3*(3*3*c*c)=27c2個引數,由此可見,小的filter具有更少的引數,所以可以增大其channel。
雖然vgg比alexnet有更多的引數,更深的層次,但是vgg只需要很少的迭代次數就開始收斂,原因如下:
(a)深度和小的濾波器尺寸起到了隱式正則化的作用;
(b)vgg採用了一些預處理,對結構a全部隨機初始化;後面深層的網路用結構a的引數作為前四個卷積層(應該是每個stage中的第乙個conv)和三個全連線層的初始化值,中間層隨機初始化。同時,對初始化的層不減小其學習率,使其在學習過程中改變。使用隨機初始化的層weights服從均值為0,方差為0.01的正態分佈,biases為0.
卷積神經網路之VGG
vgg可以看成是加深版的alexnet,整個網路由卷積層和全連線層疊加而成,和alexnet不同的是,vgg中使用的都是小尺寸的卷積核 3 times3 結構簡潔,如下圖vgg 19的網路結構 對比,前文介紹的alexnet的網路結構圖,是不是有種賞心悅目的感覺。整個結構只有 3 times3 的卷...
深度學習 卷積神經網路
一 卷積神經網路基礎 二 lenet 三 常見的一些卷積神經網路 卷積層的超引數 填充和步幅。步幅 stride 每次卷積核在輸入陣列上滑動的行數與列數。多輸入與輸出通道 將3維陣列除寬高外的一維稱為通道維。1 1卷積層 包含1 1的卷積核的卷積層。1 1卷積核在不改變輸入高寬的情況下調整通道數。如...
深度學習 卷積神經網路
卷積神經網路 convolutional neural networks,cnn 是一類包含卷積計算且具有深度結構的前饋神經網路 feedforward neural networks 是深度學習 deep learning 的代表演算法之一。卷積神經網路具有表徵學習 representation ...