Deeplearning.ai卷積神經網路( 1.6 如何做三維卷積)
0、前言
打算對吳恩達老師的Deeplearning課程做一個筆記回顧,大體整理思路為吳老師課堂內容和個人理解,非常基礎無難點,重在備忘分享。
一、三維卷積
我們之前已經學過如何對二維影象做卷積,如下:
但是現實生活中,彩圖比灰度圖遠遠要多,所以我們需要學會在三維立體上如何做卷積操作。
我們從一個例子開始,假如說你不僅想檢測灰度影象的特徵,也想檢測RGB彩色影象的特徵。彩色影象如果是6×6×3,
這裡的3指的是三個顏色通道,分佈對應R,G,B通道
,你可以把它想象成三個6×6影象的堆疊。為了檢測影象的邊緣或者其他的特徵,不是把它跟原來的3×3的過濾器做卷積,而是跟一個三維的過濾器,維度是3×3×3,這樣這個過濾器也有三層,對應紅綠、藍三個通道。
如下圖所示:
圖中的的第一個6代表影象高度,第二個6代表寬度,這個3代表通道的數目。同樣過濾器也有一個高,寬和通道數,並且影象的通道數必須和過濾器的通道數匹配,所以這兩個數(紫色方框標記的兩個數)必須相等。透過卷積後的輸出為4×4的影象,這裡需要注意是輸出並不是4×4×3,而是4×4×1。接下來會詳細介紹!
二、詳細例項
如下圖所示,影象維度為6×6×3,過濾器為3×3×3,最後一個數字通道數必須和過濾器中的通道數相匹配。
按照之前二維卷積的操作,類比到三維卷積,要做的就是把這個3×3×3的過濾器先放到最左上角的位置,這個3×3×3的過濾器有27個數,27個引數就是3的立方。依次取這27個數,然後乘以相應的紅綠藍通道中的數字。先取紅色通道的前9個數字,然後是綠色通道,然後再是藍色通道,乘以左邊黃色立方體覆蓋的對應的27個數,然後把這些數都加起來,就得到了輸出的第一個數字。
接下來的輸出,也是用該過濾器在原影象上移動即可,依次得到卷積後的輸出結果,如下所示:
那麼這些操作有什麼意義呢?或者說在深度學習中有什麼作用?
答案就是提取不同的特徵!!!
比如當我們想檢測影象紅色通道的邊緣,那麼你可以將第一個過濾器設為
,對綠色通道的過濾器全為0,
,對藍色通道的過濾器也全為0,
把這三個堆疊在一起形成一個3×3×3的過濾器,那麼這就是一個檢測垂直邊界的過濾器,但只
對紅色通道有用。
或者如果我們不關心垂直邊界在哪個顏色通道里,我們可以用一個這樣的過濾器,,
,
,
,所以透過設定第二個過濾器引數,你就有了一個邊界檢測器,3×3×3的邊界檢測器,
用來檢測任意顏色通道里的邊界。
所以當過濾器引數的選擇不同,我們就可以得到不同的特徵檢測器,這一點非常重要,在實際應用中,幾乎沒有只提取一個特徵的。下面再詳細一點:
三、多特徵提取
如果我們不僅僅想要檢測垂直邊緣?我們同時想檢測垂直邊緣和水平邊緣,還有45°傾斜的邊緣,還有70°傾斜的邊緣?這個時候怎麼辦
我們的做法是採用不同的過濾器對原影象進行卷積操作,得到4×4的輸出。(第一個)這可能是一個垂直邊界檢測器或者是學習檢測其他的特徵。第二個過濾器可以用橘色來表示,它可以是一個水平邊緣檢測器。
所以和第一個過濾器卷積,可以得到第一個4×4的輸出,然後卷積第二個過濾器,得到另一個不同的4×4的輸出。然後將這兩個輸出堆疊在一起,這樣我們就都得到了一個4×4×2的輸出立方體。
總結來說我們對6×6×3的影象,使用
兩個不同的3×3*3的過濾器,得到兩個4×4的輸出,它們堆疊在一起,形成一個4×4×2的立方體,這裡的2的來源於我們用了兩個不同的過濾器。也就相當於我們對原始6*6*3影象提取了2個不同的特徵。如下圖:
同理,如果我想提取更多的特徵,只需要用不同引數的過濾器進行相同操作的卷積即可,這可是一個非常重要的發現。現在我們已經知道怎麼對立方體做卷積了,也就是已經準備好了實現卷積神經其中一層了,下個影片裡讓我們看看是怎麼做的。
四、卷積視覺化動圖理解
夏衝師弟找到一個例子圖,動圖幫助理解,如下:
- Original Link :
LINK
- The author: Martin Görner
- Twitter: @martin_gorner
- Google +:
http://
plus。google。com/+Martin
Gorne
下節見。
參考:
fengdu78/deeplearning_ai_books