1. 程式人生 > >卷積神經網路理解(一):濾波器的意義

卷積神經網路理解(一):濾波器的意義

歡迎大家關注我們的網站和系列教程:http://www.tensorflownews.com/,學習更多的機器學習、深度學習的知識!

荔枝boy

  1. 卷積神經網路的發展
  2. 卷積神經網路的重要性
  3. 卷積神經網路與影象識別
  4. 濾波器
一.卷積神經網路的發展

卷積神經網路受到視覺細胞研究的啟發,1962年,Hubel和Wiesel發現初級視覺皮層中的神經元會響應視覺環境中特定的簡單特徵(比如有向的邊等)。同時,他們注意到了兩種不同型別的細胞,簡單細胞和複雜細胞,簡單細胞只對非常特定的空間位置,對它們非常偏好的方向有強烈的反應,複雜細胞有更大的空間不變性,複雜細胞通過幾個簡單細胞(每個簡單細胞存在不同方向的偏好)的輸入上進行池化而實現這種不變性。這兩個特徵即對特定特徵的選擇和通過前饋連線增大空間不變性構成了卷積神經網路的人工視覺基礎。

計算機視覺領域中有一個比賽叫做ImageNet挑戰賽,相當於計算機視覺的年度諾貝爾。2012年,Alex Krizhevsky憑藉卷積神經網路獲得那一年的冠軍,他把圖片分類誤差從原來的26%降低到15%,這在計算機視覺領域引起了不小的轟動。並讓卷積神經網路在如今計算機視覺領域中佔據著很重要的一部分。

 

二.卷積神經網路的重要性

1.區域性連線

在第三章中,我們介紹前饋神經網路的時候,相鄰的兩層之間,前一層的每一個神經元(或輸入層的每一個單元)與後一層的每一個神經元都有連線,這種情況稱為全連線。全連線網路的一個缺點就是引數太多,假設我們輸入到神經網路中的是一張三通道的彩色影象,影象大小為128128,因此輸入層有128

128*3=49150個單元。使用全連線網路的話,第一個隱藏層的每一個神經元到輸入層都有49150個連線,隨著網路層數的增加和每層中神經元數量的增加,網路中的引數也會急劇增加。大量的引數不僅會拉低神經網路訓練的效率,也很容易導致過擬合。

在卷積神經網路中,層與層之間不再是全連線,而是區域性連線,具體的實現方法,就是我們在下一節中會介紹的卷積操作。

卷積神經網路屬於區域性連線網路,是基於深刻研究自然影象而提出來的。自然影象存在區域性區域穩定的屬性,其某一區域性區域的統計特徵相對於影象其他相鄰區域性區域具有相似性。因此,神經網路從自然影象中學習到的某一區域性區域特徵同樣適合於影象的其他相鄰區域性區域。

2.權值共享

卷積神經網路中的卷積層中會有很多的濾波器,這些濾波器會去識別影象的特定的某些特徵,每個濾波器會去滑動卷積上一層的特徵圖,在卷積的過程中濾波器的引數是不變且共享的。這樣在訓練過程中,與之前的全連線神經網路訓練大尺度輸入樣本時需要大量引數相比,卷積神經網路只需要很少的引數就可以完成訓練。(CNN影象的平移不變性)

3.子取樣

子取樣層(subsampling layer)也叫作匯聚層(pooling layer), 對上一卷積層層進行聚合,使得上一層卷積層的輸入特徵圖尺寸在經過該子取樣層的聚合也就是我們說的池化後減小了。子取樣層所做的事其實就是對上一層卷積層進行掃描,每次掃描特定區域,然後一般計算該區域特徵的最大值或者平均值,放入子取樣層的視窗中。

 

 

三.卷積神經網路與影象識別

計算機視覺領域中很多的問題是處理影象識別即影象分類。影象分類是對於輸入的影象進行操作後,最終輸出一組描述影象分類的概率。當計算機看到一張圖片時,在它的理解中,這張圖片是一個大小MN3的畫素矩陣(3指的是RGB的值),其中畫素矩陣中每個畫素的值在0到255之間。對於計算機來說,在給定計算機這個畫素矩陣作為輸入後,計算機要輸出能夠描述出該影象屬於各種類別的概率(eg:[狗:80%,貓10%,兔子10%])

