卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)
1、基本計算原理
動態(tài)過程:
濾波器(過濾器:filter)的權(quán)值是根據(jù)你要檢測的特征來決定的,在深度學(xué)習(xí)中,也即是要經(jīng)過訓(xùn)練得到。檢測的特征不同,權(quán)值就不一樣。
如上單層的圖像一般表示的是灰白圖,既是沒有顏色的,有顏色的RGB圖像,會包含三個相同大小的圖層,這時對應(yīng)的濾波器也要變成三層,濾波器的層數(shù)(通道數(shù))必須時刻與圖像層數(shù)保持一致。。。
注意輸出的是一個單層圖
因為當一個三通道的過濾器與圖像進行卷積時,是直接對27個數(shù)去加權(quán)計算它們的和得到一個結(jié)果,而不是分層計算。
2、卷積輸出的大小計算
如上兩個例子,5*5的圖像經(jīng)過3*3的濾波器得到一個3*3的結(jié)果,6*6*3d的圖像經(jīng)過3*3*3d的濾波器得到一個4*4*1d的結(jié)果,從單層的例子我們大概已經(jīng)知道了是怎么計算的了,那么接下來轉(zhuǎn)換成公式來表示一下。
由計算可知,每次卷積圖像都會變小,以上還只是步長為1的情況(也即是每次只移動一個),有兩個缺點:
1、每次卷積之后圖像都會縮小,多次卷積之后呢, 可能會變得很小很小
2、會丟掉角落邊緣像素的重要信息,看下面圖像
在上面的邊緣,從左到右像素檢測的次數(shù)分別為1、2、3、2、1,可見角落邊緣只被檢測了一次,而中間可以被檢測多次,這就會導(dǎo)致邊角信息丟失。解決的辦法是加入Padding。
3、加入Padding以及之后的計算
加入Padding的意思是在卷積之前,在原圖像邊緣上加入一層像素(也可以多層),一般也叫做補零(因為大多數(shù)時候我們添加的元素都是0)。
由上圖可知,如果卷積之后要得到與原圖像相同大小的圖像,那么加入的Padding層數(shù)應(yīng)該是(f - 1) / 2,也由此可見,我們用的過濾器 f 一般也是奇數(shù)的,這樣才能整除計算,獲得對稱填充,還有一個原因是奇數(shù)的濾波器會有一個中心點,有時候在計算機視覺計算時,有個中心點會方便很多。
附:Padding = 0的卷積被稱為Valid Convolution為了得到與原圖像大小相同圖像而加入Padding的卷積稱為Same Convolution
3、加入卷積步長(Stride)
以上運算都是基于步長為1的情況,下面看看步長為2的情況:
在卷積運算時,如果濾波器超出了圖像框,一般的操作是不進行運算。
4、三維卷積
(1)原始RGB三維圖
(2)多個濾波器(卷積核)
以上操作都是基于單個濾波器的,無論是單層還是多層,一個濾波器只能檢測一種特征,要檢測多個特征,我們需要多個濾波器。
5、匯總
-
濾波器
+關(guān)注
關(guān)注
161文章
7853瀏覽量
178504 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4776瀏覽量
100948 -
cnn
+關(guān)注
關(guān)注
3文章
353瀏覽量
22265
原文標題:【多圖】CNN之間的計算
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論