EECS - DLCV2

LAVI

Convolutional Neural Networks, CNN

只要看 local 的區域就好,不需要看整張照片

  • Property I of CNN: Local Connectivity
    • Each neuron takes info only from a neighborhood of pixels.

曾原本的 NN 換到 CNN 上,可以學到多少 ?
3 維的 input,7 維的 output

Global connectivity: 7 x 3 = 21 種特徵
Local connectivity: 3 x 3 = 9 種特徵

透過 local connectivity 使原本需要學習 21 種特徵下降到 9 個特徵

What is a Convolution?

線性的運算機制,使原圖由 filter 過濾後看哪裡有此 pattern

Feature Activation Map #2-> output 出的 feature map,就是 conv output (response)

inner product
讓紅色的 filter 和灰色的 signal 做內積,產生藍色的 output
紅色的 filter 反轉

fliter: 例如眼睛的特徵,透過反過來乘 origin input img,使眼睛這個特徵凸顯出來,就可以過濾出這張圖片中是否有眼睛

藍色寬度為 6,因為 filter 有 6 個
filter 的第三個維度 是 輸入圖的寬度
filter 的個數 是 輸出圖的寬度

cnn 長寬會因為 filter 越來越小
為了 cnn 深度可以有很多層,會透過 padding 來增加,雖然會影響你辨識的特徵,但是實際上在過濾的時候,譬如眼睛的輪廓邊,你也不會那麼介意那個編是不是模糊或差一點點啦

stride = 2 (位移的距離) 每次滑兩隔 在很大張的圖中,其實沒必要每個 pixel 都看,所以 stride 可以幫助節省計算的時間 可以看到在這三乘三的範圍內有沒有 filter 想看到的特徵存在

橘色在學有沒有車窗,藍色在看有沒有車子的整個車門,綠色在看有沒有整台車子的形狀,如果有車子的存在,綠色的值就會很大

Dilated Convolution

等價上用比較少的 learnable 的特徵,去學到比較大的範圍的特徵,但也因為許多細節被丟失,所以都是有所取捨

使用情境: 在 input 很大張,解析度很高的時候,節省計算時間

最後拉成一條一維的 Vector 後再去 MLP 做處理

ReLU (Rectified Linear Unit)

因為只 care 正值,只凸顯正值

Max Pooling

每兩個人,會留下比較強的人,若有多出來的第三個人,那他就是幸運地種子選手,會直接晉級
適者生存,肉弱強食!

透過 Monlinearity 把負的特徵 cut 掉,既然是負的,就不是我們要找的,沒必要紀錄

conv、ReLU、Pooling 可以調換順序,根據需求 MLP 大部分時候放在最後,因為要做分類

有 64 個 filter,output size 第三個維度 C 就是 64
用以計算需要多少 Hyperparameter 存放於記憶體

Number of output elements = C * H’ * W’ = 64 * 56 * 56 = 200704
Bytes per element = 4 (for 32-bit floating point)
KB = (number of elements) * (bytes per elem) / 1024 = 200704 * 4 / 1024 = 784

Weight shape = C_out x C_in x L x L = 64 x 3 x 11 x 11
Bias shape = C_out = 64
Number of weights = 64 * 3 * 11 * 11 + 64 = 23296

Number of floating point operations (multiply + add)
= (number of output elements) * (ops per output element)
= (C_out x H’ x W’) * (C_in x K x K)
= (64 * 56 * 56) * (3 * 11 * 11)
= 200,704 * 363
= 72,855,552

fully connect 的 MLP 要求的參數才是最多的

ResNet

  • How can we train very deep network?
    • Residual learning
    • 就是有捷徑,一個 skip 的 residual connect 的 bypass 的路徑,可以避免 gradient vanish
      深的 model 不見得好

1x1 Conv

雖然是 1x1 但第三維寬度還是會和 origin input 的長寬相同
也就是在做 learnable 的 Dimension reduction

Example 2 可以只做一千萬個乘法
EXample 1 要將近十億

Dropout

把學好的神經元丟掉,使其成為較小的神經網路,但 drop out 後的神經元再也回不來

Data Augmentation

不能真正的解決 overfitting 問題