多通道圖像卷積與參數計算(轉載)

原文鏈接:https://blog.csdn.net/liuxiangxxl/article/details/85103411

對於單通道圖像,若利用10個卷積核進行卷積計算,可以得到10個特徵圖;若輸入爲多通道圖像,則輸出特徵圖的個數依然是卷積核的個數(10個)。 
1.單通道多個卷積核卷積計算

 
一個卷積核得到的特徵提取是不充分的,我們可以添加多個卷積核,比如32個卷積核,從而可以學習32種特徵。

2.多通道多個卷積核卷積計算 
圖片:假設圖片的寬度爲width:W,高度爲height:H,圖片的通道數爲D,一般目前都用RGB三通道D=3,爲了通用性,通道數用D表示; 
卷積核:卷積核大小爲K*K,由於處理的圖片是D通道的,因此卷積核其實也就是K*K*D大小的,因此,對於RGB三通道圖像,在指定kernel_size的前提下,真正的卷積核大小是kernel_size*kernel_size*3。 
對於D通道圖像的各通道而言,是在每個通道上分別執行二維卷積,然後將D個通道加起來,得到該位置的二維卷積輸出,對於RGB三通道圖像而言,就是在R,G,B三個通道上分別使用對應的每個通道上的kernel_size*kernel_size大小的核去卷積每個通道上的W*H的圖像,然後將三個通道卷積得到的輸出相加,得到二維卷積輸出結果。因此,若有M個卷積核,可得到M個二維卷積輸出結果,在有padding的情況下,能保持輸出圖片大小和原來的一樣,因此是output(W,H,M)。

下面的圖動態形象地展示了三通道圖像卷積層的計算過程:


 

 分享一些公式計算張量(圖像)的尺寸,以及卷積神經網絡(CNN)中層參數的計算。

以AlexNet網絡爲例,以下是該網絡的參數結構圖。

 

AlexNet網絡的層結構如下:

1.Input:       圖像的尺寸是227*227*3.

2.Conv-1:    第1層卷積層的核大小11*11,96個核。步長(stride)爲4,邊緣填充(padding)爲0。

3.MaxPool-1:     池化層-1對Conv-1進行池化,尺寸爲3*3,步長爲2.

4.Conv-2:    核尺寸:5*5,數量:256,步長:1,填充:2

5.MaxPool-2:     尺寸:3*3,步長:2

6.Conv-3: 核尺寸:3*3,數量:384,步長:1,填充:1

7: Conv-4:   結構同Conv-3.

8. Conv-5:   核尺寸:3*3,數量:256,步長:1,填充:1

9. MaxPool-3: 尺寸:3*3,步長:2

10.FC-1:       全連接層1共有4096個神經元。

11.FC-1:       全連接層2共有4096個神經元。

12.FC-3:       全連接層3共有1000個神經元。

 

接下來,我們對以上的網絡結構進行描述:

1.如何計算張量(圖像)的尺寸;

2.如何計算網絡的總參數;

 

卷積層(Conv Layer)的輸出張量(圖像)的大小

定義如下:

O=輸出圖像的尺寸。

I=輸入圖像的尺寸。

K=卷積層的核尺寸

N=核數量

S=移動步長

P =填充數

輸出圖像尺寸的計算公式如下:

 

輸出圖像的通道數等於核數量N。

示例:AlexNet中輸入圖像的尺寸爲227*227*3.第一個卷積層有96個尺寸爲11*11*3的核。步長爲4,填充爲0.

輸出的圖像爲55*55*96(每個覈對應1個通道)。

 

池化層(MaxPool Layer)的輸出張量(圖像)的大小

定義如下:

O=輸出圖像的尺寸。
I=輸入圖像的尺寸。
S=移動步長
PS=池化層尺寸

輸出圖像尺寸的計算公式如下:

不同於卷積層,池化層的輸出通道數不改變。

示例:每1層卷積層後的池化層的池化層尺寸爲3*3,步長爲2。根據前面卷積層的輸出爲55*55*96。池化層的輸出圖像尺寸如下:

 

