iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0

今日大綱

  • 卷積神經網路 (CNN)
  • 卷積層 (Covolution layer)
  • 池化層 (Pooling layer)
  • 攤平(Flatten layer)
  • 全連接層(Fully connected layer)
  • CNN特性

卷積神經網路 (CNN)

卷積神經網路經常使用在影像辨識上,像是物件偵測、人臉辨識等。CNN所需要使用到的layer有卷積層、池化層、攤平以及全連接層。下圖為CNN網路的架構圖。
https://ithelp.ithome.com.tw/upload/images/20221006/201456889MAypRrfIR.jpg
圖片來源

卷積層 (Covolution layer)

卷積層的主要目的為特徵提取,將不重要的資訊刪除。
在了解卷積層之前需了解幾個專有名詞

  • 卷積核(kernel),又稱過濾器(filter):常見的大小為3乘3,亦可以自行設定。卷積核為模型所訓練出來的,只需要設定其大小即可。卷積核裡的數值即為權重,它是固定不變的。
  • 特徵圖 (feature map):圖片與卷積核相乘並且相加之後的所有結果。
  • 步幅(stride):每次移動視窗時所走的大小,可以自行設定。

假設今天有張圖片大小為5乘5,卷積核的大小為3乘3,步幅設為1,如下圖。
https://ithelp.ithome.com.tw/upload/images/20221006/2014568884chcmMH4y.jpg

第一次計算時,將這個範圍的數值與卷積核相對應位置的數值相乘,進一步將特徵圖所有的數值相加。
https://ithelp.ithome.com.tw/upload/images/20221006/20145688KqvMvnK34f.jpg

滑動至圖片最後時,將全部的數值列出,就會得到特徵圖。
https://ithelp.ithome.com.tw/upload/images/20221006/20145688kzsZ0nAHrt.jpg

經過計算後,所得到的特徵圖大小會比原本的圖像小,如想保留原尺寸的話,可以使用padding,在原始資料周圍補上0。
https://ithelp.ithome.com.tw/upload/images/20221006/20145688FmiyYDhPiM.png

通常經過卷積層後會加上一層Relu的激活函數,在這個範例中因為沒有任何值小於0,因此特徵圖不會改變。

池化層 (Pooling layer)

池化層分為平均池化層與最大池化層兩種,前者為將滑動視窗裡的值取平均,後者為取最大值,將特徵降維,保留原始特徵的資訊。

在這個範例中,滑動視窗為2乘2,以下為平均池化層的結果。
https://ithelp.ithome.com.tw/upload/images/20221006/201456882siYsDUeVK.png

以下為最大池化層的結果。
https://ithelp.ithome.com.tw/upload/images/20221006/20145688ZZ5wZmILOb.png

攤平(Flatten layer)

將資料輸入至全連接層時,需要將資料攤平,降維成一維的資料。
https://ithelp.ithome.com.tw/upload/images/20221006/20145688wRIOkOJBpd.png

全連接層(Fully connected layer)

最後將一維的資料輸入全連接層進行預測,如果為多類別,激活函數使用softmax,機率最大的類別即為預測值。
https://ithelp.ithome.com.tw/upload/images/20221006/20145688z0RThiZRBu.png

CNN特性

  1. 部分連接:不同於Dense全連接層,卷積層的輸出神經元只連接滑動視窗的神經元。下一層的神經元只會接受到上一層神經元有感知的區域,這個區域稱為感知域 (Reception field)。由於這個特性,輸入特徵減少使得權重也降低,簡化了模型的複雜度。
  2. 權重共享 (Weight sharing):同一個卷積層計算時數值相同,因此需要估計的權重減少,也進一步簡化了模型。

謝謝您的瀏覽,我們明天見!

/images/emoticon/emoticon29.gif

2023/4/9更新
為什麼不直接使用fully connected neural network處理影像呢?

  • 如果使用整張圖片當作input訓練時,維度會很大,例如一張圖片的大小為100x100,彩色圖片又有三個channels,即為RGB,將tensor flatten後,輸入的dimension為30000。如果第一層有64個神經元,那光是第一層就有64x30000個權重,通常一個模型會有好幾個layer,因此才加入receptive field的概念。
  • 影像分類時,只需要擷取幾個重要特徵即能判斷是什麼生物,例如輸入鳥的圖片,從鳥嘴、它的腳等部位就能夠知道是隻鳥,不需要考慮全部的資訊。

上一篇
【Day 22】Keras的優化器 Optimizer
下一篇
【Day 24】自然語言處理-BOW & TF-IDF Natural Language Processing-BOW & TF-IDF
系列文
從機器學習到深度學習 - 30天搞懂常見演算法的基礎理論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言