卷積神經網路CNN
卷積神經網路(Convolutional Neural Network,簡稱 CNN)是一種專門用於圖像處理的神經網路。它包含許多卷積層和池化層,可以捕捉圖像中的空間關係和細節。
- 卷積層: Conv2D (tf.keras.layers.Conv2D),使用一個卷積核來提取圖片特徵
- 池化層: MaxPooling2D (tf.keras.layers.MaxPooling2D),通過計算輸入圖像的不同區域的最大值或平均值來進行池化
卷積層(Conv2D)
使用一個卷積核來提取圖片特徵。
以下為其參數設定的介紹: 卷積層(Conv2D)參數設定
卷積層中的每個神經元都有一個濾波器(也稱為卷積核),用來提取圖像的特徵。每個濾波器都有一個指定的大小和深度,並且會在輸入圖像的不同區域進行卷積運算。例如,如果濾波器的大小為 3×3,且深度為 16,則每個濾波器都會提取 3×3 的區域中深度為 16 的特徵。
以下為其計算方法的簡單範例
當有部分的卷積核超出圖片範圍時,有兩種方法去解決:
1. 忽略它: 將padding設定為valid
2. 將整個圖像周圍填充0: 將padding設定為same
池化層(MaxPooling2D)
池化層則是將輸入圖像的大小縮小的層,它的主要功能是對圖像的特徵進行下采樣 (downsampling),降低網絡的計算量並減少過擬合 (overfitting) 的風險。它通過計算輸入圖像的不同區域的最大值或平均值來進行池化。通過池化,可以將圖像中的高維度特徵轉化為低維度特徵、降低計算複雜度,同時還能保留圖像中重要的特徵。
最大值池化層和平均值池化層是兩種常用的池化方法。
最大值池化層對卷積過的特徵圖 (convolutional feature map) 進行下采樣時,會將其中每個子區域 (sub-region) 取出其中的最大值,這樣可以保留最重要的特徵,可以適用於辨識邊緣、輪廓、細節的圖像。
平均值池化層對卷積過的特徵圖進行下采樣時,會將其中每個子區域取出其中的平均值。平均值池化更能保留圖像整體特徵,適用於辨識整體顏色、紋理、形狀等。
記得不同情境需求評估適用池化層種類,並且池化層種類通常與當時訓練資料有關。
下面為一個最大池化層的實作步驟解釋:
池化層有兩個重要參數: pool_size
和strides
,分別代表步長和池化的大小,上圖的示例為步長2且池化大小為(2,2)的最大池化層的範例。
如何對彩色圖片做卷積處理
因為彩色圖片為一個RBG圖片
若是黑白圖片為(25,25,1),則相同大小的彩圖形狀會是(25,25,3),因此卷積核的形狀也會從(3,3)變為(3,3,3)
每一個圖層都要算三次然後再加總,總共要三個圖層,因此複雜度從黑白->彩色會增加9倍以上