CNN 入門講解:什麼是卷積

原創文章,一家之言。

個人公眾號:follow_bobo

轉載請通知本人。

今天起,我們要開始講CNN啦,掌聲在哪裡?

CNN 是美國有線電視新聞網(Cable News Network)

『咦,那不是NNK嗎?』

NNK 是日本電視?

『咦,日本電視不是Tokyo hot嗎?』

你平時日本節目,都看些什麼呀?這位同志。

好了,我們今天就來談談CNN

CNN 又叫 Convolutional neural network, 中文名有叫卷積神經網路,它怎麼來的,它有多牛逼,這就不多說了,大家網上查。

希望大家在看之前有一點點基本的computer vision 和CNN 的基本知識。

我們第一部分先講 Convolution,到底什麼是卷積,別忙,大家都用過某美顏軟體吧,

比如我老婆新垣結衣:

美的不要的不要的。。。。。

然後我銳化了一下,變成如下圖所示:

我們會發現,銳化後的圖像邊緣細節的對比度加大了。

然後我強調邊緣,變成如下圖所示:

強調邊緣之後,圖像邊緣細節變的高亮,非邊緣圖像變動暗淡或者模糊,邊緣被突出。

我說你們,能不能別老盯著別人看!

看細節呀!

看變化啊!!

什麼?!

管不住眼?

什麼!????

還管不住手?????!

那我再放一張:

現在呢,看出來了嗎?

你們每天拍拍拍,有沒有想過是如何做到的呢?

對,就是卷積(Convolution)

首先我們先來回顧一下卷積公式:

它的物理意義大概可以理解為:系統某一時刻的輸出是由多個輸入共同作用(疊加)的結果。

放在圖像分析里,f(x) 可以理解為原始像素點(source pixel),所有的原始像素點疊加起來,就是原始圖了。

g(x)可以稱為作用點,所有作用點合起來我們稱為卷積核(Convolution kernel)

卷積核上所有作用點依次作用於原始像素點後(即乘起來),線性疊加的輸出結果,即是最終卷積的輸出,也是我們想要的結果,我們稱為destination pixel.

我們來看看一張圖,你就懂了:

最左邊呢就是我們原始輸入圖像了,中間呢是卷積層,-8就是卷積的結果。

你肯定會問,我為啥要用卷積核,destination pixel 的意義何在,別急,我先挖個坑,我們往下走。

我們先來看看銳化。

圖像的銳化和邊緣檢測很像,我們先檢測邊緣,然後把邊緣疊加到原來的邊緣上,原本圖像邊緣的值如同被加強了一般,亮度沒有變化,但是更加銳利。

(仔細想想卷積的物理意義,是不是彷彿有點卷積的感覺)

但是,我們一般是什麼操作去檢測邊緣呢?

我們先來看一,二階微分。

對於一維函數f(x),其一階微分的基本定義是差值:

我們將二階微分定義成如下差分:

我們首先我們來看邊緣的灰度分布圖以及將一二階微分作用於邊緣上:

我們可以看到,在邊緣(也就是台階處),二階微分值非常大,其他地方值比較小或者接近0 .

那我們就會得到一個結論,微分運算元的響應程度與圖像在用運算元操作的這一點的突變程度成正比,這樣,圖像微分增強邊緣和其他突變(如雜訊),而削弱灰度變化緩慢的區域。

也就是說,微分運算元(尤其是二階微分),對邊緣圖像非常敏感。

很多時候,我們最關注的是一種各向同性的濾波器,這種濾波器的響應與濾波器作用的圖像的突變方向無關。也就是說,各向同性濾波器是旋轉不變的,即將原圖像旋轉之後進行濾波處理,與先對圖像濾波再旋轉的結果應該是相同的

可以證明,最簡單的各向同性微分運算元是拉普拉斯運算元

一個二維圖像函數f(x,y)的拉普拉斯運算元定義為

那麼對於一個二維圖像f(x,y),我們用如下方法去找到這個拉普拉斯運算元:

這個結果看起來太複雜,我們能不能用別的方式重新表達一下,如果我們以x,y 為坐標軸中心點,來重新表達這個運算元,就可以是:

等等,這個是不是有點和上面提到的卷積核(Convolutional kernel)有點像了?

我們再回到拉普拉斯運算元,

由於拉普拉斯是一種微分運算元,因此其應用強調的是圖像中的灰度突變。

將原圖像和拉普拉斯圖像疊加在一起,從而得到銳化後的結果。

於是模板就變為:

註:如果所使用的模板定義有負的中心係數,那麼必須將原圖像減去經拉普拉斯變換後的圖像,而不是加上他。

上面這個,就是一個銳化卷積核模板了。原始邊緣與它卷積,得到的就是強化了的邊緣(destination pixel),圖像變得更加銳利。

更詳細的介紹,請移步:blog.csdn.net/zouxy09/a

額外再說明一點:

同樣提取某個特徵,經過不同卷積核卷積後效果也不一樣(這是個重點,為什麼說重點,因為CNN裡面卷積核的大小就是有講究的)。

比如說:

可以發現同樣是銳化,下圖5x5的卷積核要比上圖3x3的卷積核效果細膩不少。

說了這麼多,我只想說明,

(1)原始圖像通過與卷積核的數學運算,可以提取出圖像的某些指定特徵(features)。

(2)不同卷積核,提取的特徵也是不一樣的。

(3)提取的特徵一樣,不同的卷積核,效果也不一樣。

我為啥子要說這些,是因為,CNN實際上也就是一個不斷提取特徵,進行特徵選擇,然後進行分類的過程,卷積在CNN里,就是充當前排步兵,首先對原始圖像進行特徵提取。所以我們首先要弄懂卷積在幹什麼,才能弄懂CNN。

下一期將講卷積在CNN是怎麼運作的。

有什麼疑問或者建議,請在下方留言哦,我會選擇性(我懂的)回答。


推薦閱讀:

「人工智慧入門」為什麼大家都在談論 AI?
演算法比數據和計算更重要,AlphaGo Zero自學3天100:0完爆舊狗
格靈深瞳 DeepGlint 跟商湯科技 SenseTime 在布希么局?
機器視覺、機器學習及相關從業人員每天必看的站點有哪些?

TAG:卷积神经网络CNN | 人工智能 | 机器学习 |