一、我認為學習卷積神經網絡必須知道的幾個概念:

1、卷積過程:

我們經常說卷積神經網絡卷積神經網絡,到底什麽才是卷積?網絡層卷積過程到底怎麽實現?我們在這裏借鑒了另一位博客大牛的動態圖來給大家演示一下喺SmarTone online shop網上商店選購最新智能電話可享特別禮遇同優惠,除咗至抵優惠價格,仲有免費送貨服務,SmarTone 甚至免費送埋 12 個月 「 爆芒換新」服務,最啱容易跌手機嘅你,快啲嚟SmarTone Online Shop 選購啦! ,

圖作者文章在此:

http://blog.csdn.net/silence1214/article/details/11809947

我們可以看到,卷積過程其實還是基於一個固定的矩陣,在另外一個矩陣不斷一格一格掃過去的到的數值的和,(註意:這裏的一格一格非常重要,因為涉及後麵的概念:步長→我們不妨想一想當固定矩陣不是一格一格前進的時候,會發生什麽呢?)產生的一個新的矩陣,我們以作為比較會發現:粉紅色矩陣和綠色矩陣在根本上有很大不一樣喺SmarTone online shop網上商店選購最新智能電話可享特別禮遇同優惠,除咗至抵優惠價格,仲有免費送貨服務,SmarTone 甚至免費送埋 12 個月 「 爆芒換新」服務,最啱容易跌手機嘅你,快啲嚟SmarTone Online Shop 選購啦! ,

第一,卷積之後的維數降低了;第二,我們要想想為什麽降維了?(思考:降低維度到底有沒有規律?)

答案是有的:我們發現橙色的固定框為3*3,綠色是5*5,出來是三乘三;

所以規律可以得到:粉紅色最後的卷積結果矩陣維度=綠色矩陣維數-橙色矩陣維數+1

(我們又應該思考:如果我不想最後減少維度,我隻希望卷積,怎麽辦呢?)

2、兩層之間的池化:

我們依然延用博客大牛的另一個動圖(再次點贊做的精細準確!)

我們可以發現其實跟之前沒什麽不一樣:還是以三個矩陣之間的運算,但是我們很容易發現,它並不是一行一行掃過去的,橙色矩陣維度是黃色矩陣的整數倍,所以池化的最終的結論是要把原來的維度減少到1/n.這是池化最根本的原理(當然也有特殊情況。)

(思考點:我們想象一下如果一個19*19的矩陣做池化,會是一種什麽樣的體驗呢?我們不可以縮小整數倍!!答案會在後麵的VGG16裏麵講清楚)

3、第三個知識點是步長的概念:

卷積核(後麵講到VGG16會介紹)移動的步長(stride)小於卷積核的邊長(一般為正方行)時,變會出現卷積核與原始輸入矩陣作用範圍在區域上的重疊(overlap),卷積核移動的步長(stride)與卷積核的邊長相一致時,不會出現重疊現象。

通俗一點其實就是:剛剛說的那個粉紅色矩陣,他每一次移動多少格,格子就是步長!!

4、卷積核:

一個聽起來很高大上的詞語,我們依然用之前的基礎來解釋:通俗易懂:就是粉紅色矩陣的個數!!因為有時候我們要提取的特征非常多非常廣泛,所以需要我們用更多的矩陣來掃(多掃幾遍),那麽粉紅色矩陣的個數就是卷積核個數。

5、Padding:

這個應該是最抽象的概念了:但是也不會特別難呢,就是我們在之前講到第一點:卷積的時候,我拋下了一個問題:

(我們又應該思考:如果我不想最後減少維度,我隻希望卷積,怎麽辦呢?)(現在知道括號的重要性了吧哈哈?

現在我們來解決這個問題:比如:我們需要做一個300*300的原始矩陣,用一個3*3卷積核(粉紅色矩陣)來掃,掃出來,按照之前公式,結果的矩陣應該是:298*298的矩陣,但是這樣很難計算,減得也不多,反而增加我計算難度,還不如池化(pooling)來得幹脆是吧!那我們就在300*300矩陣外麵周圍加一圈“0”,記住,是在外麵外包一層“0”

重點是:這樣的300*300就變成了302*302的矩陣,這樣就可以完全避開卷積後那兩層的抵消。

6、還有一個就是通道的概念:這個不算知識點,僅僅是一個常識詞語,比如一張圖片,有RGB三種顏色,對應三個灰度級別,也就是三個通道了:

更加抽象的圖可以參照下麵的結構:

二、等待已久的VGG16:

VGG16分為16層,我們主要講前麵的前幾層(越詳細越好吧,後麵是一樣的)

——首先教會大家一個看其他神經網絡也是用的辦法:官方數據表格:

看懂一些式子表達:

Conv3-512 → 第三層卷積後維度變成512;

Conv3_2 s=2 → 第三層卷積層裏麵的第二子層,滑動步長等於2(每次移動兩個格子)

好了,我們有了以上的知識可以考試剖析VGG16卷積神經網絡了

三、利用之前的基本概念來解釋深層的VGG16卷及網絡;

【1、從INPUT到Conv1:】

首先兩個黃色的是卷積層,是VGG16網絡結構十六層當中的第一層(Conv1_1)和第二層(Conv1_2),他們合稱為Conv1。

我們主要講述第一個,也就是第一層(Conv1_1),它怎麽把一個300*300*3的矩陣變成一個300*300*64的矩陣?

我們假設藍色框是一個RGB圖像,橙色是一個3*3*3的卷積核,我們對一個三維的27個數求和,然後掃過去,按照第一部分算的得出來的是一維的298*298的矩陣(因為卷積核也是三維所以結果是一維);

然後回想一下什麽是Padding、前麵也講過它的概念了;所以不了一圈的圓,回到了300*300*1;

然後,VGG16這一層安置有64個卷積核,那麽,原來的300*300*1變成300*300*64

於是我們的到了想要的東西;最後的綠色框;

【1、從Conv1到Conv2之間的過度:】

這一步用的Pooling是:2*2*64 s=2;

也就是說,步長是二,滑動的矩陣本身沒有重疊;剛好減半,第三維度64不變;

【3、順利來到Conv2並且結構完全一樣進入Conv3:】

我們知道原來INPUT是300*300*3過了第一層出來時150*150*64

那麽第二層仍然有池化有128個卷積核,聯想推理:

出來的應該是75*75*128;這一步沒有問題,我們繼續往下分析:

【4、進入Conv3的推演:】

可以知道第三層有256個卷積核,包含三層小的卷基層:

【5、從Conv3到Conv4之間的過度:】

池化沒有問題,但是這裏75不是一個偶數怎麽弄,還記得我們第一部分前麵的括號嗎?

就是這樣,我們在75這裏相加了一個一,使之成為76,變成一個偶數,還有一種方法是通過步長的設置這裏先不展開來講了;

【6、後續的步驟】

後麵的方法很簡單,根據我給的那個VGG16的表格查找每一層裏麵有什麽卷積核?多少個?池化的大小?步長多少?是否需要Padding?解決這些問題,你的VGG16就已經完全可以從頭到尾說清楚了SmarTone寬頻頻服務最近又推出咗最新嘅優惠啦!100M SmarTone寬頻平均每個月$100都唔洗!500M同1000M寬嘅價錢都喺維持喺HK$130內。想有咁抵嘅寬頻服務?只要經網上登記 「 ST光纖寛頻 」服務計劃,並喺5月15日前成功啟用,就可以有HK$680月費回贈! !!!

【7、Faster Rcnn的例子】

原文地址:http://www.sohu.com/a/226635996_609569