在上一講中,我們對(duì)卷積神經(jīng)網(wǎng)絡(luò)中的卷積操作進(jìn)行了詳細(xì)的解讀,但僅僅是對(duì)二維圖像,即通道數(shù)為 1 的圖像(灰度圖)進(jìn)行了卷積,對(duì)于三維或者更高維的圖像卷積顯然并沒有這么簡單。
如果圖像大小為 6*6*3,那么這里的 3 指的是三個(gè)顏色通道,你可以將其理解為 3 個(gè) 6*6 的圖像的堆疊,如果要對(duì)此圖像進(jìn)行卷積的話,我們的濾波器也需要變成三維的,假設(shè)采用一個(gè) 3*3*3 的濾波器對(duì)其進(jìn)行卷積(這里需要注意的是,濾波器的通道數(shù)一定要等于輸入圖像的通道數(shù)),根據(jù) ((n+2p-f)/s)+1 的計(jì)算公式我們可以知道輸出圖像的大小為 4*4*1,由一個(gè)濾波器進(jìn)行卷積之后輸出圖像的通道不是 3 而是 1 了。
那么究竟如何理解三通道的卷積過程?單通道的卷積操作我們已經(jīng)知道,就是直接對(duì)感受野與濾波器進(jìn)行元素相乘求和,那三通道呢?我們可以將 3*3*3 的濾波器想象為一個(gè)三維的立方體,為了計(jì)算立方體濾波器在輸入圖像上的卷積操作,我們首先將這個(gè)三維的濾波器放到左上角,讓三維濾波器的 27 個(gè)數(shù)依次乘以紅綠藍(lán)三個(gè)通道中的像素?cái)?shù)據(jù),即濾波器的前 9 個(gè)數(shù)乘以紅色通道中的數(shù)據(jù),中間 9 個(gè)數(shù)乘以綠色通道中的數(shù)據(jù),最后 9 個(gè)數(shù)乘以藍(lán)色通道中的數(shù)據(jù)。將這些數(shù)據(jù)加總起來,就得到輸出像素的第一個(gè)元素值。如下圖所示:
這樣做可能還不夠。在實(shí)際圖像處理中,僅靠單濾波器很難將復(fù)雜的圖像特征進(jìn)行充分提取。所以,通常而言,我們用來進(jìn)行卷積的濾波器遠(yuǎn)不止一個(gè)。下面我們用兩個(gè)濾波器對(duì)上述圖像進(jìn)行卷積操作。
我們用第一個(gè)濾波器進(jìn)行卷積得到一個(gè) 4*4 的輸出,然后用第二個(gè)濾波器進(jìn)行卷積又得到一個(gè) 4*4 的輸出,將這個(gè)輸出放到第一個(gè)輸出后面,形成了一個(gè) 4*4*2 的輸出,這里的 2 的就是濾波器的個(gè)數(shù)。
關(guān)于多通道卷積的另一種理解類似于 DNN 中的標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中的 Z=Wx+b 的線性計(jì)算,其中 x 為輸入的原始圖像,W 為濾波器,b 偏差項(xiàng),卷積過程就類似與標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)的線性計(jì)算,完了之后利用激活函數(shù)進(jìn)行激活。還有一個(gè)關(guān)鍵問題就是卷積層有多少參數(shù),卷積層的參數(shù)通常在于濾波器 W,根據(jù)濾波器的大小,我們可以計(jì)算一個(gè)濾波器的參數(shù)數(shù)量為 f*f*nc,其中 nc 為通道熟量,那 k 個(gè)濾波器所含的參數(shù)數(shù)量則為 f*f*nc*k。
卷積過程到此就差不多解釋完了。我們?cè)倏?CNN 的另一個(gè)重要操作——池化(pooling)。簡單來說,池化層是用來縮減模型大小,提高模型計(jì)算速度以及提高所提取特征的魯棒性。池化操作通常有兩種,一種是常用的最大池化(max pooling),另一種是不常用的平均池化(average pooling)。池化操作過程也非常簡單,假設(shè)池化層的輸入為一個(gè) 4*4 的圖像,我們用最大池化對(duì)其進(jìn)行池化,執(zhí)行最大池化的樹池是一個(gè) 2*2 的矩陣,執(zhí)行過程就是將輸入矩陣拆分為不同區(qū)域,對(duì)于 2*2 的輸出而言,輸出的每個(gè)元素都是其對(duì)應(yīng)區(qū)域的最大元素值。
最大池化過程就像是應(yīng)用了一個(gè) 2*2 的濾波器以步幅 2 進(jìn)行區(qū)域最大化輸出操作。所以簡單而言,池化的參數(shù)就是濾波器的大小 f 和步幅 s,池化的效果就相當(dāng)于對(duì)輸入圖像的高度和寬度進(jìn)行縮小。值得注意的是,最大池化只是計(jì)算神經(jīng)網(wǎng)絡(luò)某一層的靜態(tài)屬性,中間并沒有什么學(xué)習(xí)過程。
池化完成之后就是標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中的全連接層了。全連接層我們?cè)?DNN 中有詳細(xì)介紹,這里就不再贅述??傊粋€(gè)典型的卷積層通常包括卷積層-池化層和全連接層。
下一講中,我們將一起嘗試如何利用 numpy 實(shí)現(xiàn)一個(gè)簡單的典型的卷積神經(jīng)網(wǎng)絡(luò)。
本文由《自興動(dòng)腦人工智能》項(xiàng)目部 凱文 投稿。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4772瀏覽量
100807 -
人工智能
+關(guān)注
關(guān)注
1791文章
47314瀏覽量
238643 -
卷積神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
4文章
367瀏覽量
11867
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論