1 邊緣檢測(Edge detection)
卷積運算是卷積神經網絡最基本的組成部分,看一個例子,這是一個 6×6 的灰度圖像,因為是灰度圖像,所以它是 6×6×1 的矩陣,而不是 6×6×3 的,因為沒有 RGB 三通道,為了檢測圖像中的垂直邊緣,可以構造一個 3×3矩陣,像這樣,它被稱為過濾器,在論文它有時候會被稱為核。對這個 6×6 的圖像進行卷積運算,卷積運算用“∗”來表示,用 3×3的過濾器對其進行卷積。這個卷積運算的輸出將會是一個 4×4 的矩陣,你可以將它看成一個 4×4 的圖像,在 4×4 左上角的那個元素,使用 3×3 的過濾器,將其覆蓋在輸入圖像,如下圖所示,然后進行元素乘法(element-wise products)運算,所以:
,然后將該矩陣每個元素相加,得到左上角元素為-5,其他依次計算得到4×4 的矩陣:
再看一個例子:
為什么這個可以做垂直邊緣檢測呢?這是一個簡單的 6×6 圖像,左邊的一半是 10,右邊一般是 0,左邊那部分看起來是白色的,像素值 10 是比較亮的像素值,右邊像素值比較暗,我使用灰色來表示 0 , 圖片里,有一個特別明顯的垂直邊緣在圖像中間,這條垂直線是從黑到白的過渡線,或者從白色到深色, 當你用一個 3×3 過濾器進行卷積運算的時候,這個 3×3 的過濾器可視化為下面這個樣子,在左邊有明亮的像素,然后有一個過渡,0 在中間,然后右邊是深色的,卷積運算后,你得到的是右邊的矩陣,在輸出圖像中間的亮處,表示在圖像中間有一個特別明顯的垂直邊緣。
還可以檢測出水平的邊緣,此時用到的過濾器是這樣的:,其他操作與上面的垂直邊緣檢測類似,這里不做詳細的解釋。
當然也可以使用這種過濾器:,叫做 Sobel 的過濾器,它的優點在於增加了中間一行元素的權重,這使得結果的魯棒性會更高一些。
或者這種:,這叫做 Scharr 過濾器,它有着和之前完全不同的特性,實際上也是一種垂直邊緣檢測,如果將其翻轉 90 度,就能得到對應水平邊緣檢測。
2 三維卷積(Convolutions over volumes)
假如說你不僅想檢測灰度圖像的特征,也想檢測 RGB 彩色圖像的特征。彩色圖像如果是 6×6×3,這里的 3 指的是三個顏色通道,你可以把它想象成三個 6×6圖像的堆疊。為了檢測圖像的邊緣或者其他的特征,不是把它跟原來的 3×3 的過濾器做卷積,而是跟一個三維的過濾器,它的維度是 3×3×3,,這個 3×3×3 的過濾器有 27 個數,27 個參數就是 3 的立方,這樣這個過濾器也有三層,對應紅綠、藍三個通道,以下兩張圖片詳細說明了三維卷積運算。
理論上,我們的過濾器只關注紅色通道,或者只關注綠色或者藍色通道也是可行的。在卷積運算中,我們也可以使用多個過濾器,下圖寫出了詳細的計算過程,和第一個過濾器卷積,可以得到第一個 4×4 的輸出,然后卷積第二個過濾器,得到一個不同的 4×4 的輸出,我們做完卷積,然后把這兩個 4×4 的輸出,取第一個把它放到前面,然后取第二個過濾器輸出,我把它畫在這,放到后面。所以把這兩個輸出堆疊在一起,這樣你就都得到了一個 4×4×2 的輸出立方體。