深度學習 VGG16網路結構詳解

2021-10-06 18:56:48 字數 3048 閱讀 9459

vgg16的結構層次

vgg16總共有16層,13個卷積層和3個全連線層,第一次經過64個卷積核的兩次卷積後,採用一次pooling,第二次經過兩次128個卷積核卷積後,再採用pooling,再重複兩次三個512個卷積核卷積後,再pooling,最後經過三次全連線。附上,官方的vgg16網路結構圖:

介紹結構圖

首先需要看懂上圖中的一些式子含義,如conv3-64,conv3-125

conv3-64 :是指第三層卷積後維度變成64,同樣地,conv3-128指的是第三層卷積後維度變成128;

input(224x224 rgb image) :指的是輸入大小為224244的彩色影象,通道為3,即2242243;

maxpool :是指最大池化,在vgg16中,pooling採用的是22的最大池化方法(如果不懂最大池化,下面有解釋);

fc-4096 :指的是全連線層中有4096個節點,同樣地,fc-1000為該層全連線層有1000個節點;

padding:指的是對矩陣在外邊填充n圈,padding=1即填充1圈,5x5大小的矩陣,填充一圈後變成7x7大小;

最後補充,vgg16每層卷積的滑動步長stride=1,padding=1,卷積核大小為333;

vgg16模型所需要的記憶體容量

此處引用大佬的一張來說明:

上圖,非常清晰地展示了每經過一次卷積或pooling後,所需要占用的記憶體,以及需要傳送的權重值個數。

介紹卷積中的基本概念

什麼是卷積? 最直觀的解釋,直接上圖(引用網上最火的)

image為需要進行卷積的,而convolved feature為卷積後得到的特徵圖;那麼什麼是卷積的過濾器也就是filter呢?圖中黃色矩陣即為filter,image為5x5大小的一維影象,filter為3x3大小的一維矩陣;卷積過程是:filter與image對應位置相乘再相加之和,得到此時中心位置的值,填入第一行第一列,然後在移動乙個格仔(stride=1),繼續與下乙個位置卷積…最後得到是3x3x1的矩陣。

——這裡需要註明:卷積後的結果矩陣維度=(image矩陣維數-filter矩陣維數+2xpad)/2+1,對應上圖即寬width:3=(5-3+2x0)/1+1,高height:3=(5-3+2x0)/1+1;

如果還不懂,請接著看下圖(為博主自己手寫的卷積過程圖)

在這裡補充經過padding填充,那麼卷積後大小不會發生改變,如5x5的影象大小,padding=1變成7x7,再用3x3的filter進行卷積,那麼卷積後的寬高為(7-3+2x1)/1+1=7。

什麼是maxpool? 最大池化就是取filter對應區域內最大畫素值替代該畫素點值,其作用是降維。在這裡,池化使用的濾波器都是2*2大小,因此池化後得到的影象大小為原來的1/2。下圖為最大池化過程:

介紹完基本概念之後,就開始進入到理解vgg16的網路模型了

1.從input到conv1:

由於224不太好計算,那麼這裡使用input大小為300x300x3舉例:

首先兩個黃色的是卷積層,是vgg16網路結構十六層當中的第一層(conv1_1)和第二層(conv1_2),合稱為conv1。

那麼,第一層怎麼將300x300x3的矩陣變成乙個300x300x64的呢??

假設rgb影象為藍色框,橙色方塊為3x3x3的卷積核(即filter),那麼卷積後得到的影象應為298x298x1(此處沒有進行padding,步長為1),但是經過填充一圈的矩陣,所以得到的結果為300x300x1,在這層中有64個卷積核,那麼原來的300x300x1就變成了300x300x64。

2.從conv1到conv2之間的過渡:

在上面的結構圖可以看到,第一層卷積後要經過pooling,才到第二層,那麼:

這層,pooling使用的filter是2x2x64,且步長為2,那麼得到的矩陣維數剛好為原來的一半,第三個維度64不改變,因為那個指的是filter個數。

3.conv2到conv3:

我們從上面的過程中知道了,input為300x300x3的,經過第一層之後變成150x150x64,那麼第二層裡面有128個卷積核,可以推出經過第二層後得到是75x75x128。

4.進入conv3:

可知,第三層有256個卷積核,那麼得到就是75x75x256

5.從conv3到conv4之間的過渡:

這裡75是奇數,經過pad之後變成偶數76,那麼就得到結果為38x38x256

其餘的過程與上述一樣,最終得到10x10x512。

6.最後到三層全連線fc層

在全連線層中的每乙個節點都與上一層每個節點連線,把前一層的輸出特徵都綜合起來。在vgg16中,第乙個全連線層fc1有4096個節點,上一層pool之後得到是10x10x512=51200個節點,同樣第二個全連線層fc2也有4096個節點,最後乙個fc3有1000個節點。

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...

VGG16網路模型

該網路提出了卷積神經網路的深度增加和小卷積核的使用對網路的最終分類識別效果有很大的作用。後兩個網路對卷積核的開刀的優化方法也證明了這一觀點。在 的實驗中,證明了在大規模影象識別任務中卷積神經網路的深度對準確率的影響。主要的貢獻是利用帶有很小卷積核 3 3 的網路結構對逐漸加深的網路進行評估,結果表明...