1. 程式人生 > 其它 >卷積運算(二維、三維)

卷積運算(二維、三維)

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 的輸出立方體。

本文來自部落格園,作者:zhang-X,轉載請註明原文連結:https://www.cnblogs.com/YY-zhang/p/15067799.html