為了更一步學習卷積神經網絡之卷積層,本文我們來通過幾個個例子來加深理解。
一、灰度圖像和彩色圖像的關于特征映射的例子
下面我們通過2個例子來形象說明卷積層中“特征映射”的概念,一個針對灰度圖像,一個針對彩色圖像。
例子 1:灰度圖像的特征映射
假設:
- 輸入:一幅 5×5 的灰度圖像,像素值如下
- 卷積核(濾波器):一個簡單的邊緣檢測核
過程:
- 卷積核在圖像上以一定步幅滑動(這里采用步長為1),每次取出 3×3 的局部區域。
- 對每個局部區域,將該區域的像素與卷積核中對應的權重逐元素相乘,再求和,得到一個輸出值。
- 所有輸出值排列成一個新的矩陣,這個矩陣就是該卷積核對輸入圖像生成的“特征映射”。例如,如果在某個區域上存在明顯的水平邊緣,那么這個局部區域經過卷積后會產生較大的正值或負值,從而在特征映射中形成明顯的響應。
直觀理解:
- 這個卷積核專門檢測左右方向上(水平)的亮度差異,能“捕捉”到邊緣信息。
- 在輸出的特征映射中,響應值較大的位置表示原始圖像中在這些位置出現了該卷積核關注的特征(例如邊緣)。
例子 2:彩色圖像的特征映射
假設:
- 輸入:一張 32×32 的彩色圖像(RGB),其形狀為 32×32×3。這里每個像素有紅、綠、藍三個通道的值。
- 卷積層:采用一個 3×3 的卷積核,但由于輸入有三個通道,卷積核的尺寸為 3×3×3。例如,我們設計一個檢測邊緣的濾波器,其三個通道的權重可能相同,也可能不同(設計者可以根據任務調整)。假設我們用下面的核來檢測垂直邊緣:
過程:
- 卷積核同時在三個通道上執行卷積操作。具體來說,對于圖像上某個局部區域,將三個通道分別與對應的 3×3 核進行逐元素乘積求和,然后將三個通道的結果相加,再加上偏置(如果有)并通過激活函數,生成該位置上的輸出值。
- 輸出的結果是一個二維的特征圖,其每個值表示該局部區域中是否存在垂直邊緣這一特征。
- 如果卷積層有多個卷積核(例如16個),則會產生16個不同的特征映射,每個映射對應一個卷積核提取的不同特征。
直觀理解:
- 跨通道信息整合:卷積核的每個通道參數結合了紅、綠、藍三種顏色信息,幫助網絡同時考慮顏色和形狀特征。
- 局部特征檢測:與灰度圖像的情況類似,每個卷積核只關注圖像的一小塊區域,并產生該區域的特征響應,這些響應通過不同核的堆疊構成了豐富的特征表示,供后續層進一步抽象和分類。
總結
- 灰度圖像:輸入只有一個通道,卷積核在每個局部區域產生一個數值(例如邊緣強度),所有這些數值構成一個二維矩陣,即特征映射。
- 彩色圖像:輸入有RGB三個通道,卷積核尺寸為3×3×3,它會同時處理三個通道信息,并將它們組合成一個響應值,從而得到二維特征圖;多個卷積核可以生成多個特征映射,進一步豐富圖像特征的表達。
這種特征映射的思想是卷積層的核心:通過局部、可重復的運算自動提取輸入數據中具有判別意義的特征,從而為后續的分類或檢測任務提供基礎。
二、卷積層輸出 𝑃 個特征映射的例子
我們可以通過一個具體的二維卷積示例來說明卷積層輸出 PPP 個特征映射時的三維結構表示和過程。下面以一個簡單的灰度圖像為例,假設我們希望通過卷積層輸出 P=2P=2P=2 個特征映射,也就是使用兩個不同的卷積核來提取不同的局部特征。
示例設置
輸入圖像:
我們有一幅 5×5 的灰度圖像 I:
這里每個元素表示一個像素的灰度值。
卷積核:
我們設計兩個 3×3 的卷積核(不考慮翻轉問題,此處直接使用交叉相關運算):
-
卷積核 K1:
這個核通常用于檢測圖像中垂直邊緣(例如:當局部區域從左到右有較大變化時,輸出值會較大)。
-
卷積核 K2:
這個核用于檢測水平邊緣,即當圖像上方和下方的像素值有明顯差異時會產生較大的響應。
卷積方式:
采用無填充(valid convolution)和步幅為1。由于輸入尺寸為5×5,卷積核尺寸為3×3,輸出尺寸為 (5?3+1)×(5?3+1)=3×3。
計算過程
對于 K1? 得到的特征映射 O1
我們逐個計算 O1(i,j) 的值。
-
輸出 (1,1)
取圖像的子矩陣(行1–3,列1–3):卷積計算:
-
輸出 (1,2)
子矩陣(行1–3,列2–4):計算:
-
輸出 (1,3)
子矩陣(行1–3,列3–5):計算:
-
輸出 (2,1)
子矩陣(行2–4,列1–3):計算:
-
輸出 (2,2)
子矩陣(行2–4,列2–4):計算:
-
輸出 (2,3)
子矩陣(行2–4,列3–5):計算:
-
輸出 (3,1)
子矩陣(行3–5,列1–3):計算:
-
輸出 (3,2)
子矩陣(行3–5,列2–4):計算:
-
輸出 (3,3)
子矩陣(行3–5,列3–5):計算:
所以,卷積核 K1 生成的特征映射 O1 為:
對于 K2? 得到的特征映射 O2
同樣計算,使用卷積核 K2?:
類比K1的算法,同理可以得出,卷積核 K2? 生成的特征映射 O2 為:
3. 輸出的三維結構表示
由于我們有兩個卷積核,最終卷積層的輸出由兩個特征映射組成,可以將它們堆疊在一起形成一個三維張量。假設這兩個特征映射分別為 O1? 和 O2,那么輸出張量形狀為:
3×3×2,
其中前兩個維度表示空間尺寸,第三個維度(通道數)即為特征映射的個數 P=2。
4. 總結
- 目的:通過卷積層,我們希望利用多個卷積核分別提取輸入圖像中不同類型的局部特征,每個卷積核產生一個特征映射。
- 例子說明:我們用一個 5×5 灰度圖像和兩個 3×3 卷積核做了具體計算,得到兩個 3×3 的特征映射 O1 和 O2。將它們堆疊后就形成了一個 3×3×2 的輸出張量。
- 直觀理解:每個特征映射都是卷積核在整個輸入上滑動計算得到的局部響應圖,它們共同構成了卷積層的輸出,提供了豐富的特征信息供后續網絡層進一步處理。
這種示例不僅展示了卷積運算的計算過程,也幫助理解卷積層如何通過多個濾波器輸出多個特征映射,從而捕捉圖像中多樣化的局部模式。
三、卷積層中的切片舉例
在卷積神經網絡中,“切片”通常指的是從輸入張量中按照卷積核大小提取出局部區域(即局部感受野)的操作。換句話說,當卷積核在輸入上滑動時,我們實際上是在“切出”一個個小塊,每個小塊就是一個“切片”,然后用該切片與卷積核做逐元素乘積和求和。
通俗解釋
-
局部感受野:想象你有一張大照片,而你用一個固定大小的“窗口”在照片上掃描。每次你把窗口移動到照片的某個部分,這個窗口內的區域就是一個“切片”。卷積操作就是在每個切片上進行計算(乘積求和),檢測該區域內是否存在某種特定模式。
-
多通道情況:如果圖像是彩色的(例如RGB圖像),每個切片不僅包含空間區域的信息,還包含多個通道的數據。假設輸入圖像尺寸為 H×W×C,當你用大小為 k×k 的卷積核時,每個切片實際上是一個 k×k×C 的小塊。卷積核也會有相同的深度,然后對每個切片進行計算。
具體例子
假設有一幅灰度圖像(單通道),尺寸為5×5,如下:
使用一個3×3的卷積核 K:
切片操作示例:
-
當卷積核滑動到圖像左上角時,它覆蓋的子矩陣就是:
在這一步,計算卷積核與這個切片的元素逐一乘積之和,就得到輸出特征映射中(1,1)的位置上的值。
-
當卷積核繼續向右移動一格,提取新的切片:
同樣進行乘積求和,得到輸出特征映射中(1,2)的位置的值。
最終,卷積核在整個圖像上滑動,提取出多個 3×3 的切片,每個切片都參與計算,最終形成一個輸出矩陣(特征映射)。
對于彩色圖像的情況: 假設輸入是一幅彩色圖像,尺寸為 32×32×3,使用一個 3×3 卷積核(實際尺寸為 3×3×3),每次提取的切片是一個包含RGB三個通道的3×3塊。對這個切片,卷積核在每個通道做逐元素乘積求和,再將三個通道的結果加在一起(通常再加上偏置和經過激活函數),生成該位置的輸出值。
總結
“切片”是指卷積過程中,從輸入圖像中按卷積核大小提取局部區域的操作。每個提取出來的小區域都被稱為一個切片,然后與卷積核進行運算得到一個輸出值,這些輸出值排列起來就形成了整個卷積層的特征映射。這一過程保留了輸入的空間結構,同時通過局部運算提取出了有用的特征信息。