Convolutional Neural Networks - week 1

Kevin Chiu
CodingJourney
Published in
3 min readAug 10, 2019

Week 1: Computer Vision

下一篇: week 2

這禮拜介紹的是電腦視覺(Computer Vision, CV),電腦視覺旨在模仿人類在視覺上的辨認,可應用在生活上多個領域,最有名的包含 Image Classification 和 Object Detection

1. Computer Vision

為什麼需要Convolutional Neural Network來做這類的運算?

拿下面的例子來看,一張小圖維度64*64*3 ,尚能以之前的DNN來做運算

但如果一張高解析度的圖1000*1000*3,這時候變會難以運算(要有X_1~X_3 million) 不符成本也造成運算效率低落,因此我們需要CNN來做圖形相關的運算。

2. Edge Detection

這章節便用邊緣偵測來實作CNN

Edge detection使用tensorflow實作,如下所示

為什麼這樣的計算是邊緣偵測呢?

以下圖為例: 正為白色,0為灰階,負為黑色

左邊的圖像經過中間的過濾器(filter)得到右邊的結果(得到中間的白色分線)

3. More Edge Detection

在這章節會學到更多的邊緣偵測,包含正負邊緣的差別(亮到暗&暗到亮)和其他的邊緣偵測方法

範例一: 上圖為亮到暗,下圖為暗到亮,得出的edge值也相反

範例二: 垂直&水平邊緣偵測

右下角的圖: 可以看到紅框的30是從亮到暗的(左下角的3*3紅框)經過過濾器的卷積運算

相反的,藍框的-30是從暗到亮的(左下角的3*3藍框)經過過濾器的卷積運算

介紹其它的過濾器: Sobel、Scharr filter 或是 自己透過back-propagation來設計filter,使filter可以不只有水平垂直filter

4. Padding

Padding(填充): 由於 apply convolution operation 會造成輸出的 feature map 或 output volume 縮小,以及資訊損失(因為在影像邊緣的部分,通常只會被 scan 一次,而不像其他位於影像中間的像素,可以被 scan 多次)

Padding 前

所以在 apply convolution operation 前對上一層輸入作 padding 可以維持輸出的 feature map 具有相同的維度,也可保證在邊緣的像素資訊能獲得相同的權重。

Padding後

這種 padding 的方式被稱為 “same” padding,在 tensorflow 中,提供了另一種 “valid”padding,但這種 padding 模式其實就是沒有任何的 padding。

5. Strided Convolutions 跨步卷積

Strided Convolutions使在卷積過程中,一次跨的不是只有1,而是可以選擇跨越的步數。

Cross-correlation vs. Convolution

在機器學習中,我們習慣用稱之為convolution

在數學定義或是其他領域(訊號..),convolution之前是需要鏡射的過程(如下圖),但是在深度學習這個步驟是不需要的,甚至深度學習中的這個動作其實數學上是稱為Cross-correlation,只是在一般深度學習文獻上,大部分都以Convolution 稱之。

6. Convolutions Over Volume

之前都是看到Convolutions應用在2D圖片上,現在我們將進一步應用在3D維度容積上。

(1)卷積運算在RGB圖像的計算

(2) 多個filter同時運算,組成多維的輸出(filter數量是指特徵數量,因此為了擷取多個特徵,會同時計算多個filter)

7. One Layer of a Convolutional Network

說了這麼多關於卷積網路的應用,我們深入講解當一層的卷積神經網路一些參數和過濾器的計算

複習一下標準的卷積神經網路模型:Z = wa + b

假設現在有10個3*3*3的filter,總共得到280個參數。

因此即使輸入的圖片很大(e.g. 5000*5000) 依然只會經過這280個參數的計算來擷取特徵,這是CNN比DNN更有效率的地方之一。

建構神經網路的參數如下圖

8. Simple Convolutional Network Example

在這章節介紹ConvNet Layer

從左圖到右圖:一開始的39*39*3的圖片,經過兩次filter,得到7*7*40

最後將輸出展開,經過logitic或是softmax得到結果

要建構一個完整個Neural Network,除了ConvNet,還有Pooling & FC layer

9. Pooling Layers

Max pooling 使用頻率遠高於Average pooling

average pooling幾乎很少用到

10. CNN example

講解整個CNN的概念圖:ConvNet Layer-> Pool Layer-> Fully Connect Layer

基本上 Fully Connected Layer(全連接層)的部分就是將之前的結果平坦化之後接到最基本的神經網絡了

11. Why Convolutions?

為什麼使用Convolutions? 他的好處優勢在哪裡?

基本上CNN就是將以上的概念全部結合在一起,形成如下圖

過程中將cost function J最小化:透過一些最佳化方法如(gradient decent, Adam, RMSprop, …),最後完成神經網路模型

#課後assignment1: Convolutional Model: step by step Colab notebook

#課後assignment2 Convolutional Model: application: Colab notebook

--

--