VGG網路結構詳解與模型的搭建

2021-10-03 00:27:32 字數 1584 閱讀 2033

2.使用pytorch搭建vgg並訓練

3.使用tensorflow搭建vgg並訓練

vgg網路是在2023年由牛津大學著名研究組vgg (visual geometry group) 提出,斬獲該年imagenet競賽中 localization task (定位任務) 第一名 和 classification task (分類任務) 第二名。原**名稱是《very deep convolutional networks for large-scale image recognition》,在原**中給出了一系列vgg模型的配置,下面這幅圖是vgg16模型的結構簡圖。

該網路中的亮點: 通過堆疊多個3x3的卷積核來替代大尺度卷積核(在擁有相同感受野的前提下能夠減少所需引數)。

**中提到,可以通過堆疊兩層3x3的卷積核替代一層5x5的卷積核,堆疊三層3x3的卷積核替代一層7x7的卷積核。下面給出乙個示例:使用7x7卷積核所需引數,與堆疊三個3x3卷積核所需引數(假設輸入輸出特徵矩陣深度channel都為c)

如果使用一層卷積核大小為7的卷積所需引數(第乙個c代表輸入特徵矩陣的channel,第二個c代表卷積核的個數也就是輸出特徵矩陣的深度):

如果使用三層卷積核大小為3的卷積所需引數:

經過對比明顯使用3層大小為3x3的卷積核比使用一層7x7的卷積核引數更少

下表是從原**中擷取的幾種vgg模型的配置表,作者嘗試了不同深度的配置(11層,13層,16層,19層),是否使用lrn(local response normalization)以及卷積核1x1與卷積核3x3的差異。

表中的卷積層(conv3-kernels,其中kernels代表卷積核的個數)全部都是大小為3x3,步距為1,padding為1的卷積操作(經過卷積後不會改變特徵矩陣的高和寬)。最大池化下取樣層全部都是池化核大小為2,步距為2的池化操作,每次通過最大池化下取樣後特徵矩陣的高和寬都會縮減為原來的一半。我們通常使用的vgg模型是**中的vgg16(d)配置。根據**中的配置資訊以及剛剛講的卷積層和池化層的詳細引數就能搭建出vgg網路了。

我們通常看到別人在搭建vgg網路時,影象預處理的第一步會將影象的rgb分量分別減去[123.68, 116.78, 103.94]這三個引數。這三個引數是對應著imagenet分類資料集中所有影象的r、g、b三個通到的均值分量。如果你要使用別人在imagenet資料集上訓練好的模型引數進行fine-trian操作(也就是遷移學習)那麼你需要在在影象預處理過程中減去這[123.68, 116.78, 103.94]三個分量,如果你是從頭訓練乙個資料集(不使用在imagenet上的預訓練模型)那麼就可以忽略這一步。

pytorch版本在pytorch_learning資料夾中,tensorflow版本在tensorflow_learning資料夾中.

VGG 網路結構

從圖中可以看出vgg結構由5層卷積層 3層全連線層 softmax輸出層構成,層與層之間使用max pooling 最大池化 分開,所有隱層的啟用單元都採用relu函式。vgg最大的貢獻就是證明了卷積神經網路的深度增加和小卷積核的使用對網路的最終分類識別效果有很大的作用。卷積層部分尺度沒有變化 3 ...

VGG 16網路結構詳解

vgg,又叫vgg 16,顧名思義就是有16層,包括13個卷積層和3個全連線層,是由visual geometry group組的simonyan和zisserman在文獻 very deep convolutional networks for large scale image recognit...

VGG16網路結構

vgg 訓練資料處理過程 let s be the smallest side of an isotropically rescaled training image.各向同性的縮放訓練影象的最小邊 以s 256為例 1.將進行等比例縮放,最小邊長度為256 2.對等比例比變化後的影象隨機擷取224...