1. 程式人生 > >筆記——CNN Architectures(cs231n 斯坦福計算機視覺公開課)

筆記——CNN Architectures(cs231n 斯坦福計算機視覺公開課)

常見的 CNN Architectures

  1. LeNet-5

  2. AlexNet 

  3. VGG

  4. GoogLeNet

  5. ResNet

一些計算:

全連線層、卷積、池化操作對於維度的改變:

Fully Connected Layer:暴力拉平操作,不管原來是什麼樣的長*寬*深。

image \: \: \: size:32\times 32\times \times 3 \Rightarrow 3072 \times 1

假設上圖是一個分類神經網路的最後兩層,該全連線層連線著輸出層,輸出層給出十個類別的數值。每一行權重W都表示一個 template,也就是一個類別,比如貓啊狗啊青蛙啊。

         

如圖,左邊粉色塊狀image \: \: \: size:32\times 32\times \times 3,右邊藍色塊狀表示一個卷積核。經過6個5\times 5\times 3的卷積核後

  

得到了一個新的 image:28\times 28\times 6

(所以卷積核會改變輸入的深度)

卷積操作後的輸出:

輸入:W_{1}\times H_{1}\times D_{1}

濾波器:KF\times F\times D_{1}

stride:S

輸出:

W_{2} = \left ( W_{1}-F +2P\right )/S+1

H_{2} = \left ( H_{1}-F +2P\right )/S+1

D2=K

濾波器:K個,一般是2^{x}個。

1. LeNet(1998)

架構:

CONV 1 POOL 1 CONV 2 POOL 2 FC 3 FC 4

細節:

卷積核5\times 5,stride =1

池化層2\times 2,stride =2

2. AlexNet (2012,8 layer)

AlexNet 是ImageNet Large Scale Visual Recognition Challenge (ILSVRC)的第一個 基於CNN的第一名。

架構:

CONV1 - MAX POOL1 -  NORM1 -  CONV2 - MAX POOL2 - NORM2 - CONV3 - CONV4 - CONV5 - Max POOL3 -  FC6 - FC7- FC8

CONV1: 96 個11\times 11 的卷積核, stride=4

CONV1的輸入維度: 227x227x3 images

CONV1的輸出維度:即55\times 55\times 96(提示:\left ( 277-11 \right )/4+1=55

CONV1需要學習的引數:11\times 11\times 3\times 96 = 34848\approx 35K(卷積核的長*寬*深度*數量,深度取決於影象的深度)

(卷積核是需要學習的,96個卷積核一種有多少個數值就是多少個需要被學習的引數)

Note:卷積層CONV1會改變輸出維度的深度,深度為卷積核的數量。因為每一個卷積核都會輸出一個55\times 55

的 feature map,這些 feature map 是疊放的,構成新的深度。

MAX POOL1:3\times 3 , stride=2

MAX POOL1的輸入維度:55\times 55\times 96

MAX POOL1的輸出維度:27\times 27\times 96(相當於對 CONV1層得到的每一個 feature map 做 pooling)

POOL1需要學習的引數:0個

Note:池化層MAX POOL1不會改變輸出維度的深度。

具體維度如下:

INPUT [227x227x3]
CONV1 [55x55x96] 96 11x11 filters at stride 4 pad 0
MAX POOL1 [27x27x96] 3x3 filters at stride 2
NORM1 [27x27x96] Normalization layer
CONV2 [27x27x256] 256 5x5 filters at stride 1 pad 2
MAX POOL2 [13x13x256] 3x3 filters at stride 2
NORM2 [13x13x256]  Normalization layer
CONV3 [13x13x384] 384 3x3 filters at stride 1 pad 1
CONV4 [13x13x384] 384 3x3 filters at stride 1 pad 1
CONV5 [13x13x256] 256 3x3 filters at stride 1 pad 1
MAX POOL3 [6x6x256] 3x3 filters at stride 2
FC6 [4096] 4096 neurons
FC7 [4096] 4096 neurons
FC8 [1000] 1000 neurons (class scores)

3. VGG(2014,19 layer)

和AlexNet 相比,VGG 採用的是更小的卷積核,網路也更深。

VGG 僅採用 3x3, stride 1,pad 1的卷積層,  2x2, stride 2的最大池化層。

 那麼就有一個問題就Q:為什麼VGG 採用更小的卷積核?

從感受野的等效性、引數數量、網路深度的角度來看

3個3\times3,stride=1的卷積核的感受野等於一個7\times7的卷積核,如下圖所示(畫圖果然是理清思路的利器啊利器)。

從感受野的等效性、引數數量、網路深度三個角度來比較,如下表:

3x3的卷積核 1x1的卷積核
相同感受野(7個輸入) 3個 1個
引數量 3\times \left ( 3^{2}\times C^{2} \right ) 7^{2}\times C^{2}
深度 3 1

深度越深,就加入了更多的非線性,大概對神經網路來說是很好的。

持續更新中......

4. GoogLeNet(2014,22 layer)

5. ResNet