Day 14:卷積 (Convolution) 的核心概念
在 CNN 的結構中,卷積 (Convolution) 是最關鍵的操作。理解它,才能真正知道為什麼 CNN 可以比傳統 DNN 在圖像任務上表現得這麼好。本篇我們要拆解卷積的奧義,從基本運算到常見濾波器,幫你打通這一層的技能。
一、卷積在 CNN 中為什麼重要?
保留空間結構 (spatial structure):不像把圖像展平成向量,卷積能讓相鄰像素之間的關係被保留。參數共享 & 局部感受野 (parameter sharing & local receptive field):一組 Filter 能掃遍整張圖片,減少參數數量,同時每次只看局部區域,降低計算複雜度。平移不變性 (translation invariance):當物體稍微移動,它仍可能被識別,卷積 + 池化有助於這種穩健性。卷積讓 CNN 用少量的參數、有效率地從圖像中提取普遍有用的局部特徵。
二、卷積運算原理
Filter / Kernel
濾波器 (又稱 Kernels、Masks) 是一個小矩陣(例如 3×3、5×5),其元素通常是可訓練的權重 (weights)。
它就像是一把掃描器,負責偵測特定類型的特徵(像邊緣、紋理、斜線等)在圖像中的出現。
滑動 + 點乘加總 (Sliding + Dot Product & Sum)
Filter 在輸入圖像上以一定步幅 (Stride) 滑動,每個位置與對應區域做逐元素乘法,再把乘積加總,形成該位置的輸出值。這樣卷積操作就完成了局部特徵的探測。
Padding / Stride
Padding:在圖像邊緣補零 (zero padding),讓卷積在邊界也能取到完整的滑動區域,保留圖像邊緣細節。
Stride:控制 Filter 每次滑動的步長,Stride > 1 可使輸出圖縮小。卷積層其實就是「滑鏡 + 探測器」的組合,讓網路能看到所有區域是否有該特徵。
三、常見濾波器 (Kernels) 類型與作用
下面是幾種常見的卷積核/濾波器,用於圖像處理/特徵強化,理解它們有助於你感受卷積的威力:
濾波器名稱 | 簡述 | 效果 |
---|---|---|
Identity Kernel | 保持原圖不變 | 輸出 ≒ 輸入 |
平滑 / 模糊 (Blur) | 對鄰近像素取平均或加權平均 | 去噪、柔化邊緣 |
銳化 (Sharpen) | 增強高頻成分(邊緣、細節) | 提升圖像清晰度 |
邊緣檢測 (Edge Detection, Sobel, Prewitt) | 偵測像素強度急劇變化 | 強化輪廓線條 |
高斯模糊 (Gaussian Blur) | 用高斯分布加權平滑 | 常用於降噪前處理 |
在 CNN 訓練初期,這些 Filter 的權重是隨機初始化的,隨著學習,模型會慢慢學會什麼樣的卷積核對該任務最有用。
四、卷積層在現代 CNN 的變種
除了最基本的卷積操作,現在主流網路還有幾個對卷積做了變種設計,以提升效率或效果:
這些變種是 CNN 在不同應用(如手機模型、語意分割、影像生成)中會遇到的高級技能。