當人分析了一幅影象時,首先會看這個物體有哪些區域性的特徵,比如如果圖片是一條狗,我們在看這幅影象時,在看到諸如鼻子或四條腿等明顯特徵後,我們會把它歸類為狗。卷積神經網路和人的視覺細胞工作原理類似,卷積神經網路也是一開始通過尋找這副圖片的邊緣或者曲線等低階特徵來分類圖片,然後再通過一系列卷積層將這些低階的特徵匯聚成更加高階的特徵,同時這些高階的特徵由多個低階特徵卷積構成,則高階特徵能覆蓋原始圖片更多的資訊。這樣卷積神經網路在處理一些經過平移變換的影象識別時,具有檢測平移不變性的能力。更加增強了卷積神經網路在影象識別的能力。

 

四.濾波器

在講解CNN之前,我們先討論下濾波器。

濾波器是一個矩陣,大小為m*n它是用來檢測影象中特定的特徵的,不同的濾波器有不同的引數。

我們知道影象在計算機中的數字訊號其實是MN3大小的矩陣,假設我們只考慮影象的灰度,不考慮RGB,那麼影象的大小為MN。某一個濾波器對影象進行濾波時,就是將濾波器分別與影象的同大小區域進行點乘,每次濾波器依次從左往右從上往下滑過該影象所有的區域,讓該濾波器對影象的某一個與濾波器尺寸同大小的影象區域(mn)進行點乘,點乘後各個乘積求和得到新的過濾後的影象,這種影象某一部分與濾波器點乘後求和操作就是以後的卷積神經網路中的卷積操作,這樣就得到了經過濾波器過濾後的影象。

不同的濾波器可以檢測影象的不同特徵,舉個例子,假設現在我有一個濾波器用來檢測特定弧度,大小為7*7。

現在我有一個老鼠的影象(只考慮灰度,所以只有一層),現在我們用該濾波器對這隻老鼠的影象進行過濾,依次將過濾器滑過原始影象的某一個區域,並與該區域原始畫素值進行點乘。現在假設我們將濾波器滑到了老鼠影象的左上角,如圖二所示:

過濾器會與該原始影象對應區域進行點乘後求和,如圖三所示:

我們發現,該區域本身存在一個弧度,且彎曲程度和過濾器的彎曲程度很相似,所以影象的該區域畫素與過濾器矩陣點乘求和後得到的數值很高。

我們繼續將過濾器移動到另外一個地方,靠近老鼠耳朵的地方,這時候我們發現該老鼠耳朵區域與該濾波器用來檢測的弧度很不相似,我們看看將用濾波器過濾該區域會發生什麼,如圖四所示:

我們發現,檢測弧度的濾波器再與老鼠耳朵這個區域的畫素進行點乘後求和所得到的值為0。也就是說該區域與濾波器沒有對應關係。

我們對整個原圖進行一次卷積,得到的結果中,在那個特定曲線和周邊區域,值就很高,在其他區域,值相對低。這就是一張啟用圖。對應的高值區域就是我們所要檢測曲線的位置

所以我們發現濾波器過濾影象時,會與影象每個等大的區域進行點乘,如果影象的某一區域與過濾器檢測的特徵很相似,那麼當過濾器經過該區域時,就會啟用該過濾器,得到一個很高的值,反之,如果影象的某一區域與過濾器檢測的特徵很不相似時,就不會啟用該過濾器或者得到的數值很低。

由此我們發現,影象的過濾器在對整個影象滑動過濾時,每經過影象一個區域得到的值越高,則該區域與濾波器檢測的特定特徵相關度越高。這裡與視覺細胞的工作原理很類似,簡單的細胞對特定方向具有強烈感應,對不是它們偏好的方向沒有什麼反應。這裡的濾波器其實就充當了視覺細胞中簡單細胞的角色。

一些檢測特定特徵的濾波器很容易想到,比如水平濾波器,垂直濾波器等。

但是我們能直觀想到濾波器畢竟數量有限,而CNN可以自動學習濾波器,調整濾波器裡的引數,用CNN自學習濾波器,讓計算機自己去理解這影象所需的濾波器來檢測特徵,這對影象的特徵分析是非常有用高效的。

本篇文章出自http://www.tensorflownews.com,對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!