Convolutional Neural Networks - week 1
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 多次)
所以在 apply convolution operation 前對上一層輸入作 padding 可以維持輸出的 feature map 具有相同的維度,也可保證在邊緣的像素資訊能獲得相同的權重。
這種 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
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