天天看點

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

原創 榮君宇

CNN,作為一個經典的神經網絡模型,我們并不陌生。CNN包含若幹個卷積層和池化層。池化層相對簡單,對于減少神經元數量,功不可沒。而卷積層,才是我們了解的一個難點。 我們知道卷積層可以提取不同的特征。對CNN的訓練,重點就是

訓練出來各種各樣的卷積核來提取特征

。初學者在學習CNN時,往往會面臨一個問題,知道CNN的輸出是如何計算的,也知道如何利用基于鍊式求導法則的反向傳播算法去訓練網絡,卻不知道為什麼CNN能夠提取圖檔特征,卷積核裡面的那幾個數字背後的意義和原理。 今天,我們就從特征提取來分析一下卷積核的作用。

一 對圖像灰階的求導

提取特征,關鍵是要找到特征變化的分界點--

特征的邊緣

。想象一下,特征的邊緣具有什麼特點? 邊緣意味着兩側圖像的灰階變化會很大。對數學比較敏感的同學,一提到變化,會想到導數。導數用來衡量變化率的大小,對于圖像也是如此。下面是一個灰階變化的例子。

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

圖中,原信号代表了原圖象灰階的變化,第二行和第三行分别是對灰階的一階導數和二階導數。對比一階導數圖像和二階導數圖像,可以發現,

二階導數相比于一階導數,對邊緣有着更好的響應

。因為對于灰階漸變區域,二階導數可以識别出圖像漸變區域的邊緣。在實際中,我們可以根據實際情況來決定使用一階導數還是二階導數,在這裡,我們用二階導數來舉例子。

當我們把

圖檔的每一部分區域,依次帶入到二階導數時,對于灰階變化較小或者是均勻變化的區域,我們會得到一個接近0的值,而對于灰階變化大的區域,我們則會得到一個較大的值,進而識别出圖檔的邊緣

二 邊緣提取

先看一個檢測垂直邊緣的例子。下圖是一個矩形,我們希望過濾掉水準的上下邊,而提取出垂直邊。根據之前提到的,我們隻需要計算水準方向上的梯度變化就可以。

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

垂直邊緣提取例子水準方向一階導數:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

水準方向二階導數:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

與之對應的卷積核:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取
有時候,為了對應卷積的概念,會将卷積核沿對角線反轉在做運算.在這裡我們直接采用反轉後的卷積核。

如果不明白為什麼這個是與之對應的卷積核,不要慌,接着往下看。我們根據卷積計算的方法,來算一下。

我們首先從圖檔中取出一塊3*3像素的圖像,與卷積核進行運算。把中心點的坐标當作是x,y。那麼四周的像素坐标也可以通過+1,或-1來得到。

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

卷積後的結果為:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

去除掉乘以0的項:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

發現什麼了嗎?在與提取垂直邊緣的卷積核運算後,得到的就是圖像水準方向的二階導數。當我們滑動卷積核來對整個圖檔卷積時,水準邊緣就會令二階導數取得一個接近于0的值,其餘部分就會得到一個較大的值,進而突出了垂直邊緣。

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

垂直結果 同理我們可以根據同時對水準方向與垂直方向,求二階導數,得到可以同時提取水準邊沿和垂直邊沿的卷積核。

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

與之對應的卷積核:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

其實,這就是

拉普拉斯算子

。 在進一步擴充,任意方向的邊沿提取

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

如果我們将提取出來的邊緣,與原圖疊加,實際上就是在原有的二階導數基礎上再疊加一次f(x,y),即卷積核變成:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

實際效果:

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取
三 總結

在實際的應用中,我們不僅僅會隻針對灰階來提取特征,還會用到顔色的變化,去提取不同的特征。當然卷積提取特征隻是卷積核的功能之一,卷積還可以用來平滑圖像噪點。有時候還會通過1*1的卷積核,通過加大step來起到降維的作用。

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

原文連結

CNN(卷積神經網絡)卷積核的特征提取​mp.weixin.qq.com

cnn卷積神經網絡_CNN(卷積神經網絡)卷積核的特征提取

繼續閱讀