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

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

1. 卷積神經網絡的發展

2. 卷積神經網絡的重要性

3. 卷積神經網絡與圖像識別

4. 濾波器

一.卷積神經網絡的發展

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

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

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

1.局部連接

在第三章中,我們介紹前饋神經網絡的時候,相鄰的兩層之間,前一層的每一個神經元(或輸入層的每一個單元)與後一層的每一個神經元都有連接,這種情況稱為全連接。全連接網絡的一個缺點就是參數太多,假設我們輸入到神經網絡中的是一張三通道的彩色圖像,圖像大小為128*128,因此輸入層有128*128*3=49150個單元。使用全連接網絡的話,第一個隱藏層的每一個神經元到輸入層都有49150個連接,隨著網絡層數的增加和每層中神經元數量的增加,網絡中的參數也會急劇增加。大量的參數不僅會拉低神經網絡訓練的效率,也很容易導致過擬合。

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

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

2.權值共享

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

3.子採樣

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

三.卷積神經網絡與圖像識別

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

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

四.濾波器

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

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

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

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

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

圖一

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

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

圖二

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

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

圖三

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

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

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

圖四

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

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

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

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

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

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

對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!http://www.panchuang.net 我們的公眾號:磐創AI。


分享到:


相關文章: