我的新書AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題的教材投影片已製作完成
歡迎各位有需要的教師和博碩文化索取教材

卷積神經網路CNN介紹

卷積神經網路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_sizestrides,分別代表步長和池化的大小,上圖的示例為步長2且池化大小為(2,2)的最大池化層的範例。

如何對彩色圖片做卷積處理

因為彩色圖片為一個RBG圖片

若是黑白圖片為(25,25,1),則相同大小的彩圖形狀會是(25,25,3),因此卷積核的形狀也會從(3,3)變為(3,3,3)

每一個圖層都要算三次然後再加總,總共要三個圖層,因此複雜度從黑白->彩色會增加9倍以上


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!