輸出尺寸爲27*27*96。

 

全連接層(Fully Connected Layer)的輸出張量(圖像)的大小

全連接層輸出向量長度等於神經元的數量。

 

通過AlexNet改變張量(圖像)的尺寸的結構如下:

在AlexNet網絡中,輸出的圖像尺寸爲227*227*3.

Conv-1,尺寸變爲55*55*96,池化層後變爲27*27*96。

Conv-2,尺寸變爲27*27*256,池化層後變爲13*13*256.

Conv-3,尺寸變爲13*13*384,經過Conv-4和Conv-5變回13*13*256.

最後,MaxPool-3尺寸縮小至6*6*256.

圖像通過FC-1轉換爲向量4096*1.通過FC-2尺寸未改變.最終,通過FC-3輸出1000*1的尺寸張量.

 

接下來,計算每層的參數數量.

Conv Layer參數數量

在CNN中,每層有兩種類型的參數:weights 和biases.總參數數量爲所有weights和biases的總和.

定義如下:

WC=卷積層的weights數量

BC=卷積層的biases數量

PC=所有參數的數量

K=核尺寸

N=核數量

C =輸入圖像通道數

 

卷積層中,核的深度等於輸入圖像的通道數.於是每個核有K*K個參數.並且有N個核.由此得出以下的公式.

示例:AlexNet網絡中,第1個卷積層,輸入圖像的通道數(C)是3,核尺寸(K)是11*11,核數量是96. 該層的參數計算如下:

  計算出Conv-2, Conv-3, Conv-4, Conv-5 的參數分別爲 614656 , 885120, 1327488 和884992.卷積層的總參數就達到3,747,200.

 

MaxPool Layer參數數量

沒有與MaxPool layer相關的參數量.尺寸,步長和填充數都是超參數.

 

Fully Connected (FC) Layer參數數量

在CNN中有兩種類型的全連接層.第1種是連接到最後1個卷積層,另外1種的FC層是連接到其他的FC層.兩種情況我們分開討論.

類型1:連接到Conv Layer

定義如下:

Wcf= weights的數量

Bcf= biases的數量
O= 前卷積層的輸出圖像的尺寸

N = 前卷積層的核數量

F = 全連接層的神經元數量

示例: AlexNet網絡中第1個FC層連接至Conv Layer.該層的O爲6,N爲256,F爲4096.

參數數目遠大於所有Conv Layer的參數和.

 

類型2:連接到FC Layer

定義如下:

Wff= weights的數量

Bff= biases的數量

Pff= 總參數的數量

F= 當前FC層的神經元數量

F-1 = 前FC層的神經元數量

  

示例:AlexNet的最後1個全連接層,   F-1=4096,F=1000 .

 


AlexNet網絡中張量(圖像)尺寸和參數數量

AlexNet網絡中總共有5個卷積層和3個全連接層.總共有62,378,344個參數.以下是彙總表.

Layer Name

Tensor Size

Weights

Biases

Parameters

Input Image

227x227x3

0

0

0

Conv-1

55x55x96

34,848

96

34,944

MaxPool-1

27x27x96

0

0

0

Conv-2

27x27x256

614,400

256

614,656

MaxPool-2

13x13x256

0

0

0

Conv-3

13x13x384

884,736

384

885,120

Conv-4

13x13x384

1,327,104

384

1,327,488

Conv-5

13x13x256

884,736

256

884,992

MaxPool-3

6x6x256

0

0

0

FC-1

4096×1

37,748,736

4,096

37,752,832

FC-2

4096×1

16,777,216

4,096

16,781,312

FC-3

1000×1

4,096,000

1,000

4,097,000

Output

1000×1

0

0

0

Total

     

62,378,344

 

conv-2的計算公式:5X5X96(上一個的核的數量)X256(這個覈對大小)
conv-3的計算公式:3X3X256(上一個核的數量)X384(這個核的數量)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章