機器不學習(jqbxx.com)-機器學習好網站
我們第一部分先講 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),圖像變得更加銳利。
更詳細的介紹,請移步:http://blog.csdn.net/zouxy09/article/details/49080029
額外再說明一點:
同樣提取某個特征,經過不同卷積核卷積后效果也不一樣(這是個重點,為什么說重點,因為CNN里面卷積核的大小就是有講究的)。
比如說:
可以發現同樣是銳化,下圖5x5的卷積核要比上圖3x3的卷積核效果細膩不少。
說了這么多,我只想說明,
(1)原始圖像通過與卷積核的數學運算,可以提取出圖像的某些指定特征(features)。
(2)不同卷積核,提取的特征也是不一樣的。
(3)提取的特征一樣,不同的卷積核,效果也不一樣。
我為啥子要說這些,是因為,CNN實際上也就是一個不斷提取特征,進行特征選擇,然后進行分類的過程,卷積在CNN里,就是充當前排步兵,首先對原始圖像進行特征提取。所以我們首先要弄懂卷積在干什么,才能弄懂CNN。
下一期將講卷積在CNN是怎么運作的。
有什么疑問或者建議,請在下方留言哦,我會選擇性(我懂的)回答。